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() {
nassertv(_global_ptr == nullptr);
init_memory_hook();
_global_ptr = new AsyncTaskManager("TaskManager");
_global_ptr->ref();
}

View File

@ -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());
}

View File

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

View File

@ -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();
}