From d5e23012f1a764e3957418e513d93bbef699877e Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Tue, 5 May 2015 18:16:09 +0200 Subject: [PATCH] (Data runloop) Split up overlay task code to tasks/task_overlay.c --- Makefile.common | 1 + griffin/griffin.c | 1 + runloop_data.c | 75 ---------------------------------- tasks/task_overlay.c | 97 ++++++++++++++++++++++++++++++++++++++++++++ tasks/tasks.h | 7 ++++ 5 files changed, 106 insertions(+), 75 deletions(-) create mode 100644 tasks/task_overlay.c diff --git a/Makefile.common b/Makefile.common index 3c7042fb53..e12f861fc9 100644 --- a/Makefile.common +++ b/Makefile.common @@ -138,6 +138,7 @@ OBJ += frontend/frontend.o \ input/input_remapping.o \ input/input_sensor.o \ input/keyboard_line.o \ + tasks/task_overlay.o \ input/input_overlay.o \ patch.o \ libretro-common/queues/fifo_buffer.o \ diff --git a/griffin/griffin.c b/griffin/griffin.c index c0facf33e7..4a68920f73 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -287,6 +287,7 @@ INPUT #ifdef HAVE_OVERLAY #include "../input/input_overlay.c" +#include "../tasks/task_overlay.c" #endif #if defined(__CELLOS_LV2__) diff --git a/runloop_data.c b/runloop_data.c index fcef21a36a..d2c2de7bc2 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -39,81 +39,6 @@ static void *rarch_main_data_get_ptr(void) return g_data_runloop; } -#ifdef HAVE_OVERLAY -static void rarch_main_data_overlay_image_upload_iterate(bool is_thread, data_runloop_t *runloop) -{ - driver_t *driver = driver_get_ptr(); - - if (rarch_main_is_idle()) - return; - if (!driver->overlay) - return; - -#ifdef HAVE_THREADS - if (is_thread) - slock_lock(runloop->overlay_lock); -#endif - - switch (driver->overlay->state) - { - case OVERLAY_STATUS_DEFERRED_LOADING: - input_overlay_load_overlays_iterate(driver->overlay); - break; - default: - break; - } - -#ifdef HAVE_THREADS - if (is_thread) - slock_unlock(runloop->overlay_lock); -#endif -} -static void rarch_main_data_overlay_iterate(bool is_thread, data_runloop_t *runloop) -{ - driver_t *driver = NULL; - - if (rarch_main_is_idle()) - return; - -#ifdef HAVE_THREADS - if (is_thread) - slock_lock(runloop->overlay_lock); -#endif - - driver = driver_get_ptr(); - - if (!driver || !driver->overlay) - goto end; - - switch (driver->overlay->state) - { - case OVERLAY_STATUS_DEFERRED_LOAD: - input_overlay_load_overlays(driver->overlay); - break; - case OVERLAY_STATUS_NONE: - case OVERLAY_STATUS_ALIVE: - break; - case OVERLAY_STATUS_DEFERRED_LOADING_RESOLVE: - input_overlay_load_overlays_resolve_iterate(driver->overlay); - break; - case OVERLAY_STATUS_DEFERRED_DONE: - input_overlay_new_done(driver->overlay); - break; - case OVERLAY_STATUS_DEFERRED_ERROR: - input_overlay_free(driver->overlay); - break; - default: - break; - } - -end: -#ifdef HAVE_THREADS - if (is_thread) - slock_unlock(runloop->overlay_lock); -#endif -} -#endif - #ifdef HAVE_THREADS static void data_runloop_thread_deinit(data_runloop_t *runloop) { diff --git a/tasks/task_overlay.c b/tasks/task_overlay.c new file mode 100644 index 0000000000..ede90d2ac3 --- /dev/null +++ b/tasks/task_overlay.c @@ -0,0 +1,97 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2011-2015 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include + +#include "../driver.h" +#include "../runloop.h" +#include "../runloop_data.h" +#include "tasks.h" + +void rarch_main_data_overlay_image_upload_iterate(bool is_thread, void *data) +{ + data_runloop_t *runloop = (data_runloop_t*)data; + driver_t *driver = driver_get_ptr(); + + if (rarch_main_is_idle()) + return; + if (!driver->overlay || !runloop) + return; + +#ifdef HAVE_THREADS + if (is_thread) + slock_lock(runloop->overlay_lock); +#endif + + switch (driver->overlay->state) + { + case OVERLAY_STATUS_DEFERRED_LOADING: + input_overlay_load_overlays_iterate(driver->overlay); + break; + default: + break; + } + +#ifdef HAVE_THREADS + if (is_thread) + slock_unlock(runloop->overlay_lock); +#endif +} + +void rarch_main_data_overlay_iterate(bool is_thread, void *data) +{ + data_runloop_t *runloop = (data_runloop_t*)data; + driver_t *driver = NULL; + + if (rarch_main_is_idle()) + return; + +#ifdef HAVE_THREADS + if (is_thread) + slock_lock(runloop->overlay_lock); +#endif + + driver = driver_get_ptr(); + + if (!driver || !driver->overlay) + goto end; + + switch (driver->overlay->state) + { + case OVERLAY_STATUS_DEFERRED_LOAD: + input_overlay_load_overlays(driver->overlay); + break; + case OVERLAY_STATUS_NONE: + case OVERLAY_STATUS_ALIVE: + break; + case OVERLAY_STATUS_DEFERRED_LOADING_RESOLVE: + input_overlay_load_overlays_resolve_iterate(driver->overlay); + break; + case OVERLAY_STATUS_DEFERRED_DONE: + input_overlay_new_done(driver->overlay); + break; + case OVERLAY_STATUS_DEFERRED_ERROR: + input_overlay_free(driver->overlay); + break; + default: + break; + } + +end: +#ifdef HAVE_THREADS + if (is_thread) + slock_unlock(runloop->overlay_lock); +#endif +} diff --git a/tasks/tasks.h b/tasks/tasks.h index d90cb1914b..c2840f50dd 100644 --- a/tasks/tasks.h +++ b/tasks/tasks.h @@ -50,6 +50,13 @@ void rarch_main_data_db_iterate(bool is_thread, void *data); #endif #endif +#ifdef HAVE_OVERLAY +void rarch_main_data_overlay_image_upload_iterate(bool is_thread, + void *data); + +void rarch_main_data_overlay_iterate(bool is_thread, void *data); +#endif + void rarch_main_data_nbio_iterate(bool is_thread, void *runloop);