From e798f99feacb531216c1d0ecc78e90ecb35b48a3 Mon Sep 17 00:00:00 2001 From: libretroadmin Date: Sun, 22 Jan 2023 20:16:14 +0100 Subject: [PATCH] Several RARCH_CTL switches don't belong to retroarch state but runloop state, hence remove --- menu/menu_displaylist.c | 17 ++- retroarch.c | 25 +--- retroarch_types.h | 6 - tasks/task_content.c | 33 ++--- ui/drivers/qt/qt_dialogs.cpp | 249 +++++++++++++++++------------------ ui/drivers/ui_qt.cpp | 7 +- 6 files changed, 154 insertions(+), 183 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 7f8d4ff069..c6f827fea1 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -470,6 +470,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info, core_info_t *core_info = NULL; const char *core_path = NULL; const char *savestate_support = NULL; + runloop_state_t *runloop_st = runloop_state_get_ptr(); bool kiosk_mode_enable = settings->bools.kiosk_mode_enable; #if defined(HAVE_NETWORKING) && defined(HAVE_ONLINE_UPDATER) bool menu_show_core_updater = settings->bools.menu_show_core_updater; @@ -693,12 +694,12 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info, firmware_info.path = core_info->path; firmware_info.directory.system = settings->paths.directory_system; - retroarch_ctl(RARCH_CTL_UNSET_MISSING_BIOS, NULL); - - update_missing_firmware = core_info_list_update_missing_firmware(&firmware_info, &set_missing_firmware); + update_missing_firmware = core_info_list_update_missing_firmware(&firmware_info, &set_missing_firmware); if (set_missing_firmware) - retroarch_ctl(RARCH_CTL_SET_MISSING_BIOS, NULL); + runloop_st->missing_bios = true; + else + runloop_st->missing_bios = false; if (update_missing_firmware) { @@ -1237,9 +1238,10 @@ static unsigned menu_displaylist_parse_core_option_override_list( menu_displaylist_info_t *info, settings_t *settings) { unsigned count = 0; + runloop_state_t *runloop_st = runloop_state_get_ptr(); uint32_t flags = runloop_get_flags(); bool core_has_options = !retroarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL) && - retroarch_ctl(RARCH_CTL_HAS_CORE_OPTIONS, NULL); + (runloop_st->core_options); bool game_options_active = flags & RUNLOOP_FLAG_GAME_OPTIONS_ACTIVE; bool folder_options_active = flags & RUNLOOP_FLAG_FOLDER_OPTIONS_ACTIVE; bool show_core_options_flush = settings ? @@ -12911,11 +12913,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, * we therefore have to check that the current selection * index is less than the current number of menu entries * - if not, we reset the navigation pointer */ - size_t selection = menu_navigation_get_selection(); + size_t selection = menu_navigation_get_selection(); + runloop_state_t *runloop_st = runloop_state_get_ptr(); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); - if (retroarch_ctl(RARCH_CTL_HAS_CORE_OPTIONS, NULL)) + if (runloop_st->core_options) { bool game_specific_options = settings->bools.game_specific_options; const char *category = info->path; diff --git a/retroarch.c b/retroarch.c index 9f8e85c4eb..c3c122c320 100644 --- a/retroarch.c +++ b/retroarch.c @@ -6405,19 +6405,6 @@ bool retroarch_ctl(enum rarch_ctl_state state, void *data) p_rarch->flags &= ~RARCH_FLAGS_BLOCK_CONFIG_READ; break; #endif - case RARCH_CTL_GET_CORE_OPTION_SIZE: - { - unsigned *idx = (unsigned*)data; - if (!idx) - return false; - if (runloop_st->core_options) - *idx = (unsigned)runloop_st->core_options->size; - else - *idx = 0; - } - break; - case RARCH_CTL_HAS_CORE_OPTIONS: - return (runloop_st->core_options != NULL); case RARCH_CTL_CORE_OPTIONS_LIST_GET: { core_option_manager_t **coreopts = (core_option_manager_t**)data; @@ -6427,8 +6414,8 @@ bool retroarch_ctl(enum rarch_ctl_state state, void *data) } break; case RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY: - if (runloop_st->core_options && - runloop_st->core_options_callback.update_display) + if ( runloop_st->core_options + && runloop_st->core_options_callback.update_display) { /* Note: The update_display() callback may read * core option values via RETRO_ENVIRONMENT_GET_VARIABLE. @@ -6462,14 +6449,6 @@ bool retroarch_ctl(enum rarch_ctl_state state, void *data) runloop_st->flags |= RUNLOOP_FLAG_REMAPS_CONTENT_DIR_ACTIVE; break; #endif - case RARCH_CTL_SET_MISSING_BIOS: - runloop_st->missing_bios = true; - break; - case RARCH_CTL_UNSET_MISSING_BIOS: - runloop_st->missing_bios = false; - break; - case RARCH_CTL_IS_MISSING_BIOS: - return runloop_st->missing_bios; case RARCH_CTL_GET_PERFCNT: { bool **perfcnt = (bool**)data; diff --git a/retroarch_types.h b/retroarch_types.h index 451fa1e814..c39c65b949 100644 --- a/retroarch_types.h +++ b/retroarch_types.h @@ -79,10 +79,6 @@ enum rarch_ctl_state RARCH_CTL_SET_REMAPS_GAME_ACTIVE, #endif - RARCH_CTL_IS_MISSING_BIOS, - RARCH_CTL_SET_MISSING_BIOS, - RARCH_CTL_UNSET_MISSING_BIOS, - RARCH_CTL_SET_SHUTDOWN, /* Runloop state */ @@ -95,8 +91,6 @@ enum rarch_ctl_state RARCH_CTL_IS_PERFCNT_ENABLE, /* Core options */ - RARCH_CTL_HAS_CORE_OPTIONS, - RARCH_CTL_GET_CORE_OPTION_SIZE, RARCH_CTL_CORE_OPTIONS_LIST_GET, RARCH_CTL_CORE_OPTION_PREV, RARCH_CTL_CORE_OPTION_NEXT, diff --git a/tasks/task_content.c b/tasks/task_content.c index 65d2bd03b8..77f369ce77 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -1854,8 +1854,9 @@ static bool firmware_update_status( { char s[PATH_MAX_LENGTH]; core_info_ctx_firmware_t firmware_info; - bool set_missing_firmware = false; - core_info_t *core_info = NULL; + bool set_missing_firmware = false; + core_info_t *core_info = NULL; + runloop_state_t *runloop_st = runloop_state_get_ptr(); core_info_get_current_core(&core_info); @@ -1878,13 +1879,13 @@ static bool firmware_update_status( core_info->path, firmware_info.directory.system); - retroarch_ctl(RARCH_CTL_UNSET_MISSING_BIOS, NULL); - core_info_list_update_missing_firmware(&firmware_info, &set_missing_firmware); if (set_missing_firmware) - retroarch_ctl(RARCH_CTL_SET_MISSING_BIOS, NULL); + runloop_st->missing_bios = true; + else + runloop_st->missing_bios = false; if ( (content_ctx->flags & CONTENT_INFO_FLAG_BIOS_IS_MISSING) @@ -1934,7 +1935,7 @@ bool task_push_start_dummy_core(content_ctx_info_t *content_info) if (runloop_st->flags & RUNLOOP_FLAG_PATCH_BLOCKED) content_ctx.flags |= CONTENT_INFO_FLAG_PATCH_IS_BLOCKED; #endif - if (retroarch_ctl(RARCH_CTL_IS_MISSING_BIOS, NULL)) + if (runloop_st->missing_bios) content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; content_ctx.directory_system = NULL; content_ctx.directory_cache = NULL; @@ -2024,7 +2025,7 @@ bool task_push_load_content_from_playlist_from_menu( if (runloop_st->flags & RUNLOOP_FLAG_PATCH_BLOCKED) content_ctx.flags |= CONTENT_INFO_FLAG_PATCH_IS_BLOCKED; #endif - if (retroarch_ctl(RARCH_CTL_IS_MISSING_BIOS, NULL)) + if (runloop_st->missing_bios) content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; content_ctx.directory_system = NULL; content_ctx.directory_cache = NULL; @@ -2164,7 +2165,7 @@ bool task_push_start_current_core(content_ctx_info_t *content_info) if (runloop_st->flags & RUNLOOP_FLAG_PATCH_BLOCKED) content_ctx.flags |= CONTENT_INFO_FLAG_PATCH_IS_BLOCKED; #endif - if (retroarch_ctl(RARCH_CTL_IS_MISSING_BIOS, NULL)) + if (runloop_st->missing_bios) content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; content_ctx.directory_system = NULL; content_ctx.directory_cache = NULL; @@ -2283,12 +2284,12 @@ bool task_push_load_contentless_core_from_menu( if (string_is_empty(core_path)) return false; - content_ctx.flags = 0; + content_ctx.flags = 0; if (check_firmware_before_loading) - content_ctx.flags |= CONTENT_INFO_FLAG_CHECK_FW_BEFORE_LOADING; - if (retroarch_ctl(RARCH_CTL_IS_MISSING_BIOS, NULL)) - content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; + content_ctx.flags |= CONTENT_INFO_FLAG_CHECK_FW_BEFORE_LOADING; + if (runloop_st->missing_bios) + content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; if (!string_is_empty(path_dir_system)) content_ctx.directory_system = strdup(path_dir_system); @@ -2399,8 +2400,8 @@ bool task_push_load_content_with_new_core_from_menu( if (runloop_st->flags & RUNLOOP_FLAG_PATCH_BLOCKED) content_ctx.flags |= CONTENT_INFO_FLAG_PATCH_IS_BLOCKED; #endif - if (retroarch_ctl(RARCH_CTL_IS_MISSING_BIOS, NULL)) - content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; + if (runloop_st->missing_bios) + content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; content_ctx.directory_system = NULL; content_ctx.directory_cache = NULL; content_ctx.name_ips = NULL; @@ -2506,8 +2507,8 @@ static bool task_load_content_internal( if (runloop_st->flags & RUNLOOP_FLAG_PATCH_BLOCKED) content_ctx.flags |= CONTENT_INFO_FLAG_PATCH_IS_BLOCKED; #endif - if (retroarch_ctl(RARCH_CTL_IS_MISSING_BIOS, NULL)) - content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; + if (runloop_st->missing_bios) + content_ctx.flags |= CONTENT_INFO_FLAG_BIOS_IS_MISSING; content_ctx.directory_system = NULL; content_ctx.directory_cache = NULL; content_ctx.name_ips = NULL; diff --git a/ui/drivers/qt/qt_dialogs.cpp b/ui/drivers/qt/qt_dialogs.cpp index a641b70cf8..fb1497a0c0 100644 --- a/ui/drivers/qt/qt_dialogs.cpp +++ b/ui/drivers/qt/qt_dialogs.cpp @@ -1042,8 +1042,8 @@ void CoreOptionsDialog::onCoreOptionComboBoxCurrentIndexChanged(int index) { unsigned i, k; QString key, val; - size_t opts = 0; - QComboBox *combo_box = qobject_cast(sender()); + runloop_state_t *runloop_st = runloop_state_get_ptr(); + QComboBox *combo_box = qobject_cast(sender()); if (!combo_box) return; @@ -1051,37 +1051,34 @@ void CoreOptionsDialog::onCoreOptionComboBoxCurrentIndexChanged(int index) key = combo_box->itemData(index, Qt::UserRole).toString(); val = combo_box->itemText(index); - if (retroarch_ctl(RARCH_CTL_HAS_CORE_OPTIONS, NULL)) + if (runloop_st->core_options) { - retroarch_ctl(RARCH_CTL_GET_CORE_OPTION_SIZE, &opts); + core_option_manager_t *coreopts = NULL; - if (opts) + retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts); + + if (coreopts) { - core_option_manager_t *coreopts = NULL; + size_t opts = runloop_st->core_options->size; - retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts); - - if (coreopts) + for (i = 0; i < opts; i++) { - for (i = 0; i < opts; i++) + QString optKey; + struct core_option *option = static_cast(&coreopts->opts[i]); + + if (!option) + continue; + + optKey = option->key; + + if (key == optKey) { - QString optKey; - struct core_option *option = static_cast(&coreopts->opts[i]); - - if (!option) - continue; - - optKey = option->key; - - if (key == optKey) + for (k = 0; k < option->vals->size; k++) { - for (k = 0; k < option->vals->size; k++) - { - QString str = option->vals->elems[k].data; + QString str = option->vals->elems[k].data; - if (!str.isEmpty() && str == val) - core_option_manager_set_val(coreopts, i, k, true); - } + if (!str.isEmpty() && str == val) + core_option_manager_set_val(coreopts, i, k, true); } } } @@ -1092,138 +1089,134 @@ void CoreOptionsDialog::onCoreOptionComboBoxCurrentIndexChanged(int index) void CoreOptionsDialog::buildLayout() { unsigned j, k; - size_t opts = 0; - QFormLayout *form = NULL; - settings_t *settings = config_get_ptr(); - bool has_core_options = retroarch_ctl(RARCH_CTL_HAS_CORE_OPTIONS, NULL); + QFormLayout *form = NULL; + settings_t *settings = config_get_ptr(); + runloop_state_t *runloop_st = runloop_state_get_ptr(); + bool has_core_options = (runloop_st->core_options != NULL); + size_t opts = (runloop_st->core_options) ? runloop_st->core_options->size : 0; clearLayout(); if (has_core_options) { - retroarch_ctl(RARCH_CTL_GET_CORE_OPTION_SIZE, &opts); + core_option_manager_t *coreopts = NULL; - if (opts) + form = new QFormLayout(); + + if (settings->bools.game_specific_options) { - core_option_manager_t *coreopts = NULL; + QString contentLabel; + QString label; + rarch_system_info_t *system = &runloop_st->system; - form = new QFormLayout(); + /* TODO/FIXME - why have this check here? system is not used */ + if (system) + contentLabel = QFileInfo(path_get(RARCH_PATH_BASENAME)).completeBaseName(); - if (settings->bools.game_specific_options) + if (!contentLabel.isEmpty()) { - QString contentLabel; - QString label; - rarch_system_info_t *system = &runloop_state_get_ptr()->system; + uint32_t flags = runloop_st->flags; + if (flags & RUNLOOP_FLAG_GAME_OPTIONS_ACTIVE) + label = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE); + else + label = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE); - /* TODO/FIXME - why have this check here? system is not used */ - if (system) - contentLabel = QFileInfo(path_get(RARCH_PATH_BASENAME)).completeBaseName(); - - if (!contentLabel.isEmpty()) + if (!label.isEmpty()) { - uint32_t flags = runloop_get_flags(); - if (flags & RUNLOOP_FLAG_GAME_OPTIONS_ACTIVE) - label = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_IN_USE); - else - label = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_OPTIONS_CREATE); + QHBoxLayout *gameOptionsLayout = new QHBoxLayout(); + QPushButton *button = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_SAVE), this); - if (!label.isEmpty()) - { - QHBoxLayout *gameOptionsLayout = new QHBoxLayout(); - QPushButton *button = new QPushButton(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_SAVE), this); + connect(button, SIGNAL(clicked()), this, SLOT(onSaveGameSpecificOptions())); - connect(button, SIGNAL(clicked()), this, SLOT(onSaveGameSpecificOptions())); + gameOptionsLayout->addWidget(new QLabel(contentLabel, this)); + gameOptionsLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Preferred)); + gameOptionsLayout->addWidget(button); - gameOptionsLayout->addWidget(new QLabel(contentLabel, this)); - gameOptionsLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Preferred)); - gameOptionsLayout->addWidget(button); - - form->addRow(label, gameOptionsLayout); - } + form->addRow(label, gameOptionsLayout); } } + } - retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts); + retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts); - if (coreopts) + if (coreopts) + { + QToolButton *resetAllButton = new QToolButton(this); + + resetAllButton->setDefaultAction(new QAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_RESET_ALL), this)); + connect(resetAllButton, SIGNAL(clicked()), this, SLOT(onCoreOptionResetAllClicked())); + + for (j = 0; j < opts; j++) { - QToolButton *resetAllButton = new QToolButton(this); + QString desc = + core_option_manager_get_desc(coreopts, j, false); + QString val = + core_option_manager_get_val(coreopts, j); + QComboBox *combo_box = NULL; + QLabel *descLabel = NULL; + QHBoxLayout *comboLayout = NULL; + QToolButton *resetButton = NULL; + struct core_option *option = NULL; - resetAllButton->setDefaultAction(new QAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_RESET_ALL), this)); - connect(resetAllButton, SIGNAL(clicked()), this, SLOT(onCoreOptionResetAllClicked())); + if (desc.isEmpty() || !coreopts->opts) + continue; - for (j = 0; j < opts; j++) + option = static_cast(&coreopts->opts[j]); + + if (!option->vals || option->vals->size == 0) + continue; + + comboLayout = new QHBoxLayout(); + descLabel = new QLabel(desc, this); + combo_box = new QComboBox(this); + combo_box->setObjectName("coreOptionComboBox"); + resetButton = new QToolButton(this); + resetButton->setObjectName("resetButton"); + resetButton->setDefaultAction(new QAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_RESET), this)); + resetButton->setProperty("comboBox", + QVariant::fromValue(combo_box)); + + connect(resetButton, SIGNAL(clicked()), + this, SLOT(onCoreOptionResetClicked())); + + if (!string_is_empty(option->info)) { - QString desc = - core_option_manager_get_desc(coreopts, j, false); - QString val = - core_option_manager_get_val(coreopts, j); - QComboBox *combo_box = NULL; - QLabel *descLabel = NULL; - QHBoxLayout *comboLayout = NULL; - QToolButton *resetButton = NULL; - struct core_option *option = NULL; + char *new_info; + size_t option_info_len = strlen(option->info); + size_t new_info_len = option_info_len + 1; - if (desc.isEmpty() || !coreopts->opts) - continue; + if (!(new_info = (char *)malloc(new_info_len))) + return; + new_info[0] = '\0'; - option = static_cast(&coreopts->opts[j]); - - if (!option->vals || option->vals->size == 0) - continue; - - comboLayout = new QHBoxLayout(); - descLabel = new QLabel(desc, this); - combo_box = new QComboBox(this); - combo_box->setObjectName("coreOptionComboBox"); - resetButton = new QToolButton(this); - resetButton->setObjectName("resetButton"); - resetButton->setDefaultAction(new QAction(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_RESET), this)); - resetButton->setProperty("comboBox", - QVariant::fromValue(combo_box)); - - connect(resetButton, SIGNAL(clicked()), - this, SLOT(onCoreOptionResetClicked())); - - if (!string_is_empty(option->info)) - { - char *new_info; - size_t option_info_len = strlen(option->info); - size_t new_info_len = option_info_len + 1; - - if (!(new_info = (char *)malloc(new_info_len))) - return; - new_info[0] = '\0'; - - word_wrap(new_info, new_info_len, option->info, - option_info_len, 50, 100, 0); - descLabel->setToolTip(new_info); - combo_box->setToolTip(new_info); - free(new_info); - } - - for (k = 0; k < option->vals->size; k++) - combo_box->addItem(option->vals->elems[k].data, option->key); - - combo_box->setCurrentText(val); - combo_box->setProperty("default_index", - static_cast(option->default_index)); - - /* Only connect the signal after setting the default item */ - connect(combo_box, SIGNAL(currentIndexChanged(int)), - this, - SLOT(onCoreOptionComboBoxCurrentIndexChanged(int))); - - comboLayout->addWidget(combo_box); - comboLayout->addWidget(resetButton); - - form->addRow(descLabel, comboLayout); + word_wrap(new_info, new_info_len, option->info, + option_info_len, 50, 100, 0); + descLabel->setToolTip(new_info); + combo_box->setToolTip(new_info); + free(new_info); } - form->addRow(resetAllButton, new QWidget(this)); + for (k = 0; k < option->vals->size; k++) + combo_box->addItem(option->vals->elems[k].data, option->key); - m_layout->addLayout(form); + combo_box->setCurrentText(val); + combo_box->setProperty("default_index", + static_cast(option->default_index)); + + /* Only connect the signal after setting the default item */ + connect(combo_box, SIGNAL(currentIndexChanged(int)), + this, + SLOT(onCoreOptionComboBoxCurrentIndexChanged(int))); + + comboLayout->addWidget(combo_box); + comboLayout->addWidget(resetButton); + + form->addRow(descLabel, comboLayout); } + + form->addRow(resetAllButton, new QWidget(this)); + + m_layout->addLayout(form); } } diff --git a/ui/drivers/ui_qt.cpp b/ui/drivers/ui_qt.cpp index 51afe37ee0..9b370e74b6 100644 --- a/ui/drivers/ui_qt.cpp +++ b/ui/drivers/ui_qt.cpp @@ -2246,6 +2246,7 @@ QVector > MainWindow::getCoreInfo() { int i; QVector > infoList; + runloop_state_t *runloop_st = runloop_state_get_ptr(); QHash currentCore = getSelectedCore(); core_info_t *core_info = NULL; QByteArray currentCorePathArray = currentCore["core_path"].toUtf8(); @@ -2421,12 +2422,12 @@ QVector > MainWindow::getCoreInfo() firmware_info.path = core_info->path; firmware_info.directory.system = settings->paths.directory_system; - retroarch_ctl(RARCH_CTL_UNSET_MISSING_BIOS, NULL); - update_missing_firmware = core_info_list_update_missing_firmware(&firmware_info, &set_missing_firmware); if (set_missing_firmware) - retroarch_ctl(RARCH_CTL_SET_MISSING_BIOS, NULL); + runloop_st->missing_bios = true; + else + runloop_st->missing_bios = false; if (update_missing_firmware) {