diff --git a/src/drivers/Qt/ConsoleViewerGL.cpp b/src/drivers/Qt/ConsoleViewerGL.cpp index cebf9fe2..9cefd306 100644 --- a/src/drivers/Qt/ConsoleViewerGL.cpp +++ b/src/drivers/Qt/ConsoleViewerGL.cpp @@ -72,12 +72,12 @@ ConsoleViewGL_t::ConsoleViewGL_t(QWidget *parent) setMinimumHeight( 224 ); setFocusPolicy(Qt::StrongFocus); - QScreen *screen = QGuiApplication::primaryScreen(); + QScreen *screen = window()->screen(); if ( screen != NULL ) { devPixRatio = screen->devicePixelRatio(); - //printf("Ratio: %f \n", screen->devicePixelRatio() ); + //printf("GL Ratio: %f \n", screen->devicePixelRatio() ); } localBufSize = (4 * GL_NES_WIDTH) * (4 * GL_NES_HEIGHT) * sizeof(uint32_t); @@ -116,6 +116,26 @@ ConsoleViewGL_t::~ConsoleViewGL_t(void) } } +void ConsoleViewGL_t::screenChanged( QScreen *screen ) +{ + int w,h; + + devPixRatio = screen->devicePixelRatio(); + + w = (int)(devPixRatio * width() ); + h = (int)(devPixRatio * height() ); + + view_width = w; + view_height = h; + + gui_draw_area_width = w; + gui_draw_area_height = h; + + buildTextures(); + + //printf("GL Ratio: %f %ix%i\n", screen->devicePixelRatio(), w, h ); +} + int ConsoleViewGL_t::init( void ) { return 0; diff --git a/src/drivers/Qt/ConsoleViewerGL.h b/src/drivers/Qt/ConsoleViewerGL.h index 42268d3a..002fd4cc 100644 --- a/src/drivers/Qt/ConsoleViewerGL.h +++ b/src/drivers/Qt/ConsoleViewerGL.h @@ -5,6 +5,7 @@ #include +#include #include #include @@ -36,6 +37,8 @@ class ConsoleViewGL_t : public QOpenGLWidget, protected QOpenGLFunctions void getAspectXY( double &x, double &y ); double getAspectRatio(void); + void screenChanged(QScreen *scr); + protected: void initializeGL(void); void resizeGL(int w, int h); diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index 38175613..eb2cd7ca 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -221,6 +221,7 @@ consoleWin_t::consoleWin_t(QWidget *parent) // Create AVI Recording Disk Thread aviDiskThread = new AviRecordDiskThread_t(this); + connect( this->window()->windowHandle(), SIGNAL(screenChanged(QScreen*)), this, SLOT(winScreenChanged(QScreen*)) ); } consoleWin_t::~consoleWin_t(void) @@ -334,6 +335,15 @@ void consoleWin_t::videoReset(void) return; } +void consoleWin_t::winScreenChanged(QScreen *scr) +{ + //printf("Screen Changed: %p\n", scr ); + if ( viewport_GL != NULL ) + { + viewport_GL->screenChanged( scr ); + } +} + QSize consoleWin_t::calcRequiredSize(void) { QSize out( GL_NES_WIDTH, GL_NES_HEIGHT ); diff --git a/src/drivers/Qt/ConsoleWindow.h b/src/drivers/Qt/ConsoleWindow.h index 391d3ec9..a52e4080 100644 --- a/src/drivers/Qt/ConsoleWindow.h +++ b/src/drivers/Qt/ConsoleWindow.h @@ -405,6 +405,7 @@ class consoleWin_t : public QMainWindow void wavRecordStart(void); void wavRecordAsStart(void); void wavRecordStop(void); + void winScreenChanged( QScreen *scr ); };