Version: unspecified (using Devel) OS: MS Windows Calling MarbleWidget::setMapThemeId("earth/openstreetmap/openstreetmap.dgml") in the code when that file is present but earth/openstreetmap/0/0/0.png is not crashes the marble widget. I noticed this on MS Windows and have not tried to reproduce on Mac or Linux. Reproducible: Always
Created attachment 51151 [details] tile-of-death.diff Also happens under Linux. Attached is the first part of a fix: Falling back to a blue tile of death if the level zero tile is missing. It uses a hardcoded tile size of 256x256 pixel. A proper patch needs to replace this with the actual tile size of the theme, however. To get this done, we should add a tile size tag to texture layers defined in dgml files.
Comment on attachment 51151 [details] tile-of-death.diff Superseded by http://reviewboard.kde.org/r/6334/
SVN commit 1217541 by nienhueser: Allow using absolute source directories in texture layers in .dgml files. Extend .dgml by a tileSize tag (width and height attribute), usable inside textureLayer tags. Such .dgml files are backwards compatible. Handle 'base tile missing' case more gracefully and return an empty image instead of triggering an assertion. Move the default tile size (675) to global.h and replace hardcoded default tile sizes with it. CCBUG: 249633 CCBUG: 263010 REVIEW: 6334 M +1 -0 data/maps/earth/bluemarble/bluemarble.dgml M +2 -0 data/maps/earth/openstreetmap/openstreetmap.dgml M +2 -1 src/lib/FileStoragePolicy.cpp M +2 -2 src/lib/ImageLoadThread.cpp M +1 -1 src/lib/MapWizard.cpp M +32 -36 src/lib/TileCreator.cpp M +18 -4 src/lib/TileLoader.cpp M +1 -0 src/lib/geodata/handlers/dgml/DgmlAttributeDictionary.cpp M +1 -0 src/lib/geodata/handlers/dgml/DgmlAttributeDictionary.h M +1 -0 src/lib/geodata/handlers/dgml/DgmlElementDictionary.cpp M +1 -0 src/lib/geodata/handlers/dgml/DgmlElementDictionary.h A src/lib/geodata/handlers/dgml/DgmlTileSizeTagHandler.cpp [License: LGPL] A src/lib/geodata/handlers/dgml/DgmlTileSizeTagHandler.h [License: LGPL] M +27 -5 src/lib/geodata/scene/GeoSceneTexture.cpp M +1 -0 src/lib/geodata/scene/GeoSceneTexture.h M +3 -0 src/lib/global.h WebSVN link: http://websvn.kde.org/?view=rev&revision=1217541
Please reopen if it happens again for some reason.
SVN commit 1226352 by nienhueser: Allow using absolute source directories in texture layers in .dgml files. Extend .dgml by a tileSize tag (width and height attribute), usable inside textureLayer tags. Such .dgml files are backwards compatible. Handle 'base tile missing' case more gracefully and return an empty image instead of triggering an assertion. Move the default tile size (675) to global.h and replace hardcoded default tile sizes with it. CCBUG: 249633 CCBUG: 263010 REVIEW: 6334 Backport of commit 1217541. M +1 -0 data/maps/earth/bluemarble/bluemarble.dgml M +1 -0 data/maps/earth/openstreetmap/openstreetmap.dgml M +2 -1 src/lib/FileStoragePolicy.cpp M +2 -2 src/lib/ImageLoadThread.cpp M +32 -36 src/lib/TileCreator.cpp M +18 -4 src/lib/TileLoader.cpp M +1 -0 src/lib/geodata/handlers/dgml/DgmlAttributeDictionary.cpp M +1 -0 src/lib/geodata/handlers/dgml/DgmlAttributeDictionary.h M +1 -0 src/lib/geodata/handlers/dgml/DgmlElementDictionary.cpp M +1 -0 src/lib/geodata/handlers/dgml/DgmlElementDictionary.h A src/lib/geodata/handlers/dgml/DgmlTileSizeTagHandler.cpp [License: LGPL] A src/lib/geodata/handlers/dgml/DgmlTileSizeTagHandler.h [License: LGPL] M +27 -5 src/lib/geodata/scene/GeoSceneTexture.cpp M +1 -0 src/lib/geodata/scene/GeoSceneTexture.h M +3 -0 src/lib/global.h WebSVN link: http://websvn.kde.org/?view=rev&revision=1226352