resurrect some of the OSD, properly dispatch it to all windows

This commit is contained in:
Arisotura 2024-05-24 19:29:58 +02:00
parent a7bce8e233
commit f0b81a9050
5 changed files with 40 additions and 27 deletions

View File

@ -134,6 +134,25 @@ void EmuInstance::createWindow()
}
void EmuInstance::osdAddMessage(unsigned int color, const char* fmt, ...)
{
if (fmt == nullptr)
return;
char msg[256];
va_list args;
va_start(args, fmt);
vsnprintf(msg, 256, fmt, args);
va_end(args);
for (int i = 0; i < kMaxWindows; i++)
{
if (windowList[i])
windowList[i]->osdAddMessage(color, msg);
}
}
int EmuInstance::lastSep(const std::string& path)
{
int i = path.length() - 1;

View File

@ -86,6 +86,8 @@ public:
void createWindow();
void osdAddMessage(unsigned int color, const char* fmt, ...);
// return: empty string = setup OK, non-empty = error message
QString verifySetup();

View File

@ -216,7 +216,7 @@ void EmuThread::run()
int level = emuInstance->nds->GBACartSlot.SetInput(GBACart::Input_SolarSensorDown, true);
if (level != -1)
{
//mainWindow->osdAddMessage(0, "Solar sensor level: %d", level);
emuInstance->osdAddMessage(0, "Solar sensor level: %d", level);
}
}
if (emuInstance->hotkeyPressed(HK_SolarSensorIncrease))
@ -224,7 +224,7 @@ void EmuThread::run()
int level = emuInstance->nds->GBACartSlot.SetInput(GBACart::Input_SolarSensorUp, true);
if (level != -1)
{
//mainWindow->osdAddMessage(0, "Solar sensor level: %d", level);
emuInstance->osdAddMessage(0, "Solar sensor level: %d", level);
}
}
@ -300,7 +300,7 @@ void EmuThread::run()
{
bool lid = !emuInstance->nds->IsLidClosed();
emuInstance->nds->SetLidClosed(lid);
//mainWindow->osdAddMessage(0, lid ? "Lid closed" : "Lid opened");
emuInstance->osdAddMessage(0, lid ? "Lid closed" : "Lid opened");
}
// microphone input
@ -648,5 +648,5 @@ void EmuThread::compileShaders()
emuInstance->nds->GPU.GetRenderer3D().ShaderCompileStep(currentShader, shadersCount);
} while (emuInstance->nds->GPU.GetRenderer3D().NeedsShaderCompile() &&
(SDL_GetPerformanceCounter() - startTime) * perfCountsSec < 1.0 / 6.0);
mainWindow->osdAddMessage(0, "Compiling shader %d/%d", currentShader+1, shadersCount);
emuInstance->osdAddMessage(0, "Compiling shader %d/%d", currentShader+1, shadersCount);
}

View File

@ -709,17 +709,9 @@ void MainWindow::attachEmuThread(EmuThread* thread)
emuThread = thread;
}
void MainWindow::osdAddMessage(unsigned int color, const char* fmt, ...)
void MainWindow::osdAddMessage(unsigned int color, const char* msg)
{
if (fmt == nullptr)
return;
char msg[256];
va_list args;
va_start(args, fmt);
vsnprintf(msg, 256, fmt, args);
va_end(args);
if (!showOSD) return;
panel->osdAddMessage(color, msg);
}
@ -1454,14 +1446,14 @@ void MainWindow::onSaveState()
if (emuInstance->saveState(filename))
{
if (slot > 0) osdAddMessage(0, "State saved to slot %d", slot);
else osdAddMessage(0, "State saved to file");
if (slot > 0) emuInstance->osdAddMessage(0, "State saved to slot %d", slot);
else emuInstance->osdAddMessage(0, "State saved to file");
actLoadState[slot]->setEnabled(true);
}
else
{
osdAddMessage(0xFFA0A0, "State save failed");
emuInstance->osdAddMessage(0xFFA0A0, "State save failed");
}
emuThread->emuUnpause();
@ -1496,8 +1488,8 @@ void MainWindow::onLoadState()
if (!Platform::FileExists(filename))
{
if (slot > 0) osdAddMessage(0xFFA0A0, "State slot %d is empty", slot);
else osdAddMessage(0xFFA0A0, "State file does not exist");
if (slot > 0) emuInstance->osdAddMessage(0xFFA0A0, "State slot %d is empty", slot);
else emuInstance->osdAddMessage(0xFFA0A0, "State file does not exist");
emuThread->emuUnpause();
return;
@ -1505,14 +1497,14 @@ void MainWindow::onLoadState()
if (emuInstance->loadState(filename))
{
if (slot > 0) osdAddMessage(0, "State loaded from slot %d", slot);
else osdAddMessage(0, "State loaded from file");
if (slot > 0) emuInstance->osdAddMessage(0, "State loaded from slot %d", slot);
else emuInstance->osdAddMessage(0, "State loaded from file");
actUndoStateLoad->setEnabled(true);
}
else
{
osdAddMessage(0xFFA0A0, "State load failed");
emuInstance->osdAddMessage(0xFFA0A0, "State load failed");
}
emuThread->emuUnpause();
@ -1524,7 +1516,7 @@ void MainWindow::onUndoStateLoad()
emuInstance->undoStateLoad();
emuThread->emuUnpause();
osdAddMessage(0, "State load undone");
emuInstance->osdAddMessage(0, "State load undone");
}
void MainWindow::onImportSavefile()
@ -1592,13 +1584,13 @@ void MainWindow::onPause(bool checked)
if (checked)
{
emuThread->emuPause();
osdAddMessage(0, "Paused");
emuInstance->osdAddMessage(0, "Paused");
pausedManually = true;
}
else
{
emuThread->emuUnpause();
osdAddMessage(0, "Resumed");
emuInstance->osdAddMessage(0, "Resumed");
pausedManually = false;
}
}
@ -1613,7 +1605,7 @@ void MainWindow::onReset()
emuInstance->reset();
osdAddMessage(0, "Reset");
emuInstance->osdAddMessage(0, "Reset");
emuThread->emuRun();
}

View File

@ -124,7 +124,7 @@ public:
void onAppStateChanged(Qt::ApplicationState state);
void osdAddMessage(unsigned int color, const char* fmt, ...);
void osdAddMessage(unsigned int color, const char* msg);
protected:
void resizeEvent(QResizeEvent* event) override;