Merge pull request #13892 from JosJuice/retroachievements-hookableevent

AchievementManager: Use HookableEvent instead of std::function callbacks
This commit is contained in:
JMC47
2025-09-16 14:48:43 -04:00
committed by GitHub
6 changed files with 39 additions and 44 deletions
@@ -30,12 +30,16 @@ AchievementsWindow::AchievementsWindow(QWidget* parent) : QDialog(parent)
CreateMainLayout();
ConnectWidgets();
AchievementManager::GetInstance().SetUpdateCallback(
m_event_hook = AchievementManager::UpdateEvent::Register(
[this](AchievementManager::UpdatedItems updated_items) {
QueueOnObject(this, [this, updated_items = std::move(updated_items)] {
AchievementsWindow::UpdateData(std::move(updated_items));
});
});
},
"AchievementsWindow");
UpdateData(AchievementManager::UpdatedItems{.all = true});
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
[this] { m_settings_widget->UpdateData(RC_OK); });
}
@@ -6,6 +6,7 @@
#ifdef USE_RETRO_ACHIEVEMENTS
#include <QDialog>
#include "Common/HookableEvent.h"
#include "Core/AchievementManager.h"
class AchievementHeaderWidget;
@@ -35,6 +36,8 @@ private:
AchievementProgressWidget* m_progress_widget;
AchievementLeaderboardWidget* m_leaderboard_widget;
QDialogButtonBox* m_button_box;
Common::EventHook m_event_hook;
};
#endif // USE_RETRO_ACHIEVEMENTS
+2 -2
View File
@@ -294,8 +294,8 @@ void MenuBar::AddToolsMenu()
tools_menu->addAction(tr("Achievements"), this, [this] { emit ShowAchievementsWindow(); });
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
m_achievements_dev_menu = tools_menu->addMenu(tr("RetroAchievements Development"));
AchievementManager::GetInstance().SetDevMenuUpdateCallback(
[this] { QueueOnObject(this, [this] { this->UpdateAchievementDevelopmentMenu(); }); });
m_raintegration_event_hook = AchievementManager::DevMenuUpdateEvent::Register(
[this] { QueueOnObject(this, [this] { UpdateAchievementDevelopmentMenu(); }); }, "MenuBar");
m_achievements_dev_menu->menuAction()->setVisible(false);
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
tools_menu->addSeparator();
+7
View File
@@ -12,6 +12,9 @@
#include <QPointer>
#include "Common/CommonTypes.h"
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
#include "Common/HookableEvent.h"
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
class QMenu;
class ParallelProgressDialog;
@@ -299,4 +302,8 @@ private:
QAction* m_jit_register_cache_off;
bool m_game_selected = false;
#ifdef RC_CLIENT_SUPPORTS_RAINTEGRATION
Common::EventHook m_raintegration_event_hook;
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
};