Move code over to runloop.h

This commit is contained in:
twinaphex 2015-03-15 02:00:11 +01:00
parent 55f517fff0
commit 96ae2e9882
6 changed files with 104 additions and 87 deletions

View File

@ -33,12 +33,6 @@
#include <retro_miscellaneous.h>
#include "gfx/video_viewport.h"
#include <file/nbio.h>
#ifndef IS_SALAMANDER
#include <formats/image.h>
#include <formats/rpng.h>
#endif
#include "playlist.h"
#ifdef HAVE_CONFIG_H
@ -404,55 +398,7 @@ typedef struct rarch_resolution
#define AUDIO_BUFFER_FREE_SAMPLES_COUNT (8 * 1024)
#define MEASURE_FRAME_TIME_SAMPLES_COUNT (2 * 1024)
typedef int (*transfer_cb_t )(void *data, size_t len);
typedef struct nbio_image_handle
{
#ifndef IS_SALAMANDER
struct texture_image ti;
#endif
bool is_blocking;
bool is_blocking_on_processing;
bool is_finished;
bool is_finished_with_processing;
transfer_cb_t cb;
struct rpng_t *handle;
unsigned processing_pos_increment;
unsigned pos_increment;
uint64_t frame_count;
uint64_t processing_frame_count;
int processing_final_state;
msg_queue_t *msg_queue;
} nbio_image_handle_t;
typedef struct nbio_handle
{
nbio_image_handle_t image;
bool is_blocking;
bool is_finished;
transfer_cb_t cb;
struct nbio_t *handle;
unsigned pos_increment;
uint64_t frame_count;
msg_queue_t *msg_queue;
} nbio_handle_t;
#ifdef HAVE_NETWORKING
typedef struct http_handle
{
struct
{
struct http_connection_t *handle;
transfer_cb_t cb;
char elem1[PATH_MAX_LENGTH];
} connection;
msg_queue_t *msg_queue;
struct http_t *handle;
transfer_cb_t cb;
} http_handle_t;
#endif
/* All runloop-related globals go here. */
/* All libretro runloop-related globals go here. */
struct runloop
{
@ -462,22 +408,6 @@ struct runloop
bool is_menu;
bool is_slowmotion;
struct
{
#ifdef HAVE_NETWORKING
http_handle_t http;
#endif
#ifdef HAVE_LIBRETRODB
struct
{
} db;
#endif
nbio_handle_t nbio;
} data;
struct
{
struct

View File

@ -22,6 +22,7 @@
#include "menu_navigation.h"
#include "../retroarch.h"
#include "../runloop.h"
#ifdef HAVE_NETWORKING
#include "../net_http.h"
@ -284,8 +285,8 @@ static int action_ok_core_updater_list(const char *path,
fill_pathname_join(url_path, g_settings.network.buildbot_url,
".index", sizeof(url_path));
msg_queue_clear(g_runloop.data.http.msg_queue);
msg_queue_push_string_list(g_runloop.data.http.msg_queue, url_path, "cb_core_updater_list", 0, 1);
msg_queue_clear(g_data_runloop.http.msg_queue);
msg_queue_push_string_list(g_data_runloop.http.msg_queue, url_path, "cb_core_updater_list", 0, 1);
#endif
return menu_list_push_stack_refresh(
@ -423,8 +424,8 @@ static int action_ok_menu_wallpaper_load(const char *path,
{
strlcpy(g_settings.menu.wallpaper, wallpaper_path, sizeof(g_settings.menu.wallpaper));
msg_queue_clear(g_runloop.data.nbio.image.msg_queue);
msg_queue_push_string_list(g_runloop.data.nbio.image.msg_queue, wallpaper_path, "cb_menu_wallpaper", 0, 1);
msg_queue_clear(g_data_runloop.nbio.image.msg_queue);
msg_queue_push_string_list(g_data_runloop.nbio.image.msg_queue, wallpaper_path, "cb_menu_wallpaper", 0, 1);
}
menu_list_pop_stack_by_needle(menu->menu_list, setting->name);
@ -900,8 +901,8 @@ static int action_ok_core_updater_download(const char *path,
msg_queue_clear(g_runloop.msg_queue);
msg_queue_push(g_runloop.msg_queue, msg, 1, 90);
msg_queue_clear(g_runloop.data.http.msg_queue);
msg_queue_push_string_list(g_runloop.data.http.msg_queue, core_path, "cb_core_updater_download", 0, 1);
msg_queue_clear(g_data_runloop.http.msg_queue);
msg_queue_push_string_list(g_data_runloop.http.msg_queue, core_path, "cb_core_updater_download", 0, 1);
#endif
return 0;
}

View File

@ -29,6 +29,7 @@
#include <file/dir_list.h>
#include "general.h"
#include "retroarch.h"
#include "runloop.h"
#include "settings.h"
#include <compat/strl.h>
#include "screenshot.h"
@ -1626,6 +1627,7 @@ static void main_clear_state_extern(void)
memset(&g_extern, 0, sizeof(g_extern));
memset(&g_runloop, 0, sizeof(g_runloop));
memset(&g_data_runloop, 0, sizeof(g_data_runloop));
}
/**
@ -2650,14 +2652,7 @@ bool rarch_main_command(unsigned cmd)
rarch_main_command(RARCH_CMD_MSG_QUEUE_DEINIT);
if (!g_runloop.msg_queue)
rarch_assert(g_runloop.msg_queue = msg_queue_new(8));
#ifdef HAVE_NETWORKING
if (!g_runloop.data.http.msg_queue)
rarch_assert(g_runloop.data.http.msg_queue = msg_queue_new(8));
#endif
if (!g_runloop.data.nbio.msg_queue)
rarch_assert(g_runloop.data.nbio.msg_queue = msg_queue_new(8));
if (!g_runloop.data.nbio.image.msg_queue)
rarch_assert(g_runloop.data.nbio.image.msg_queue = msg_queue_new(8));
rarch_main_data_init_queues();
break;
case RARCH_CMD_BSV_MOVIE_DEINIT:
if (g_extern.bsv.movie)

View File

@ -17,10 +17,82 @@
#ifndef __RETROARCH_RUNLOOP_H
#define __RETROARCH_RUNLOOP_H
#include <file/nbio.h>
#include <formats/image.h>
#include <formats/rpng.h>
#include <queues/message_queue.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef int (*transfer_cb_t )(void *data, size_t len);
typedef struct nbio_image_handle
{
#ifndef IS_SALAMANDER
struct texture_image ti;
#endif
bool is_blocking;
bool is_blocking_on_processing;
bool is_finished;
bool is_finished_with_processing;
transfer_cb_t cb;
struct rpng_t *handle;
unsigned processing_pos_increment;
unsigned pos_increment;
uint64_t frame_count;
uint64_t processing_frame_count;
int processing_final_state;
msg_queue_t *msg_queue;
} nbio_image_handle_t;
typedef struct nbio_handle
{
nbio_image_handle_t image;
bool is_blocking;
bool is_finished;
transfer_cb_t cb;
struct nbio_t *handle;
unsigned pos_increment;
uint64_t frame_count;
msg_queue_t *msg_queue;
} nbio_handle_t;
#ifdef HAVE_NETWORKING
typedef struct http_handle
{
struct
{
struct http_connection_t *handle;
transfer_cb_t cb;
char elem1[PATH_MAX_LENGTH];
} connection;
msg_queue_t *msg_queue;
struct http_t *handle;
transfer_cb_t cb;
} http_handle_t;
#endif
/* All data runloop-related globals go here. */
struct data_runloop
{
#ifdef HAVE_NETWORKING
http_handle_t http;
#endif
#ifdef HAVE_LIBRETRODB
struct
{
} db;
#endif
nbio_handle_t nbio;
};
extern struct data_runloop g_data_runloop;
/**
* rarch_main_iterate:
*
@ -33,6 +105,8 @@ int rarch_main_iterate(void);
void rarch_main_data_iterate(void);
void rarch_main_data_init_queues(void);
#ifdef __cplusplus
}
#endif

View File

@ -13,7 +13,10 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <retro_miscellaneous.h>
#include "runloop.h"
#include "general.h"
#include "input/input_overlay.h"
#ifdef HAVE_NETWORKING
#include "net_http.h"
@ -643,14 +646,26 @@ static void rarch_main_data_overlay_iterate(void)
}
#endif
void rarch_main_data_init_queues(void)
{
#ifdef HAVE_NETWORKING
if (!g_data_runloop.http.msg_queue)
rarch_assert(g_data_runloop.http.msg_queue = msg_queue_new(8));
#endif
if (!g_data_runloop.nbio.msg_queue)
rarch_assert(g_data_runloop.nbio.msg_queue = msg_queue_new(8));
if (!g_data_runloop.nbio.image.msg_queue)
rarch_assert(g_data_runloop.nbio.image.msg_queue = msg_queue_new(8));
}
void rarch_main_data_iterate(void)
{
#ifdef HAVE_OVERLAY
rarch_main_data_overlay_iterate();
#endif
rarch_main_data_nbio_iterate(&g_runloop.data.nbio);
rarch_main_data_nbio_iterate(&g_data_runloop.nbio);
#ifdef HAVE_NETWORKING
rarch_main_data_http_iterate(&g_runloop.data.http);
rarch_main_data_http_iterate(&g_data_runloop.http);
#endif
rarch_main_data_db_iterate();
}

View File

@ -26,6 +26,7 @@
#include "gfx/video_viewport.h"
#include "settings.h"
#include "general.h"
#include "runloop.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -36,6 +37,7 @@
struct settings g_settings;
struct global g_extern;
struct runloop g_runloop;
struct data_runloop g_data_runloop;
struct defaults g_defaults;
/**