mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 09:09:52 -06:00
Use structs for config callback IDs
This way you can't mix up regular config callback IDs and CPU thread config callback IDs. (It would be rather bad if you did!)
This commit is contained in:
@ -13,7 +13,10 @@ namespace
|
||||
{
|
||||
std::atomic<bool> s_should_run_callbacks = false;
|
||||
|
||||
static std::vector<std::pair<size_t, Config::ConfigChangedCallback>> s_callbacks;
|
||||
static std::vector<
|
||||
std::pair<CPUThreadConfigCallback::ConfigChangedCallbackID, Config::ConfigChangedCallback>>
|
||||
s_callbacks;
|
||||
|
||||
static size_t s_next_callback_id = 0;
|
||||
|
||||
void RunCallbacks()
|
||||
@ -39,19 +42,19 @@ void OnConfigChanged()
|
||||
|
||||
namespace CPUThreadConfigCallback
|
||||
{
|
||||
size_t AddConfigChangedCallback(Config::ConfigChangedCallback func)
|
||||
ConfigChangedCallbackID AddConfigChangedCallback(Config::ConfigChangedCallback func)
|
||||
{
|
||||
DEBUG_ASSERT(Core::IsCPUThread());
|
||||
|
||||
static size_t s_config_changed_callback_id = Config::AddConfigChangedCallback(&OnConfigChanged);
|
||||
static auto s_config_changed_callback_id = Config::AddConfigChangedCallback(&OnConfigChanged);
|
||||
|
||||
const size_t callback_id = s_next_callback_id;
|
||||
const ConfigChangedCallbackID callback_id{s_next_callback_id};
|
||||
++s_next_callback_id;
|
||||
s_callbacks.emplace_back(std::make_pair(callback_id, std::move(func)));
|
||||
return callback_id;
|
||||
}
|
||||
|
||||
void RemoveConfigChangedCallback(size_t callback_id)
|
||||
void RemoveConfigChangedCallback(ConfigChangedCallbackID callback_id)
|
||||
{
|
||||
DEBUG_ASSERT(Core::IsCPUThread());
|
||||
|
||||
|
@ -11,10 +11,18 @@
|
||||
|
||||
namespace CPUThreadConfigCallback
|
||||
{
|
||||
// returns an ID that can be passed to RemoveConfigChangedCallback()
|
||||
size_t AddConfigChangedCallback(Config::ConfigChangedCallback func);
|
||||
struct ConfigChangedCallbackID
|
||||
{
|
||||
size_t id = -1;
|
||||
|
||||
void RemoveConfigChangedCallback(size_t callback_id);
|
||||
bool operator==(const ConfigChangedCallbackID&) const = default;
|
||||
bool operator!=(const ConfigChangedCallbackID&) const = default;
|
||||
};
|
||||
|
||||
// returns an ID that can be passed to RemoveConfigChangedCallback()
|
||||
ConfigChangedCallbackID AddConfigChangedCallback(Config::ConfigChangedCallback func);
|
||||
|
||||
void RemoveConfigChangedCallback(ConfigChangedCallbackID callback_id);
|
||||
|
||||
// Should be called regularly from the CPU thread
|
||||
void CheckForConfigChanges();
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/SPSCQueue.h"
|
||||
#include "Core/CPUThreadConfigCallback.h"
|
||||
|
||||
class PointerWrap;
|
||||
|
||||
@ -182,7 +183,7 @@ private:
|
||||
|
||||
EventType* m_ev_lost = nullptr;
|
||||
|
||||
size_t m_registered_config_callback_id = 0;
|
||||
CPUThreadConfigCallback::ConfigChangedCallbackID m_registered_config_callback_id;
|
||||
float m_config_oc_factor = 0.0f;
|
||||
float m_config_oc_inv_factor = 0.0f;
|
||||
bool m_config_sync_on_skip_idle = false;
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "Common/Assert.h"
|
||||
#include "Common/Config/Config.h"
|
||||
#include "Core/FifoPlayer/FifoDataFile.h"
|
||||
#include "Core/PowerPC/CPUCoreBase.h"
|
||||
#include "VideoCommon/CPMemory.h"
|
||||
@ -189,7 +190,7 @@ private:
|
||||
|
||||
CallbackFunc m_FileLoadedCb = nullptr;
|
||||
CallbackFunc m_FrameWrittenCb = nullptr;
|
||||
size_t m_config_changed_callback_id;
|
||||
Config::ConfigChangedCallbackID m_config_changed_callback_id;
|
||||
|
||||
std::unique_ptr<FifoDataFile> m_File;
|
||||
|
||||
|
@ -30,7 +30,7 @@ static std::array<u8, MAX_BBMOTES> s_last_connect_request_counter;
|
||||
namespace
|
||||
{
|
||||
static std::array<std::atomic<WiimoteSource>, MAX_BBMOTES> s_wiimote_sources;
|
||||
static std::optional<size_t> s_config_callback_id = std::nullopt;
|
||||
static std::optional<Config::ConfigChangedCallbackID> s_config_callback_id = std::nullopt;
|
||||
|
||||
WiimoteSource GetSource(unsigned int index)
|
||||
{
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include <string>
|
||||
|
||||
#include "Common/Common.h"
|
||||
#include "Common/Config/Config.h"
|
||||
|
||||
#include "Core/HW/WiimoteCommon/WiimoteReport.h"
|
||||
|
||||
@ -343,6 +344,6 @@ private:
|
||||
|
||||
IMUCursorState m_imu_cursor_state;
|
||||
|
||||
size_t m_config_changed_callback_id;
|
||||
Config::ConfigChangedCallbackID m_config_changed_callback_id;
|
||||
};
|
||||
} // namespace WiimoteEmu
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "Common/Common.h"
|
||||
#include "Common/Config/Config.h"
|
||||
#include "Common/Event.h"
|
||||
#include "Common/Flag.h"
|
||||
#include "Common/SPSCQueue.h"
|
||||
@ -157,7 +158,7 @@ private:
|
||||
bool m_speaker_enabled_in_dolphin_config = false;
|
||||
int m_balance_board_dump_port = 0;
|
||||
|
||||
size_t m_config_changed_callback_id;
|
||||
Config::ConfigChangedCallbackID m_config_changed_callback_id;
|
||||
};
|
||||
|
||||
class WiimoteScannerBackend
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/IOFile.h"
|
||||
#include "Core/CPUThreadConfigCallback.h"
|
||||
#include "Core/IOS/Device.h"
|
||||
#include "Core/IOS/IOS.h"
|
||||
|
||||
@ -166,7 +167,7 @@ private:
|
||||
|
||||
File::IOFile m_card;
|
||||
|
||||
size_t m_config_callback_id;
|
||||
CPUThreadConfigCallback::ConfigChangedCallbackID m_config_callback_id;
|
||||
bool m_sd_card_inserted = false;
|
||||
};
|
||||
} // namespace IOS::HLE
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "Common/BitSet.h"
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/x64Emitter.h"
|
||||
#include "Core/CPUThreadConfigCallback.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "Core/MachineContext.h"
|
||||
#include "Core/PowerPC/CPUCoreBase.h"
|
||||
@ -129,7 +130,7 @@ protected:
|
||||
PPCAnalyst::CodeBuffer m_code_buffer;
|
||||
PPCAnalyst::PPCAnalyzer analyzer;
|
||||
|
||||
size_t m_registered_config_callback_id;
|
||||
CPUThreadConfigCallback::ConfigChangedCallbackID m_registered_config_callback_id;
|
||||
bool bJITOff = false;
|
||||
bool bJITLoadStoreOff = false;
|
||||
bool bJITLoadStorelXzOff = false;
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/Config/Config.h"
|
||||
|
||||
class PointerWrap;
|
||||
|
||||
@ -61,7 +62,7 @@ struct Cache
|
||||
|
||||
struct InstructionCache : public Cache
|
||||
{
|
||||
std::optional<size_t> m_config_callback_id = std::nullopt;
|
||||
std::optional<Config::ConfigChangedCallbackID> m_config_callback_id = std::nullopt;
|
||||
|
||||
bool m_disable_icache = false;
|
||||
|
||||
|
Reference in New Issue
Block a user