mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
(Runloop data) Flesh out data thread callback
This commit is contained in:
parent
e8bfadae1d
commit
14089975b4
@ -751,10 +751,8 @@ static void rarch_main_data_overlay_iterate(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void data_runloop_thread_deinit(void)
|
static void data_runloop_thread_deinit(data_runloop_t *runloop)
|
||||||
{
|
{
|
||||||
data_runloop_t *runloop = &g_data_runloop;
|
|
||||||
|
|
||||||
if (!runloop->thread_inited)
|
if (!runloop->thread_inited)
|
||||||
{
|
{
|
||||||
slock_lock(runloop->cond_lock);
|
slock_lock(runloop->cond_lock);
|
||||||
@ -767,6 +765,8 @@ static void data_runloop_thread_deinit(void)
|
|||||||
slock_free(runloop->cond_lock);
|
slock_free(runloop->cond_lock);
|
||||||
scond_free(runloop->cond);
|
scond_free(runloop->cond);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
runloop->thread_inited = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rarch_main_data_deinit(void)
|
static void rarch_main_data_deinit(void)
|
||||||
@ -778,9 +778,7 @@ static void rarch_main_data_deinit(void)
|
|||||||
|
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
if (runloop->thread_inited)
|
if (runloop->thread_inited)
|
||||||
data_runloop_thread_deinit();
|
data_runloop_thread_deinit(runloop);
|
||||||
|
|
||||||
runloop->thread_inited = false;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
runloop->inited = false;
|
runloop->inited = false;
|
||||||
@ -803,12 +801,23 @@ static void data_thread_loop(void *data)
|
|||||||
{
|
{
|
||||||
data_runloop_t *runloop = (data_runloop_t*)data;
|
data_runloop_t *runloop = (data_runloop_t*)data;
|
||||||
|
|
||||||
|
RARCH_LOG("[Data Thread]: Initializing data thread.\n");
|
||||||
|
|
||||||
|
slock_lock(runloop->lock);
|
||||||
|
while (!runloop->thread_inited)
|
||||||
|
scond_wait(runloop->cond, runloop->lock);
|
||||||
|
slock_unlock(runloop->lock);
|
||||||
|
|
||||||
|
RARCH_LOG("[Data Thread]: Starting data thread.\n");
|
||||||
|
|
||||||
while (!runloop->thread_quit)
|
while (!runloop->thread_quit)
|
||||||
{
|
{
|
||||||
slock_lock(runloop->lock);
|
slock_lock(runloop->lock);
|
||||||
data_runloop_iterate(runloop);
|
data_runloop_iterate(runloop);
|
||||||
slock_unlock(runloop->lock);
|
slock_unlock(runloop->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data_runloop_thread_deinit(runloop);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -836,7 +845,7 @@ void rarch_main_data_iterate(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (g_data_runloop.thread_inited)
|
if (g_data_runloop.thread_inited)
|
||||||
data_runloop_thread_deinit();
|
data_runloop_thread_deinit(&g_data_runloop);
|
||||||
else
|
else
|
||||||
rarch_main_data_thread_init();
|
rarch_main_data_thread_init();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user