Create thread_sleeping variable

This commit is contained in:
twinaphex 2015-11-22 16:44:44 +01:00
parent 9e47d3097b
commit 85aae0d0b5

View File

@ -40,6 +40,7 @@ typedef struct data_runloop
bool inited; bool inited;
#ifdef HAVE_THREADS #ifdef HAVE_THREADS
bool thread_sleeping;
bool thread_inited; bool thread_inited;
unsigned thread_code; unsigned thread_code;
bool alive; bool alive;
@ -169,8 +170,12 @@ static void data_thread_loop(void *data)
data_runloop_iterate(true); data_runloop_iterate(true);
while (!rarch_main_data_active()) if (!rarch_main_data_active())
scond_wait(runloop->cond, runloop->lock); {
runloop->thread_sleeping = true;
while(runloop->thread_sleeping)
scond_wait(runloop->cond, runloop->lock);
}
slock_unlock(runloop->lock); slock_unlock(runloop->lock);
@ -368,6 +373,7 @@ void rarch_main_data_msg_queue_push(unsigned type,
else else
{ {
slock_lock(g_data_runloop.cond_lock); slock_lock(g_data_runloop.cond_lock);
g_data_runloop.thread_sleeping = false;
scond_signal(g_data_runloop.cond); scond_signal(g_data_runloop.cond);
slock_unlock(g_data_runloop.cond_lock); slock_unlock(g_data_runloop.cond_lock);
} }