summaryrefslogtreecommitdiff
path: root/src/location/maps/qgeotiledmappingmanagerengine.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Add parameter to control prefetching in tile-based geoservice pluginsPaolo Angelelli2017-03-271-0/+1
| | | | | Change-Id: I18fc1788f7af0efe76f97257ffe739eb1a96e6cc Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Remove moc_* inclusions from source filesPaolo Angelelli2017-02-141-2/+0
| | | | | | Change-Id: I7385348d7b6ec22fa92ed1be65f89e262c38b5c0 Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Refactor: move CacheAreas to QAbstractGeoTileCachePaolo Angelelli2017-01-161-3/+3
| | | | | | | | | | | | | | | This change moves QGeoTiledMappingManagerEngine::CacheAreas to the more appropriate container that is QAbstractGeoTileCache, which already uses this enum in its interface. Together with making the virtual init() method of QAbstractGeoTileCache public, instead of protected, this patch effectively disentangle QAbstractGeoTileCache/QGeoFileTileCache from the QGeoTiledMappingManagerEngine, and makes it usable potentially also by other (tile) renderers. Change-Id: Ic635b81660f81d86884cc6b00e3a2ab9420daa9f Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Version tile cache with qt version and evict obsolete data on init()Paolo Angelelli2016-08-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This patch changes the base cache directory to a new scheme containing the qt version. At the time of commit, this would be "QtLocation/5.8/tiles/" This versioning does not have to change at every release, but when there are changes in the caching scheme. The reason for this is that, otherwise, it becomes difficult to clean up old cache data. QGeoFileTileCache::init already clean up old tile cache from 5.4 or older, where the cache data wasn't organized under a directory for each plugin. In 5.8 different naming scheme are introduced for mapbox tiles (with @1x,@2x) , here maps (with ppi), and soon for OSM too (with an identifier for the actual provider, not only the mapId). With this patch it will become easier and cleaner to upgrade the cache data without leaving residues. Change-Id: I89aeac0aaf1408d119cde5792fc69a64d5d89c3a Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Merge remote-tracking branch 'gerrit/5.7' into devAlex Blasche2016-07-291-2/+10
|\ | | | | | | Change-Id: I6a1a72547077c628429ee9a0781070ad3ae787f1
| * Fix potential memory leak in QGeoTiledMappingManagerEnginePaolo Angelelli2016-07-181-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently setTileFetcher and setTileCache behave in two different ways, while the former relies on having the parent set properly for the destruction, the latter is deleted on destruction With this patch handles both pointers are handled in the same way: they are parented in the setter, and the destruction is left to the qobject destructor. Change-Id: Iaf11a12cd95088fd2268817b39fb9d58311b1812 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* | Fix for caching after mapbox improvement/highdpi-supportPaolo Angelelli2016-07-071-0/+2
|/ | | | | | | | | | Currently the qgeofiletilecache/qgeofiletilecachemapbox contains a bug in that it makes use of virtual functions in the constructor. This patch fixes it by moving those calls into a virtual init() method that is called by QGeoTiledMappingManagerEngine::setTileCache() Change-Id: Icf7932dfbae7d99eef22c67e034246a834212a03 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Remove createTileCacheWithDir from QGeoTiledMappingManagerEngineMichal Klocek2015-10-271-8/+1
| | | | | | | | | Recent change adds setter for TileCache, use new setter in here plugin, remove obsolate create function. Change-Id: I8f5ee726f6c14ea6fa2adf82a4713d5b37c6a78b Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Added method to set the map cacheHarald Meyer2015-10-261-0/+6
| | | | | | | | | | | | This update adds a new method "setTileCache" to the QGeoTiledMappingManagerEngine class. The method allows custom map implementations to set their own cache. The update also fixes a compiler warning (ctor variable order) and adds Q_DECL_OVERRIDE checks. Change-Id: I22cfdb218ae5c9af145d688f11aab655f4ed3e4b Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Split QGeoTileCache for easier customization of the tile cache.Harald Meyer2015-10-221-6/+6
| | | | | | | | | | | | | | | The QGeoTileCache is split into two classes: The abstract class QAbstractGeoTileCache offers interfaces for inserting and getting tiles, as well as getting cache status information such as used texture memory. The new class QGeoFileTileCache implements QAbstractGeoTileCache and offers a file based caching implementation (the implementation is the same as before splitting the class). Change-Id: I2eab7491d489ac5b251c1296b67688901f5cc7d7 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Isolate the default cache directoryLaszlo Agocs2015-09-151-4/+2
| | | | | | | | | | | | | Instead of having it in several random places, have a central function that contains all the cache directory selection logic. As per QtCore docs GenericCacheLocation can be empty so introduce a fallback to CacheLocation (the app-specific, non-shared location) in case some future platform does not support the former. Task-number: QTBUG-41187 Change-Id: Icfe5e8926e917483ac11844f625244318ff815c7 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Fix tile version handlingMichal Klocek2015-06-041-2/+19
| | | | | | | | | | Here maps plugin checks server for tile version. When tile version is updated, update not only the current camera tiles, but also scene tiles. Task-number: QTBUG-44809 Change-Id: Iedb3add5308a2e61cc18e169e33ea4510e1a4fee Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Remove de/register from qgeotiledmappingmanagerengineMichal Klocek2015-06-031-17/+1
| | | | | | | Removes not required engine registration. Change-Id: I5d30043a33785e0dcd798517754e846a7f420220 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Fix missing guarded pointers for mapping engineMichal Klocek2015-05-211-4/+14
| | | | | | | | | | | | | | | | Since mapping engine is going to be destroyed on geoseriveprovider change/plugin unload use QPointer to track engine existence before making calls. This commit refactors a bit QGeoTileRequestManager to handle all the calls to the enigne. Check for null pointer before calling the engine. Move registerMap method to base class. Update QGeoTiledMapNokia class accordingly. Change-Id: I886e85e660b2c515e4a617e98e9cc0c3c13781b6 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Cleanup QGeoTileMap code.Michal Klocek2015-05-051-2/+1
| | | | | | | | | | | | This commit: * renames class members to use m_ naming convention * removes not required includes * removes not required forward declarations * adds Q_DECL_OVERRIDE * removes prefetchTiles() call Change-Id: I3f41cce7fcb0050adb8a5ad90304419b81476955 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Set shorter name for class names with 'MapData'Michal Klocek2015-05-041-13/+13
| | | | | | | | Rename all references and files with 'MapData' to use shorter name 'Map'. Change-Id: I8ab790146ee28e540e6866ba0218eea61bae6e64 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Remove LGPLv2.1 and add GPLv2+ from/to QtLocationAlex Blasche2015-02-191-14/+17
| | | | | | Change-Id: I3007aa04d3dbc0e00cb0a43987d64d01ddf91edd Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* Update contact URL in all license headers to qt.ioAlex Blasche2015-02-181-1/+1
| | | | | Change-Id: Ia1e333be7fec8898de609d9b9303b1ad7687632e Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* Use separate cache dir per geoservice/mapping pluginAlex Blasche2015-02-171-2/+10
| | | | | | | | | | | | | | | This has the advantage that concurrent use of multiple plugins doesn't force one plugin to load the tiles and queues of another plugin into its tile cache. QGeoTileCache could potentially separate the non-relevant tiles as well but that's even more effort and requires the QGeoTileCache instance to know to which QGeoMappingManagerEngine it belongs. Task-number: QTBUG-40780 Change-Id: I342168c30a424b9f66d9c4e07694c1e3a9f2a412 Reviewed-by: Michal Klocek <michal.klocek@theqtcompany.com> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Update license headers and add new license filesAntti Kokko2014-08-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: Iedee2507ab1bd46788409a98505d7be510253110 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Test that the mapping manager engine pointer is still valid.Aaron McCarthy2014-02-101-29/+3
| | | | | | | | | | | | | | | | | | | QPointer holds a guarded pointer to a QObject. It must always be tested prior to use. Changed the parameter type to remove the need for the static_cast when setting the QPointer member. The root cause was that the tile fetcher object was not being destroyed when the mapping manager engine was. Which was because the two objects were in different threads. Some of the service specific tile fetchers were directly calling into the engine objects across thread. Gah. Since Qt 5 QNAM uses an application global thread for processing requests, there is no need to use threads in the tile fetcher. Change-Id: Id9df35ddfa78df2cbf334006fe5fc9726a75f92d Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Fix killing timer in different thread.Aaron McCarthy2014-01-171-3/+0
| | | | | | | | It was possible for another thread to attempt to stop the timer used by the tile fetcher. Change-Id: Ic44cf416bc7e6c987c4b5c9914a1c7d911dbbea5 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Update copyright year to 2013Sergio Ahumada2013-06-131-1/+1
| | | | | Change-Id: I5b0cb7d56997ad7b91c073b3e02b31d0368fdcfa Reviewed-by: Alex <alexander.blasche@digia.com>
* Fix warnings in qtlocation found by GCC 4.8Thiago Macieira2013-04-071-2/+0
| | | | | | | | | qgeocameratiles.cpp:584:31: warning: typedef ‘iter’ locally defined but not used [-Wunused-local-typedefs] qgeotiledmappingmanagerengine.cpp:237:51: warning: typedef ‘cache_iter’ locally defined but not used [-Wunused-local-typedefs] locationvaluetypeprovider.h:73:10: warning: unused parameter ‘dataSize’ [-Wunused-parameter] Change-Id: I7200cc6094ce55c807b3e6dbbd37b6b94f5e6a57 Reviewed-by: Aaron McCarthy <mccarthy.aaron@gmail.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-241-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: Ic1390da64a219642fa1e1482a7677a4c2db15cbc Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove Maps from public C++ API.Aaron McCarthy2012-06-071-4/+4
| | | | | | | | | | | | The preliminary C++ Maps API was exposed to provide an interface between the QML plugin and the geo services plugins. Mark it as private API for now as it is likely to change when the full C++ API is developed. Mapping functionality is currently only available through QML. Change-Id: Id16e0f1a2165c70192047dffa40e69ab1f29ba69 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Stop timer before stopping thread.Aaron McCarthy2012-05-311-3/+4
| | | | | | | | Fix crashes during debug session. Change-Id: Ia351a6423efddbf45ce3a78d0b800c405e33a986 Reviewed-by: Thomas Lowe <thomas.lowe@nokia.com> Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* QtLocation: Fix dependencies, remove network.Friedemann Kleint2012-05-291-1/+0
| | | | | | | | - The library does not seem to depend on network. - Remove unneeded dependencies on QtWidgets. Change-Id: Icdbe8a00c746a1ec0d7512f74e0f2566148fdb6e Reviewed-by: Jean Gressmann <jean.gressmann@nokia.com>
* Correct destruction of mappingManagerEngineThomas Lowe2012-05-291-2/+5
| | | | | | | | | | | Use of weakPointer to prevent accessing deleted memory. Plus thread exiting to cause the fetcher and thread to destroy themselves. Additional use of weak pointers to deal with the complexity of the mapping manager destructing before the declarative objects. Task-number: QTBUG-25797 Change-Id: I6a27568580c1a00f7588565ff7e35d63eb5dd785 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
* Simple prefetch schemeThomas Lowe2012-05-161-3/+1
| | | | | | | | | | | | | | | | | | | | | Prefetches larger set of tiles when camera is stopped QTBUG-25136 Prefetch implementation including zoom-level prefetching Two prefetching options- pan buffer, or pan buffer for two nearest zoom levels Code simplified by removing all three visibleTiles lists, so they can't go out of sync Textures not promoted up the cache if they aren't visible when retrieved from server Also: Prefetch on map initialize + optimisation This ensures that the prefetch is called at the end of initialisation Useful if the location is not already in disk cache. And makes no difference if it is already in disk cache. QTBUG-25786 Change-Id: Ife7c1d103f83695659f4534880268fa5afd8f7c7 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Removed spurious pointer check before deletionCristian Adam2012-05-161-5/+2
| | | | | | | | | In C++ it is perfectly valid to delete a null pointer. http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.8 Change-Id: I60dc123b01e1ef015751143274579024e4c0becf Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Coding style fixes: whitespace around pointers/referencesAlex Wilson2012-05-151-11/+11
| | | | | | Change-Id: Ie527591e2d9a1578137136fb6664e86c43eed1bf Reviewed-by: Thomas Lowe <thomas.lowe@nokia.com> Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Coding style fixes: whitespace crusadesAlex Wilson2012-05-151-1/+1
| | | | | | | | | | * Single spaces after keywords and before a bracket/brace * Binary operator spacing * Curlies at open of class/function body * Spacing around some type specifiers/declarations Change-Id: Ie516283e7a39c7ce83071ea8125774c76db611f5 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
* Files renamed and cache only accessed through engineThomas Lowe2012-05-091-23/+15
| | | | | | | | | | | | | | | | | This isn't completely what was requested on the ticket, but it makes the cache more separate, so easier to pull in/out. Mainly this is a slight reworking of the caching to make it a bit simpler for future prefetching. In particular: mapGeometry renamed to mapScene mapImages renames to tileRequestManager and mapImages::setVisible is now tileRequestManager::requestTiles The data flow has been simplified so the requestManager speaks directly to the tiledMappingManagerEngine and this engine takes care of inspecting the single cache. Task-number: QTBUG-25560 Change-Id: I31b2e26c45f7a7ac56fe138cf1a8906a228a93d3 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Retry failed tile loads 5 times (with exp backoff) before giving upAlex Wilson2012-04-241-0/+21
| | | | | | | | | | | This allows us to fetch tiles over unreliable network links a bit better -- burst errors of only a few seconds will no longer drop tiles. Change-Id: I00c33424b58e032b1fb74c89052ea7f5cbd97d30 Reviewed-by: Thomas Lowe <thomas.lowe@nokia.com> Reviewed-by: Ian Chen <ian.1.chen@nokia.com> Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Tile cache size control using plugin paramsCristian Adam2012-04-041-2/+9
| | | | | | | | Also separates handling of the minimum texture cache size (based on viewport dimensions) from the maximum allowed value. Change-Id: I3b4ff5f9e1d017d7137ff8d01d4977ae59de7181 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Fixes various Coverity warnings.David Laing2012-03-161-36/+37
| | | | | Change-Id: I58a7191dae9cd441025cad658d82422561f216f6 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
* Makes the tiled mapping engine pay attention to file formats again.David Laing2012-03-151-4/+4
| | | | | | | | | This was fixed previously but partly removed by the non-tiled maps API refactoring. Change-Id: I038adf2d8b561c5d71700a3cd839de6956246239 Reviewed-by: Alex Wilson <alex.wilson@nokia.com> Reviewed-by: Cristian Adam <cristian.adam@nokia.com>
* New 3Q cache for map tiles, cleanup texture/tile resource managementAlex Wilson2012-03-141-0/+18
| | | | | | | | | | | | Replaces the old use of QCache in QGeoTileCache with a new QCache3Q, which is more optimal for many tile workloads. Resource management for textures and tile data is now enforced and managed correctly across threads. Textures are passed around as QSharedPointers to guarantee that cache eviction policy will not interfere with the correctness of rendering. Change-Id: I93eb49ea3ad009d85f394f92c59a4b22962b88a7 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Refactoring of QtLocation APIBasel Hashisho2012-03-091-0/+304
Refactoring QGeoMap, QGeoMappingManager, QGeoMappingManagerEngine Introducing QGeoMapData, QGeoTiledMap, QGeoTiledMappingManagerEngine, QGeoTileFetcher QGeoMap: Container for QGeoMapData QGeoMapData: No tiles data/functionality QGeoTiledMapData: Implements tiles data/functionality. QGeoMappingManager: Looses tiles-related data/functionality. QGeoMappingManagerEngine => QGeoMappingManagerEngine (no tiles data/functionality) QGeoTiledMappingManagerEngine (implements tiles-related data/functionality). QGeoTileFetcher: Implements tile fetching functionality from tiles provider. This commit compiles and runs through mapviewer example. Tests also were adjusted to fit refactored architecture. Change-Id: Id2b62d62d5cd4aaca8295c67e44c009cde636462 Reviewed-by: Alex <alex.blasche@nokia.com>