Browse Source

Merge pull request #39798 from akien-mga/main-keep-messagequeue-to-deinit-scene

Main::cleanup: Move MessageQueue deletion further down where it's safer
Rémi Verschelde 5 years ago
parent
commit
7dac5bd2b0
1 changed files with 5 additions and 1 deletions
  1. 5 1
      main/main.cpp

+ 5 - 1
main/main.cpp

@@ -2321,8 +2321,8 @@ void Main::cleanup() {
 	ResourceLoader::remove_custom_loaders();
 	ResourceSaver::remove_custom_savers();
 
+	// Flush before uninitializing the scene, but delete the MessageQueue as late as possible.
 	message_queue->flush();
-	memdelete(message_queue);
 
 	OS::get_singleton()->delete_main_loop();
 
@@ -2408,6 +2408,10 @@ void Main::cleanup() {
 		OS::get_singleton()->set_restart_on_exit(false, List<String>()); //clear list (uses memory)
 	}
 
+	// Now should be safe to delete MessageQueue (famous last words).
+	message_queue->flush();
+	memdelete(message_queue);
+
 	unregister_core_driver_types();
 	unregister_core_types();