Temporarily disable Nasal callbacks in lazily loaded scenery models
to avoid segfaults due to multi-threading issues. Will need to be replaced by proper fix, if this proves Nasal related segfaults to be fixed.
This commit is contained in:
parent
246feef85f
commit
59d400d58b
1 changed files with 13 additions and 2 deletions
|
@ -247,9 +247,20 @@ FGTileMgr::loadTileModel(const string& modelPath, bool cacheModel)
|
||||||
SGModelLib::loadModel(fullPath.str(), globals->get_props(),
|
SGModelLib::loadModel(fullPath.str(), globals->get_props(),
|
||||||
new FGNasalModelData);
|
new FGNasalModelData);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
/* TODO FGNasalModelData's callback "modelLoaded" isn't thread-safe.
|
||||||
|
* But deferred (or paged) OSG loading runs in a separate thread, which would
|
||||||
|
* trigger the FGNasalModelData::modelLoaded callback. We're easily doomed
|
||||||
|
* when this happens and the model actually contains a Nasal "load" hook - which
|
||||||
|
* would run the Nasal parser and Nasal script execution in a separate thread...
|
||||||
|
* => Disabling the callback for now, to test if all Nasal related segfaults are
|
||||||
|
* gone. Proper resolution is TBD. We'll need to somehow decouple the OSG callback,
|
||||||
|
* so we can run the Nasal stuff in the main thread.
|
||||||
|
*/
|
||||||
result=
|
result=
|
||||||
SGModelLib::loadDeferredModel(fullPath.str(), globals->get_props(),
|
SGModelLib::loadDeferredModel(fullPath.str(), globals->get_props()/*,
|
||||||
new FGNasalModelData);
|
new FGNasalModelData*/);
|
||||||
|
}
|
||||||
} catch (const sg_io_exception& exc) {
|
} catch (const sg_io_exception& exc) {
|
||||||
string m(exc.getMessage());
|
string m(exc.getMessage());
|
||||||
m += " ";
|
m += " ";
|
||||||
|
|
Loading…
Add table
Reference in a new issue