POST
|
I think we now found a solution on how to get around this. We created a small library which defines 'operator delete(void*, size_t)' and use a version script to annotate it with the Qt5 'namespace'. Then we only have to make sure it's loaded before libEsriCommonQt.so and all is fine. But the question persists - why does libQtCore5.so provided by TQtC (compiled with c++14 according to Coin logs) export this symbol whereas the one from openSuSE does not (openSuSE even compiles with c++17, according to build.opensuse.org logs)
... View more
01-28-2020
05:54 AM
|
0
|
1
|
10331
|
POST
|
What we're doing is more or less something like qid = GraphicsLayer::addGraphic(m_graphicPtr); ... modify m_graphicPtr (change geometry or smth. else) ... GraphicsLayer::updateGraphic(gid, m_graphicPtr); ... do more modifications ... GraphicsLayer::updateGraphic(gid, m_graphicPtr); ... This does lead to race conditions because the render thread is accessing attributes of m_grpahicPtr while we're modifying those attributes. Our solution is exactly what you're proposed - using addGraphic(), working on a new (cloned) graphic for hte changes and then call updateGraphic() with new graphic. Thx, Christian
... View more
02-16-2016
10:56 PM
|
0
|
0
|
481
|
POST
|
Ok, it looks like my assumption about ownership is wrong. I moved the code into a small testcase and calling updateGraphic() in a loop (via timer every 10ms) it's crashing now and then but everytime with a similar backtrace. If you're interested in this backtrace or the testcase, please let me know.
... View more
02-16-2016
04:40 AM
|
0
|
2
|
481
|
POST
|
Hi, we add a EsriRuntimeQt::Graphic to a EsriRuntimeQt::GraphicsLayer with GraphicsLayer::addGraphic(m_graphicPtr). Now we want to change the graphic (e.g. the line color). What's the recommended way to do this? The documentation does not say anything about this: simply modify m_graphicPtr (and hope the GraphicsLayer notices the change and updates it's graphical representation) this would mean that all Functions for EsriRuntimeQt::Graphic must be thread-safe or is there another synchronization mechanism using updateGraphic with the same pointer used by addGraphic will lead to a crash (afaics addGraphic() moves ownership and updateGraphic() will delete the old graphic - at least this is what I'm seeing, the documentation only express this indirect with) create a new Graphic and replace the current one with EsriRuntimeQt::GraphicsLayer::updateGraphic() other ways I'm not aware of Thx, Christian
... View more
02-15-2016
12:20 AM
|
0
|
3
|
2280
|
POST
|
Hi, thx for your suggestions. not setting TileInfo::format and TileInfo::spatialRefernce does work as long as Layer::setDefaultSpatialRefernce is called.It would still be nice to complete the TileInfo api TiledMapServiceLayer::initialize() is called as soon as I call Map::addLayer().call stack: Map::add_layer(EsriRuntimeQt::Layer*) Map_impl::add_layer(EsriRuntimeQt::Layer*) Map_impl::internal_add_layer_(EsriRuntimeQt::Layer*) When I do not overwrite initialize() and call initialize() after the xml was parsed, I get an error (Layer already initialized) - so it looks like initialize() must be intercepted until the xml is available When I overwrite initialize() to call call the base class impl it seems to work - I thought I checked this yesterday and it did not work... strange but this would be a correct async operation then Why do we need TiledMapServiceLayer::setUrl() then? Calling initialize() two times does not work so I think using another url will not work either... at least it should not work as soon as the layer is initialized. I've attached the current version, please have a look
... View more
01-27-2016
11:25 PM
|
0
|
0
|
348
|
POST
|
Hi, Since the Qt Runtime SDK does not provide access to a simple TMS server (e.g. provided by GeoServer), I had to write one by my own. The implementation works for me with GeoServer 2.8 and a UTM 32N projection (EPSG:32632). Maybe it can help others to work around the lack of a implementation from esri... There are some issues/workarounds: - despite the documentation, TiledMapServiceLayer::initialize() is not called asynchronous and also can't make it's initialization asynchronous - The TileInfo class lacks some getters/setters for the image format and spatial reference, it has to be set via json It also has no toJSon() function - Since the y-axis in tms is mirrored (coordinate system starts bottom left, not upper left), the column needs to be adjusted. For this I have to calculate the column count for each lod. But I have to multiply my calculated column count with the magic number '4' - if someone knows why please let me know I've attached the files - feel free to comment or make additions Greetings, Christian Ehrlicher
... View more
01-27-2016
04:14 AM
|
1
|
2
|
2171
|
Title | Kudos | Posted |
---|---|---|
1 | 01-27-2016 04:14 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|