Browse Source

Merge default into minor

--HG--
branch : minor
Alex Szpakowski 8 years ago
parent
commit
b5f2bce0a6
1 changed files with 10 additions and 7 deletions
  1. 10 7
      src/modules/physics/box2d/World.cpp

+ 10 - 7
src/modules/physics/box2d/World.cpp

@@ -568,6 +568,16 @@ void World::destroy()
 		return;
 	}
 
+	// Remove userdata reference to avoid it sticking around after GC
+	if (begin.ref)     begin.ref->unref();
+	if (end.ref)       end.ref->unref();
+	if (presolve.ref)  presolve.ref->unref();
+	if (postsolve.ref) postsolve.ref->unref();
+	if (filter.ref)    filter.ref->unref();
+
+	//disable callbacks
+	begin.ref = end.ref = presolve.ref = postsolve.ref = filter.ref = nullptr;
+
 	// Cleaning up the world.
 	b2Body *b = world->GetBodyList();
 	while (b)
@@ -585,13 +595,6 @@ void World::destroy()
 	world->DestroyBody(groundBody);
 	Memoizer::remove(world);
 
-	// Remove userdata reference to avoid it sticking around after GC
-	if (begin.ref)     begin.ref->unref();
-	if (end.ref)       end.ref->unref();
-	if (presolve.ref)  presolve.ref->unref();
-	if (postsolve.ref) postsolve.ref->unref();
-	if (filter.ref)    filter.ref->unref();
-
 	delete world;
 	world = nullptr;
 }