diff --git a/Makefile.common b/Makefile.common index 10bbe7e71b..60c990f554 100644 --- a/Makefile.common +++ b/Makefile.common @@ -289,6 +289,7 @@ ifeq ($(HAVE_MENU_COMMON), 1) OBJ += menu/backend/menu_common_backend.o \ menu/menu_input_line_cb.o \ menu/menu_common.o \ + menu/menu_common_list.o \ menu/menu_navigation.o \ menu/menu_action.o \ menu/menu_shader.o \ diff --git a/griffin/griffin.c b/griffin/griffin.c index 9b27cfacfd..530d650b36 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -663,6 +663,7 @@ MENU #ifdef HAVE_MENU #include "../menu/menu_input_line_cb.c" #include "../menu/menu_common.c" +#include "../menu/menu_common_list.c" #include "../menu/menu_action.c" #include "../menu/menu_list.c" #include "../menu/menu_entries.c" diff --git a/menu/menu_common.c b/menu/menu_common.c index b84a6c245d..fbe41c7b24 100644 --- a/menu/menu_common.c +++ b/menu/menu_common.c @@ -16,8 +16,6 @@ #include "menu_common.h" #include "menu_entries.h" -#include "menu_entries_cbs.h" -#include "menu_list.h" #include "menu_shader.h" #include "../dynamic.h" #include "../frontend/frontend.h" @@ -527,55 +525,3 @@ unsigned menu_common_type_is(const char *label, unsigned type) return 0; } - -void menu_common_list_clear(void *data) -{ -} - -void menu_common_list_set_selection(void *data) -{ -} - -void menu_common_list_insert(void *data, - const char *path, const char *label, - unsigned type, size_t idx) -{ - file_list_t *list = (file_list_t*)data; - - if (!list) - return; - - list->list[idx].actiondata = (menu_file_list_cbs_t*) - calloc(1, sizeof(menu_file_list_cbs_t)); - - if (!list->list[idx].actiondata) - { - RARCH_ERR("Action data could not be allocated.\n"); - return; - } - - menu_entries_cbs_init(list, path, label, type, idx); -} - -void menu_common_list_delete(void *data, size_t idx, - size_t list_size) -{ - menu_file_list_cbs_t *cbs = NULL; - file_list_t *list = (file_list_t*)data; - - if (!list) - return; - - cbs = (menu_file_list_cbs_t*)list->list[idx].actiondata; - - if (cbs) - { - cbs->action_start = NULL; - cbs->action_ok = NULL; - cbs->action_cancel = NULL; - cbs->action_toggle = NULL; - cbs->action_deferred_push = NULL; - free(list->list[idx].actiondata); - } - list->list[idx].actiondata = NULL; -} diff --git a/menu/menu_common.h b/menu/menu_common.h index 5fd4dd5a4c..c7134a013d 100644 --- a/menu/menu_common.h +++ b/menu/menu_common.h @@ -217,16 +217,6 @@ unsigned menu_common_type_is(const char *label, unsigned type); void apply_deferred_settings(void); -void menu_common_list_clear(void *data); - -void menu_common_list_set_selection(void *data); - -void menu_common_list_insert(void *data, - const char *path, const char *label, - unsigned type, size_t idx); - -void menu_common_list_delete(void *data, size_t idx, - size_t list_size); #ifdef __cplusplus } diff --git a/menu/menu_common_list.c b/menu/menu_common_list.c new file mode 100644 index 0000000000..0306fac618 --- /dev/null +++ b/menu/menu_common_list.c @@ -0,0 +1,73 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * 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 "menu_common.h" +#include "menu_common_list.h" +#include "menu_list.h" +#include "menu_entries_cbs.h" +#include + +void menu_common_list_clear(void *data) +{ +} + +void menu_common_list_set_selection(void *data) +{ +} + +void menu_common_list_insert(void *data, + const char *path, const char *label, + unsigned type, size_t idx) +{ + file_list_t *list = (file_list_t*)data; + + if (!list) + return; + + list->list[idx].actiondata = (menu_file_list_cbs_t*) + calloc(1, sizeof(menu_file_list_cbs_t)); + + if (!list->list[idx].actiondata) + { + RARCH_ERR("Action data could not be allocated.\n"); + return; + } + + menu_entries_cbs_init(list, path, label, type, idx); +} + +void menu_common_list_delete(void *data, size_t idx, + size_t list_size) +{ + menu_file_list_cbs_t *cbs = NULL; + file_list_t *list = (file_list_t*)data; + + if (!list) + return; + + cbs = (menu_file_list_cbs_t*)list->list[idx].actiondata; + + if (cbs) + { + cbs->action_start = NULL; + cbs->action_ok = NULL; + cbs->action_cancel = NULL; + cbs->action_toggle = NULL; + cbs->action_deferred_push = NULL; + free(list->list[idx].actiondata); + } + list->list[idx].actiondata = NULL; +} diff --git a/menu/menu_common_list.h b/menu/menu_common_list.h new file mode 100644 index 0000000000..7d3fd0b797 --- /dev/null +++ b/menu/menu_common_list.h @@ -0,0 +1,39 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * 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 . + */ + +#ifndef MENU_COMMON_LIST_H__ +#define MENU_COMMON_LIST_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +void menu_common_list_clear(void *data); + +void menu_common_list_set_selection(void *data); + +void menu_common_list_insert(void *data, + const char *path, const char *label, + unsigned type, size_t idx); + +void menu_common_list_delete(void *data, size_t idx, + size_t list_size); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/menu/menu_list.c b/menu/menu_list.c index 42b95a622e..c89c2c3dc5 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -15,6 +15,7 @@ */ #include "../driver.h" +#include "menu_common_list.h" #include "menu_list.h" #include "menu_navigation.h" #include