Start moving code to menu_content.c

This commit is contained in:
twinaphex 2016-01-25 04:44:54 +01:00
parent 9a6cfe9084
commit 22bf74ff37
5 changed files with 143 additions and 120 deletions

View File

@ -13,4 +13,123 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <file/file_path.h>
#include "menu_content.h"
#include "menu_driver.h"
#include "menu_display.h"
#include "menu_shader.h"
#include "../configuration.h"
#include "../defaults.h"
#include "../frontend/frontend.h"
#include "../playlist.h"
#include "../retroarch.h"
#include "../runloop.h"
#include "../verbosity.h"
static void menu_content_push_to_history_playlist(void)
{
struct retro_system_info *system = NULL;
settings_t *settings = config_get_ptr();
char *fullpath = NULL;
if (!settings->history_list_enable)
return;
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
if (*fullpath)
{
char tmp[PATH_MAX_LENGTH];
char str[PATH_MAX_LENGTH];
fill_pathname_base(tmp, fullpath, sizeof(tmp));
snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp);
menu_display_msg_queue_push(str, 1, 1, false);
}
menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET,
&system);
content_playlist_push(g_defaults.history,
fullpath,
NULL,
settings->libretro,
system->library_name,
NULL,
NULL);
content_playlist_write_file(g_defaults.history);
}
static void menu_content_environment_get(int *argc, char *argv[],
void *args, void *params_data)
{
struct rarch_main_wrap *wrap_args = (struct rarch_main_wrap*)params_data;
char *fullpath = NULL;
global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr();
if (!wrap_args)
return;
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
wrap_args->no_content = menu_driver_ctl(RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT, NULL);
if (!global->has_set.verbosity)
wrap_args->verbose = *retro_main_verbosity();
wrap_args->config_path = *global->path.config ? global->path.config : NULL;
wrap_args->sram_path = *global->dir.savefile ? global->dir.savefile : NULL;
wrap_args->state_path = *global->dir.savestate ? global->dir.savestate : NULL;
wrap_args->content_path = *fullpath ? fullpath : NULL;
if (!global->has_set.libretro)
wrap_args->libretro_path = *settings->libretro ? settings->libretro : NULL;
wrap_args->touched = true;
}
/**
* menu_content_load:
*
* Loads content into currently selected core.
* Will also optionally push the content entry to the history playlist.
*
* Returns: true (1) if successful, otherwise false (0).
**/
bool menu_content_load(enum rarch_core_type type)
{
bool msg_force = true;
char *fullpath = NULL;
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
/* redraw menu frame */
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
menu_driver_ctl(RARCH_MENU_CTL_RENDER, NULL);
if (!(main_load_content(0, NULL, NULL, menu_content_environment_get)))
{
char name[PATH_MAX_LENGTH];
char msg[PATH_MAX_LENGTH];
fill_pathname_base(name, fullpath, sizeof(name));
snprintf(msg, sizeof(msg), "Failed to load %s.\n", name);
menu_display_msg_queue_push(msg, 1, 90, false);
return false;
}
menu_driver_ctl(RARCH_MENU_CTL_SHADER_MANAGER_INIT, NULL);
event_cmd_ctl(EVENT_CMD_HISTORY_INIT, NULL);
if (*fullpath || menu_driver_ctl(RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT, NULL))
menu_content_push_to_history_playlist();
event_cmd_ctl(EVENT_CMD_VIDEO_SET_ASPECT_RATIO, NULL);
event_cmd_ctl(EVENT_CMD_RESUME, NULL);
return true;
}

View File

@ -19,10 +19,25 @@
#include <stdint.h>
#include <stdlib.h>
#include <boolean.h>
#include "../dynamic.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* menu_content_load:
* type : Type of content to load.
*
* Loads content into currently selected core.
* Will also optionally push the content entry to the history playlist.
*
* Returns: true (1) if successful, otherwise false (0).
**/
bool menu_content_load(enum rarch_core_type type);
#ifdef __cplusplus
}
#endif

View File

@ -369,111 +369,6 @@ int menu_driver_pointer_tap(unsigned x, unsigned y, unsigned ptr,
return 0;
}
static void menu_environment_get(int *argc, char *argv[],
void *args, void *params_data)
{
struct rarch_main_wrap *wrap_args = (struct rarch_main_wrap*)params_data;
char *fullpath = NULL;
global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr();
if (!wrap_args)
return;
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
wrap_args->no_content = menu_driver_ctl(RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT, NULL);
if (!global->has_set.verbosity)
wrap_args->verbose = *retro_main_verbosity();
wrap_args->config_path = *global->path.config ? global->path.config : NULL;
wrap_args->sram_path = *global->dir.savefile ? global->dir.savefile : NULL;
wrap_args->state_path = *global->dir.savestate ? global->dir.savestate : NULL;
wrap_args->content_path = *fullpath ? fullpath : NULL;
if (!global->has_set.libretro)
wrap_args->libretro_path = *settings->libretro ? settings->libretro : NULL;
wrap_args->touched = true;
}
static void menu_push_to_history_playlist(void)
{
struct retro_system_info *system = NULL;
settings_t *settings = config_get_ptr();
char *fullpath = NULL;
if (!settings->history_list_enable)
return;
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
if (*fullpath)
{
char tmp[PATH_MAX_LENGTH];
char str[PATH_MAX_LENGTH];
fill_pathname_base(tmp, fullpath, sizeof(tmp));
snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp);
menu_display_msg_queue_push(str, 1, 1, false);
}
menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET,
&system);
content_playlist_push(g_defaults.history,
fullpath,
NULL,
settings->libretro,
system->library_name,
NULL,
NULL);
content_playlist_write_file(g_defaults.history);
}
/**
* menu_load_content:
*
* Loads content into currently selected core.
* Will also optionally push the content entry to the history playlist.
*
* Returns: true (1) if successful, otherwise false (0).
**/
bool menu_load_content(enum rarch_core_type type)
{
bool msg_force = true;
char *fullpath = NULL;
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
/* redraw menu frame */
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
menu_driver_ctl(RARCH_MENU_CTL_RENDER, NULL);
if (!(main_load_content(0, NULL, NULL, menu_environment_get)))
{
char name[PATH_MAX_LENGTH];
char msg[PATH_MAX_LENGTH];
fill_pathname_base(name, fullpath, sizeof(name));
snprintf(msg, sizeof(msg), "Failed to load %s.\n", name);
menu_display_msg_queue_push(msg, 1, 90, false);
return false;
}
menu_shader_manager_init(menu_driver_data);
event_cmd_ctl(EVENT_CMD_HISTORY_INIT, NULL);
if (*fullpath || menu_driver_ctl(RARCH_MENU_CTL_HAS_LOAD_NO_CONTENT, NULL))
menu_push_to_history_playlist();
event_cmd_ctl(EVENT_CMD_VIDEO_SET_ASPECT_RATIO, NULL);
event_cmd_ctl(EVENT_CMD_RESUME, NULL);
return true;
}
/**
* menu_free:
* @menu : Menu handle.
@ -587,7 +482,7 @@ void *menu_init(const void *data)
#endif
}
menu_shader_manager_init(menu);
menu_driver_ctl(RARCH_MENU_CTL_SHADER_MANAGER_INIT, NULL);
if (!menu_display_init())
goto error;
@ -847,6 +742,9 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
if (driver && driver->context_destroy)
driver->context_destroy(menu_userdata ? menu_userdata : NULL);
break;
case RARCH_MENU_CTL_SHADER_MANAGER_INIT:
menu_shader_manager_init(menu_driver_data);
return true;
default:
case RARCH_MENU_CTL_NONE:
break;

View File

@ -132,6 +132,7 @@ enum rarch_menu_ctl_state
RARCH_MENU_CTL_TOGGLE,
RARCH_MENU_CTL_CONTEXT_RESET,
RARCH_MENU_CTL_CONTEXT_DESTROY,
RARCH_MENU_CTL_SHADER_MANAGER_INIT,
RARCH_MENU_CTL_POPULATE_ENTRIES
};
@ -402,17 +403,6 @@ void *menu_init(const void *data);
int menu_iterate_render(void *data, void *userdata);
/**
* menu_load_content:
* type : Type of content to load.
*
* Loads content into currently selected core.
* Will also optionally push the content entry to the history playlist.
*
* Returns: true (1) if successful, otherwise false (0).
**/
bool menu_load_content(enum rarch_core_type type);
#ifdef __cplusplus
}
#endif

View File

@ -71,6 +71,7 @@
#ifdef HAVE_MENU
#include "menu/menu_driver.h"
#include "menu/menu_content.h"
#include "menu/menu_hash.h"
#endif
@ -1411,7 +1412,7 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
case RARCH_CTL_LOAD_CONTENT:
#ifdef HAVE_MENU
/* If content loading fails, we go back to menu. */
if (!menu_load_content(CORE_TYPE_PLAIN))
if (!menu_content_load(CORE_TYPE_PLAIN))
rarch_ctl(RARCH_CTL_MENU_RUNNING, NULL);
#endif
frontend_driver_content_loaded();
@ -1420,7 +1421,7 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
case RARCH_CTL_LOAD_CONTENT_FFMPEG:
#ifdef HAVE_MENU
/* If content loading fails, we go back to menu. */
if (!menu_load_content(CORE_TYPE_FFMPEG))
if (!menu_content_load(CORE_TYPE_FFMPEG))
rarch_ctl(RARCH_CTL_MENU_RUNNING, NULL);
#endif
frontend_driver_content_loaded();
@ -1429,7 +1430,7 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
case RARCH_CTL_LOAD_CONTENT_IMAGEVIEWER:
#ifdef HAVE_MENU
/* If content loading fails, we go back to menu. */
if (!menu_load_content(CORE_TYPE_IMAGEVIEWER))
if (!menu_content_load(CORE_TYPE_IMAGEVIEWER))
rarch_ctl(RARCH_CTL_MENU_RUNNING, NULL);
#endif
frontend_driver_content_loaded();