Fix static init ordering crashes in static build of pview

Fixes #381
This commit is contained in:
rdb 2018-09-02 10:59:46 +02:00
parent 3495537bf9
commit 9dec2aafb5
4 changed files with 5 additions and 0 deletions

View File

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

View File

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

View File

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

View File

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