Merge pull request #14544 from jordan-woyak/gba-always-on-thread
HW/GBACore: Make GBAs always run on dedicated threads in preparation for future improvements.
This commit is contained in:
-1
@@ -145,7 +145,6 @@ enum class BooleanSetting(
|
|||||||
"EnablePlayTimeTracking",
|
"EnablePlayTimeTracking",
|
||||||
true
|
true
|
||||||
),
|
),
|
||||||
MAIN_GBA_THREADS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GBA, "Threads", true),
|
|
||||||
MAIN_EXPAND_TO_CUTOUT_AREA(
|
MAIN_EXPAND_TO_CUTOUT_AREA(
|
||||||
Settings.FILE_DOLPHIN,
|
Settings.FILE_DOLPHIN,
|
||||||
Settings.SECTION_INI_INTERFACE,
|
Settings.SECTION_INI_INTERFACE,
|
||||||
|
|||||||
-8
@@ -704,14 +704,6 @@ class SettingsFragmentPresenter(
|
|||||||
)
|
)
|
||||||
|
|
||||||
sl.add(HeaderSetting(context, R.string.gba_settings, 0))
|
sl.add(HeaderSetting(context, R.string.gba_settings, 0))
|
||||||
sl.add(
|
|
||||||
SwitchSetting(
|
|
||||||
context,
|
|
||||||
BooleanSetting.MAIN_GBA_THREADS,
|
|
||||||
R.string.gba_threads,
|
|
||||||
0,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
sl.add(
|
sl.add(
|
||||||
FilePicker(
|
FilePicker(
|
||||||
context,
|
context,
|
||||||
|
|||||||
@@ -86,7 +86,6 @@
|
|||||||
<string name="slot_b_device">GameCube Slot B Device</string>
|
<string name="slot_b_device">GameCube Slot B Device</string>
|
||||||
<string name="serial_port_1_device">GameCube Serial Port 1 Device</string>
|
<string name="serial_port_1_device">GameCube Serial Port 1 Device</string>
|
||||||
<string name="gba_settings">GBA Settings</string>
|
<string name="gba_settings">GBA Settings</string>
|
||||||
<string name="gba_threads">Run GBA Cores in Dedicated Threads</string>
|
|
||||||
<string name="gba_bios_path">BIOS</string>
|
<string name="gba_bios_path">BIOS</string>
|
||||||
<string name="gb_player_rom">Game Boy Player ROM</string>
|
<string name="gb_player_rom">Game Boy Player ROM</string>
|
||||||
<string name="gba_saves_path">Saves</string>
|
<string name="gba_saves_path">Saves</string>
|
||||||
|
|||||||
@@ -407,7 +407,6 @@ const std::array<Info<std::string>, 5> MAIN_GBA_ROM_PATHS{
|
|||||||
};
|
};
|
||||||
const Info<std::string> MAIN_GBA_SAVES_PATH{{System::Main, "GBA", "SavesPath"}, ""};
|
const Info<std::string> MAIN_GBA_SAVES_PATH{{System::Main, "GBA", "SavesPath"}, ""};
|
||||||
const Info<bool> MAIN_GBA_SAVES_IN_ROM_PATH{{System::Main, "GBA", "SavesInRomPath"}, false};
|
const Info<bool> MAIN_GBA_SAVES_IN_ROM_PATH{{System::Main, "GBA", "SavesInRomPath"}, false};
|
||||||
const Info<bool> MAIN_GBA_THREADS{{System::Main, "GBA", "Threads"}, true};
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Main.Network
|
// Main.Network
|
||||||
|
|||||||
@@ -227,7 +227,6 @@ extern const Info<std::string> MAIN_GBA_BIOS_PATH;
|
|||||||
extern const std::array<Info<std::string>, 5> MAIN_GBA_ROM_PATHS;
|
extern const std::array<Info<std::string>, 5> MAIN_GBA_ROM_PATHS;
|
||||||
extern const Info<std::string> MAIN_GBA_SAVES_PATH;
|
extern const Info<std::string> MAIN_GBA_SAVES_PATH;
|
||||||
extern const Info<bool> MAIN_GBA_SAVES_IN_ROM_PATH;
|
extern const Info<bool> MAIN_GBA_SAVES_IN_ROM_PATH;
|
||||||
extern const Info<bool> MAIN_GBA_THREADS;
|
|
||||||
|
|
||||||
static constexpr std::size_t GBPLAYER_GBA_INDEX = 4;
|
static constexpr std::size_t GBPLAYER_GBA_INDEX = 4;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -264,12 +264,8 @@ bool Core::Start(u64 gc_ticks)
|
|||||||
// Notify the host and handle a dimension change if that happened after reset()
|
// Notify the host and handle a dimension change if that happened after reset()
|
||||||
SetVideoBuffer();
|
SetVideoBuffer();
|
||||||
|
|
||||||
if (Config::Get(Config::MAIN_GBA_THREADS))
|
m_event_thread.Reset(fmt::format("GBA{}", m_device_number + 1),
|
||||||
{
|
std::bind_front(&Core::HandleEvent, this));
|
||||||
m_event_thread.Reset(fmt::format("GBA{}", m_device_number + 1),
|
|
||||||
std::bind_front(&Core::HandleEvent, this));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -550,10 +546,7 @@ void Core::Flush()
|
|||||||
|
|
||||||
void Core::PushEvent(SyncEvent event)
|
void Core::PushEvent(SyncEvent event)
|
||||||
{
|
{
|
||||||
if (m_event_thread.IsRunning())
|
m_event_thread.Push(event);
|
||||||
m_event_thread.Push(event);
|
|
||||||
else
|
|
||||||
HandleEvent(event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::HandleEvent(SyncEvent event)
|
void Core::HandleEvent(SyncEvent event)
|
||||||
|
|||||||
@@ -204,11 +204,6 @@ void GameCubePane::CreateWidgets()
|
|||||||
gba_box->setLayout(gba_layout);
|
gba_box->setLayout(gba_layout);
|
||||||
int gba_row = 0;
|
int gba_row = 0;
|
||||||
|
|
||||||
m_gba_threads =
|
|
||||||
new ConfigBool(tr("Run GBA Cores in Dedicated Threads"), Config::MAIN_GBA_THREADS);
|
|
||||||
gba_layout->addWidget(m_gba_threads, gba_row, 0, 1, -1);
|
|
||||||
gba_row++;
|
|
||||||
|
|
||||||
m_gba_bios_edit = new ConfigUserPath(F_GBABIOS_IDX, Config::MAIN_GBA_BIOS_PATH);
|
m_gba_bios_edit = new ConfigUserPath(F_GBABIOS_IDX, Config::MAIN_GBA_BIOS_PATH);
|
||||||
m_gba_browse_bios = new NonDefaultQPushButton(QStringLiteral("..."));
|
m_gba_browse_bios = new NonDefaultQPushButton(QStringLiteral("..."));
|
||||||
gba_layout->addWidget(new QLabel(tr("BIOS:")), gba_row, 0);
|
gba_layout->addWidget(new QLabel(tr("BIOS:")), gba_row, 0);
|
||||||
@@ -307,7 +302,6 @@ void GameCubePane::OnEmulationStateChanged()
|
|||||||
{
|
{
|
||||||
#ifdef HAS_LIBMGBA
|
#ifdef HAS_LIBMGBA
|
||||||
bool gba_enabled = !NetPlay::IsNetPlayRunning();
|
bool gba_enabled = !NetPlay::IsNetPlayRunning();
|
||||||
m_gba_threads->setEnabled(gba_enabled);
|
|
||||||
m_gba_bios_edit->setEnabled(gba_enabled);
|
m_gba_bios_edit->setEnabled(gba_enabled);
|
||||||
m_gba_browse_bios->setEnabled(gba_enabled);
|
m_gba_browse_bios->setEnabled(gba_enabled);
|
||||||
m_gba_save_rom_path->setEnabled(gba_enabled);
|
m_gba_save_rom_path->setEnabled(gba_enabled);
|
||||||
|
|||||||
@@ -81,7 +81,6 @@ private:
|
|||||||
Common::EnumMap<QLabel*, ExpansionInterface::MAX_MEMCARD_SLOT> m_gci_override_labels;
|
Common::EnumMap<QLabel*, ExpansionInterface::MAX_MEMCARD_SLOT> m_gci_override_labels;
|
||||||
Common::EnumMap<QLineEdit*, ExpansionInterface::MAX_MEMCARD_SLOT> m_gci_paths;
|
Common::EnumMap<QLineEdit*, ExpansionInterface::MAX_MEMCARD_SLOT> m_gci_paths;
|
||||||
|
|
||||||
ConfigBool* m_gba_threads;
|
|
||||||
ConfigBool* m_gba_save_rom_path;
|
ConfigBool* m_gba_save_rom_path;
|
||||||
QPushButton* m_gba_browse_bios;
|
QPushButton* m_gba_browse_bios;
|
||||||
ConfigUserPath* m_gba_bios_edit;
|
ConfigUserPath* m_gba_bios_edit;
|
||||||
|
|||||||
Reference in New Issue
Block a user