mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2024-11-14 05:17:40 -07:00
properly update display type across all windows
Some checks are pending
macOS / ${{ matrix.arch }} (arm64) (push) Waiting to run
macOS / ${{ matrix.arch }} (x86_64) (push) Waiting to run
macOS / Universal binary (push) Blocked by required conditions
Ubuntu / x86_64 (push) Waiting to run
Ubuntu / aarch64 (push) Waiting to run
Windows / build (push) Waiting to run
Some checks are pending
macOS / ${{ matrix.arch }} (arm64) (push) Waiting to run
macOS / ${{ matrix.arch }} (x86_64) (push) Waiting to run
macOS / Universal binary (push) Blocked by required conditions
Ubuntu / x86_64 (push) Waiting to run
Ubuntu / aarch64 (push) Waiting to run
Windows / build (push) Waiting to run
(remind me to also propagate changes across instances)
This commit is contained in:
parent
b2ae4c7dc5
commit
4ae4397547
@ -70,7 +70,7 @@ EmuThread::EmuThread(EmuInstance* inst, QObject* parent) : QThread(parent)
|
||||
|
||||
void EmuThread::attachWindow(MainWindow* window)
|
||||
{
|
||||
connect(this, SIGNAL(windowUpdate()), window->panel, SLOT(repaint()));
|
||||
//connect(this, SIGNAL(windowUpdate()), window->panel, SLOT(repaint()));
|
||||
connect(this, SIGNAL(windowTitleChange(QString)), window, SLOT(onTitleUpdate(QString)));
|
||||
connect(this, SIGNAL(windowEmuStart()), window, SLOT(onEmuStart()));
|
||||
connect(this, SIGNAL(windowEmuStop()), window, SLOT(onEmuStop()));
|
||||
@ -89,7 +89,7 @@ void EmuThread::attachWindow(MainWindow* window)
|
||||
|
||||
void EmuThread::detachWindow(MainWindow* window)
|
||||
{
|
||||
disconnect(this, SIGNAL(windowUpdate()), window->panel, SLOT(repaint()));
|
||||
//disconnect(this, SIGNAL(windowUpdate()), window->panel, SLOT(repaint()));
|
||||
disconnect(this, SIGNAL(windowTitleChange(QString)), window, SLOT(onTitleUpdate(QString)));
|
||||
disconnect(this, SIGNAL(windowEmuStart()), window, SLOT(onEmuStart()));
|
||||
disconnect(this, SIGNAL(windowEmuStop()), window, SLOT(onEmuStop()));
|
||||
|
@ -701,6 +701,7 @@ MainWindow::MainWindow(int id, EmuInstance* inst, QWidget* parent) :
|
||||
}
|
||||
show();
|
||||
|
||||
panel = nullptr;
|
||||
createScreenPanel();
|
||||
|
||||
if (hasMenu)
|
||||
@ -827,6 +828,9 @@ void MainWindow::closeEvent(QCloseEvent* event)
|
||||
|
||||
void MainWindow::createScreenPanel()
|
||||
{
|
||||
if (panel) delete panel;
|
||||
panel = nullptr;
|
||||
|
||||
hasOGL = globalCfg.GetBool("Screen.UseGL") ||
|
||||
(globalCfg.GetInt("3D.Renderer") != renderer3D_Software);
|
||||
|
||||
@ -852,6 +856,8 @@ void MainWindow::createScreenPanel()
|
||||
actScreenFiltering->setEnabled(hasOGL);
|
||||
panel->osdSetEnabled(showOSD);
|
||||
|
||||
connect(emuThread, SIGNAL(windowUpdate()), panel, SLOT(repaint()));
|
||||
|
||||
connect(this, SIGNAL(screenLayoutChange()), panel, SLOT(onScreenLayoutChanged()));
|
||||
emit screenLayoutChange();
|
||||
}
|
||||
@ -2115,14 +2121,17 @@ void MainWindow::onEmuReset()
|
||||
|
||||
void MainWindow::onUpdateVideoSettings(bool glchange)
|
||||
{
|
||||
MainWindow* parentwin = (MainWindow*)parentWidget();
|
||||
if (parentwin)
|
||||
return parentwin->onUpdateVideoSettings(glchange);
|
||||
|
||||
bool hadOGL = hasOGL;
|
||||
if (glchange)
|
||||
{
|
||||
emuThread->emuPause();
|
||||
if (hasOGL) emuThread->deinitContext(windowID);
|
||||
if (hadOGL) emuThread->deinitContext(windowID);
|
||||
|
||||
delete panel;
|
||||
createScreenPanel();
|
||||
connect(emuThread, SIGNAL(windowUpdate()), panel, SLOT(repaint()));
|
||||
}
|
||||
|
||||
emuThread->updateVideoSettings();
|
||||
@ -2130,6 +2139,15 @@ void MainWindow::onUpdateVideoSettings(bool glchange)
|
||||
if (glchange)
|
||||
{
|
||||
if (hasOGL) emuThread->initContext(windowID);
|
||||
|
||||
auto childwins = findChildren<MainWindow*>(Qt::FindDirectChildrenOnly);
|
||||
for (auto child : childwins)
|
||||
{
|
||||
if (hadOGL) emuThread->deinitContext(child->windowID);
|
||||
child->createScreenPanel();
|
||||
if (hasOGL) emuThread->initContext(child->windowID);
|
||||
}
|
||||
|
||||
emuThread->emuUnpause();
|
||||
}
|
||||
}
|
||||
|
@ -110,6 +110,7 @@ public:
|
||||
|
||||
EmuInstance* getEmuInstance() { return emuInstance; }
|
||||
Config::Table& getWindowConfig() { return windowCfg; }
|
||||
int getID() { return windowID; }
|
||||
|
||||
bool winHasMenu() { return hasMenu; }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user