diff options
author | Justin Clark-Casey (justincc) | 2011-11-15 20:02:09 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-11-15 20:02:09 +0000 |
commit | e16d7fe1da3432d819f72e8c2af420601009854b (patch) | |
tree | 3be42d6810fec53e599f50cd7ea34e870a40af51 /OpenSim/Region/Framework/Scenes/EventManager.cs | |
parent | use a more efficient dictionary in OdeScene._collisionEventPrim rather than a... (diff) | |
download | opensim-SC_OLD-e16d7fe1da3432d819f72e8c2af420601009854b.zip opensim-SC_OLD-e16d7fe1da3432d819f72e8c2af420601009854b.tar.gz opensim-SC_OLD-e16d7fe1da3432d819f72e8c2af420601009854b.tar.bz2 opensim-SC_OLD-e16d7fe1da3432d819f72e8c2af420601009854b.tar.xz |
Instead of having scene add/remove collision events directly to the OdeScene collision event dictionary, marshall them via a change dictionary first.
This is to avoid a complicated tri-thread deadlock on region crossing for avatars with attachments, where
1) XEngine starting up scripts can lock XEngine.m_Scripts and then try to lock OdeScene._collisionEventPrim while starting up a script due to avatar border crossing
2) An existing collision event will lock OdeScene._collisionEventPrim and then try to lock SP.m_attachments while trying to send the collision event to attachments
3) The avatar still entering the region will lock SP.m_attachments and then try to lock m_Scripts to start more attachment scripts.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/EventManager.cs')
0 files changed, 0 insertions, 0 deletions