Browse Source

Fix static init ordering crashes in static build of pview

Fixes #381
rdb 7 years ago
parent
commit
9dec2aafb5

+ 1 - 0
panda/src/event/asyncTaskManager.cxx

@@ -643,6 +643,7 @@ void AsyncTaskManager::
 make_global_ptr() {
   nassertv(_global_ptr == nullptr);
 
+  init_memory_hook();
   _global_ptr = new AsyncTaskManager("TaskManager");
   _global_ptr->ref();
 }

+ 1 - 0
panda/src/event/eventHandler.cxx

@@ -351,6 +351,7 @@ remove_all_hooks() {
  */
 void EventHandler::
 make_global_event_handler() {
+  init_memory_hook();
   _global_event_handler = new EventHandler(EventQueue::get_global_event_queue());
 }
 

+ 1 - 0
panda/src/event/eventQueue.cxx

@@ -106,5 +106,6 @@ dequeue_event() {
  */
 void EventQueue::
 make_global_event_queue() {
+  init_memory_hook();
   _global_event_queue = new EventQueue;
 }

+ 2 - 0
panda/src/pipeline/thread.cxx

@@ -211,6 +211,7 @@ init_main_thread() {
   static int count = 0;
   ++count;
   if (count == 1 && _main_thread == nullptr) {
+    init_memory_hook();
     _main_thread = new MainThread;
     _main_thread->ref();
   }
@@ -222,6 +223,7 @@ init_main_thread() {
 void Thread::
 init_external_thread() {
   if (_external_thread == nullptr) {
+    init_memory_hook();
     _external_thread = new ExternalThread;
     _external_thread->ref();
   }