From 764b20234d173405f051d087578fae3ac15b103c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Wed, 10 Aug 2016 01:46:47 +0200 Subject: [PATCH] Restaure Lakka services Also use HAVE_LAKKA instead of HAVE_SYSTEMD to prevent this menu to appear in the regular RetroArch linux build for users that have systemd. It wouldn't work in all cases. --- configuration.h | 2 +- intl/msg_hash_us.c | 2 ++ menu/cbs/menu_cbs_deferred_push.c | 11 +++++++++++ menu/cbs/menu_cbs_ok.c | 18 ++++++++++++++++++ menu/cbs/menu_cbs_title.c | 13 +++++++++++++ menu/menu_cbs.h | 1 + menu/menu_displaylist.c | 17 +++++++++++++++++ menu/menu_displaylist.h | 1 + menu/menu_setting.c | 15 +++++++++++++-- msg_hash.h | 1 + 10 files changed, 78 insertions(+), 3 deletions(-) diff --git a/configuration.h b/configuration.h index 42971cf2ee..7da2f0d0af 100644 --- a/configuration.h +++ b/configuration.h @@ -487,7 +487,7 @@ typedef struct settings bool config_save_on_exit; -#ifdef HAVE_SYSTEMD +#ifdef HAVE_LAKKA bool ssh_enable; bool samba_enable; bool bluetooth_enable; diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index fbb10a1130..7e1208516a 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -2122,6 +2122,8 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg) return "deferred_updater_settings_list"; case MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST: return "deferred_network_settings_list"; + case MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST: + return "deferred_lakka_services_list"; case MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST: return "deferred_user_settings_list"; case MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST: diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 5eb7384827..7abae3e7bc 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -174,6 +174,11 @@ static int deferred_push_network_settings_list(menu_displaylist_info_t *info) return deferred_push_dlist(info, DISPLAYLIST_NETWORK_SETTINGS_LIST); } +static int deferred_push_lakka_services_list(menu_displaylist_info_t *info) +{ + return deferred_push_dlist(info, DISPLAYLIST_LAKKA_SERVICES_LIST); +} + static int deferred_push_user_settings_list(menu_displaylist_info_t *info) { return deferred_push_dlist(info, DISPLAYLIST_USER_SETTINGS_LIST); @@ -746,6 +751,12 @@ static int menu_cbs_init_bind_deferred_push_compare_label( return 0; } + if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST))) + { + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_lakka_services_list); + return 0; + } + if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST))) { BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_user_settings_list); diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 806a42d8f2..33c49a5676 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -698,6 +698,14 @@ int generic_action_ok_displaylist_push(const char *path, info.enum_idx = MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST; dl_type = DISPLAYLIST_GENERIC; break; + case ACTION_OK_DL_LAKKA_SERVICES_LIST: + info.directory_ptr = idx; + info.type = type; + info_path = path; + info_label = msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST); + info.enum_idx = MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST; + dl_type = DISPLAYLIST_GENERIC; + break; case ACTION_OK_DL_USER_SETTINGS_LIST: info.directory_ptr = idx; info.type = type; @@ -2764,6 +2772,13 @@ static int action_ok_network_list(const char *path, entry_idx, ACTION_OK_DL_NETWORK_SETTINGS_LIST); } +static int action_ok_lakka_services(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, NULL, label, type, idx, + entry_idx, ACTION_OK_DL_LAKKA_SERVICES_LIST); +} + static int action_ok_user_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -3509,6 +3524,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_NETWORK_SETTINGS: BIND_ACTION_OK(cbs, action_ok_network_list); break; + case MENU_ENUM_LABEL_LAKKA_SERVICES: + BIND_ACTION_OK(cbs, action_ok_lakka_services); + break; case MENU_ENUM_LABEL_USER_SETTINGS: BIND_ACTION_OK(cbs, action_ok_user_list); break; diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index cf893ef1d2..b9ed35d340 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -284,6 +284,13 @@ static int action_get_network_settings_list(const char *path, const char *label, return 0; } +static int action_get_lakka_services_list(const char *path, const char *label, + unsigned menu_type, char *s, size_t len) +{ + sanitize_to_string(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES), len); + return 0; +} + static int action_get_user_settings_list(const char *path, const char *label, unsigned menu_type, char *s, size_t len) { @@ -957,6 +964,12 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, return 0; } + if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST))) + { + BIND_ACTION_GET_TITLE(cbs, action_get_lakka_services_list); + return 0; + } + if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST))) { BIND_ACTION_GET_TITLE(cbs, action_get_user_settings_list); diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 5926acc188..0a5bf8f9ec 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -85,6 +85,7 @@ enum ACTION_OK_DL_RETRO_ACHIEVEMENTS_SETTINGS_LIST, ACTION_OK_DL_UPDATER_SETTINGS_LIST, ACTION_OK_DL_NETWORK_SETTINGS_LIST, + ACTION_OK_DL_LAKKA_SERVICES_LIST, ACTION_OK_DL_USER_SETTINGS_LIST, ACTION_OK_DL_DIRECTORY_SETTINGS_LIST, ACTION_OK_DL_PRIVACY_SETTINGS_LIST, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 98222b6bc6..13ec905e1f 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4123,6 +4123,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) case DISPLAYLIST_RETRO_ACHIEVEMENTS_SETTINGS_LIST: case DISPLAYLIST_UPDATER_SETTINGS_LIST: case DISPLAYLIST_NETWORK_SETTINGS_LIST: + case DISPLAYLIST_LAKKA_SERVICES_LIST: case DISPLAYLIST_USER_SETTINGS_LIST: case DISPLAYLIST_DIRECTORY_SETTINGS_LIST: case DISPLAYLIST_PRIVACY_SETTINGS_LIST: @@ -4775,6 +4776,22 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) MENU_ENUM_LABEL_STDIN_CMD_ENABLE, PARSE_ONLY_BOOL, false); + info->need_refresh = true; + info->need_push = true; + break; + case DISPLAYLIST_LAKKA_SERVICES_LIST: + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_SSH_ENABLE, + PARSE_ONLY_BOOL, false); + + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_SAMBA_ENABLE, + PARSE_ONLY_BOOL, false); + + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_BLUETOOTH_ENABLE, + PARSE_ONLY_BOOL, false); + info->need_refresh = true; info->need_push = true; break; diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 4a56afef25..87c0802062 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -127,6 +127,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_RETRO_ACHIEVEMENTS_SETTINGS_LIST, DISPLAYLIST_UPDATER_SETTINGS_LIST, DISPLAYLIST_NETWORK_SETTINGS_LIST, + DISPLAYLIST_LAKKA_SERVICES_LIST, DISPLAYLIST_USER_SETTINGS_LIST, DISPLAYLIST_DIRECTORY_SETTINGS_LIST, DISPLAYLIST_PRIVACY_SETTINGS_LIST, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index bc5493e09c..e31f8640c6 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3625,7 +3625,7 @@ static void overlay_enable_toggle_change_handler(void *data) } #endif -#ifdef HAVE_SYSTEMD +#ifdef HAVE_LAKKA static void systemd_service_toggle(const char *path, char *unit, bool enable) { int pid = fork(); @@ -4376,6 +4376,17 @@ static bool setting_append_list( parent_group); menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_NETWORK_SETTINGS); +#ifdef HAVE_LAKKA + CONFIG_ACTION( + list, list_info, + msg_hash_to_str(MENU_ENUM_LABEL_LAKKA_SERVICES), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES), + &group_info, + &subgroup_info, + parent_group); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_LAKKA_SERVICES); +#endif + CONFIG_ACTION( list, list_info, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_SETTINGS), @@ -7722,7 +7733,7 @@ static bool setting_append_list( break; case SETTINGS_LIST_LAKKA_SERVICES: { -#if defined(HAVE_SYSTEMD) +#if defined(HAVE_LAKKA) START_GROUP(list, list_info, &group_info, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LAKKA_SERVICES), parent_group); diff --git a/msg_hash.h b/msg_hash.h index 85a709ce63..d7ac0fe4e2 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -812,6 +812,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_DEFERRED_RETRO_ACHIEVEMENTS_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_UPDATER_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_NETWORK_SETTINGS_LIST, + MENU_ENUM_LABEL_DEFERRED_LAKKA_SERVICES_LIST, MENU_ENUM_LABEL_DEFERRED_USER_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_DIRECTORY_SETTINGS_LIST, MENU_ENUM_LABEL_DEFERRED_PRIVACY_SETTINGS_LIST,