diff --git a/runloop_data.c b/runloop_data.c index 7df020fa17..ddcce64272 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -158,8 +158,12 @@ static void data_thread_loop(void *data) data_runloop_iterate(true); - while (runloop->thread_sleeping) - scond_wait(runloop->cond, runloop->lock); + if (!rarch_main_data_active()) + { + runloop->thread_sleeping = true; + while(runloop->thread_sleeping) + scond_wait(runloop->cond, runloop->lock); + } slock_unlock(runloop->lock); @@ -218,8 +222,7 @@ void rarch_main_data_iterate(void) { if (!g_data_runloop.thread_inited) rarch_main_data_thread_init(); - - if (rarch_main_data_active()) + else if (g_data_runloop.thread_sleeping) { slock_lock(g_data_runloop.cond_lock); g_data_runloop.thread_sleeping = false;