aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/qt_sdl/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/qt_sdl/main.cpp')
-rw-r--r--src/frontend/qt_sdl/main.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp
index de71da9..78f64f6 100644
--- a/src/frontend/qt_sdl/main.cpp
+++ b/src/frontend/qt_sdl/main.cpp
@@ -43,6 +43,7 @@
#include "version.h"
#include "FrontendUtil.h"
+#include "OSD.h"
#include "NDS.h"
#include "GBACart.h"
@@ -263,7 +264,7 @@ EmuThread::EmuThread(QObject* parent) : QThread(parent)
connect(this, SIGNAL(windowEmuReset()), mainWindow->actReset, SLOT(trigger()));
connect(this, SIGNAL(screenLayoutChange()), mainWindow->panel, SLOT(onScreenLayoutChanged()));
- initOpenGL();
+ if (mainWindow->hasOGL) initOpenGL();
}
void EmuThread::initOpenGL()
@@ -709,10 +710,13 @@ ScreenPanelNative::ScreenPanelNative(QWidget* parent) : QWidget(parent)
screenTrans[1].reset();
touching = false;
+
+ OSD::Init(nullptr);
}
ScreenPanelNative::~ScreenPanelNative()
{
+ OSD::DeInit(nullptr);
}
void ScreenPanelNative::setupScreenLayout()
@@ -756,6 +760,9 @@ void ScreenPanelNative::paintEvent(QPaintEvent* event)
painter.setTransform(screenTrans[1]);
painter.drawImage(screenrc, screen[1]);
+
+ OSD::Update(nullptr);
+ OSD::DrawNative(painter);
}
void ScreenPanelNative::resizeEvent(QResizeEvent* event)
@@ -793,12 +800,16 @@ ScreenPanelGL::ScreenPanelGL(QWidget* parent) : QOpenGLWidget(parent)
format.setVersion(3, 2);
format.setProfile(QSurfaceFormat::CoreProfile);
setFormat(format);
+
+ touching = false;
}
ScreenPanelGL::~ScreenPanelGL()
{
makeCurrent();
+ OSD::DeInit(this);
+
glDeleteTextures(1, &screenTexture);
glDeleteVertexArrays(1, &screenVertexArray);
@@ -881,6 +892,8 @@ void ScreenPanelGL::initializeGL()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 192*2, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+
+ OSD::Init(this);
}
void ScreenPanelGL::paintGL()
@@ -935,6 +948,9 @@ void ScreenPanelGL::paintGL()
glDrawArrays(GL_TRIANGLES, 2*3, 2*3);
screenShader->release();
+
+ OSD::Update(this);
+ OSD::DrawGL(this, w*factor, h*factor);
}
void ScreenPanelGL::resizeEvent(QResizeEvent* event)