Add check so Ode does not try to simulate after it has been Dispose()'ed. Fixes exception that happens when shutting down region (improvements from last patch)
							parent
							
								
									c1503205c0
								
							
						
					
					
						commit
						9e914f5c32
					
				| 
						 | 
				
			
			@ -489,6 +489,8 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
        /// </summary>
 | 
			
		||||
        internal Object OdeLock = new Object();
 | 
			
		||||
 | 
			
		||||
        private bool _worldInitialized = false;
 | 
			
		||||
 | 
			
		||||
        public IMesher mesher;
 | 
			
		||||
 | 
			
		||||
        private IConfigSource m_config;
 | 
			
		||||
| 
						 | 
				
			
			@ -875,6 +877,8 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
                    staticPrimspace[i, j] = IntPtr.Zero;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            _worldInitialized = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
//        internal void waitForSpaceUnlock(IntPtr space)
 | 
			
		||||
| 
						 | 
				
			
			@ -2896,6 +2900,8 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
        /// <returns>The number of frames simulated over that period.</returns>
 | 
			
		||||
        public override float Simulate(float timeStep)
 | 
			
		||||
        {
 | 
			
		||||
            if (!_worldInitialized) return 11f;
 | 
			
		||||
 | 
			
		||||
            int startFrameTick = CollectStats ? Util.EnvironmentTickCount() : 0;
 | 
			
		||||
            int tempTick = 0, tempTick2 = 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4017,6 +4023,8 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
 | 
			
		||||
        public override void Dispose()
 | 
			
		||||
        {
 | 
			
		||||
            _worldInitialized = false;
 | 
			
		||||
 | 
			
		||||
            m_rayCastManager.Dispose();
 | 
			
		||||
            m_rayCastManager = null;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4037,6 +4045,7 @@ namespace OpenSim.Region.Physics.OdePlugin
 | 
			
		|||
                d.WorldDestroy(world);
 | 
			
		||||
                //d.CloseODE();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override Dictionary<uint, float> GetTopColliders()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue