|
|
@ -1,12 +1,8 @@ |
|
|
#include <QApplication>
|
|
|
#include <QApplication>
|
|
|
#include <QHBoxLayout>
|
|
|
#include <QHBoxLayout>
|
|
|
#include <QKeyEvent>
|
|
|
#include <QKeyEvent>
|
|
|
|
|
|
|
|
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
|
|
|
|
|
// Required for screen DPI information
|
|
|
|
|
|
#include <QScreen>
|
|
|
#include <QScreen>
|
|
|
#include <QWindow>
|
|
|
#include <QWindow>
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#include "common/microprofile.h"
|
|
|
#include "common/microprofile.h"
|
|
|
#include "common/scm_rev.h"
|
|
|
#include "common/scm_rev.h"
|
|
|
@ -120,15 +116,13 @@ GRenderWindow::~GRenderWindow() { |
|
|
|
|
|
|
|
|
void GRenderWindow::moveContext() { |
|
|
void GRenderWindow::moveContext() { |
|
|
DoneCurrent(); |
|
|
DoneCurrent(); |
|
|
// We need to move GL context to the swapping thread in Qt5
|
|
|
|
|
|
#if QT_VERSION > QT_VERSION_CHECK(5, 0, 0)
|
|
|
|
|
|
|
|
|
|
|
|
// If the thread started running, move the GL Context to the new thread. Otherwise, move it
|
|
|
// If the thread started running, move the GL Context to the new thread. Otherwise, move it
|
|
|
// back.
|
|
|
// back.
|
|
|
auto thread = (QThread::currentThread() == qApp->thread() && emu_thread != nullptr) |
|
|
auto thread = (QThread::currentThread() == qApp->thread() && emu_thread != nullptr) |
|
|
? emu_thread |
|
|
? emu_thread |
|
|
: qApp->thread(); |
|
|
: qApp->thread(); |
|
|
child->context()->moveToThread(thread); |
|
|
child->context()->moveToThread(thread); |
|
|
#endif
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void GRenderWindow::SwapBuffers() { |
|
|
void GRenderWindow::SwapBuffers() { |
|
|
@ -191,12 +185,8 @@ QByteArray GRenderWindow::saveGeometry() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
qreal GRenderWindow::windowPixelRatio() { |
|
|
qreal GRenderWindow::windowPixelRatio() { |
|
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
|
|
|
|
|
// windowHandle() might not be accessible until the window is displayed to screen.
|
|
|
// windowHandle() might not be accessible until the window is displayed to screen.
|
|
|
return windowHandle() ? windowHandle()->screen()->devicePixelRatio() : 1.0f; |
|
|
return windowHandle() ? windowHandle()->screen()->devicePixelRatio() : 1.0f; |
|
|
#else
|
|
|
|
|
|
return 1.0f; |
|
|
|
|
|
#endif
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void GRenderWindow::closeEvent(QCloseEvent* event) { |
|
|
void GRenderWindow::closeEvent(QCloseEvent* event) { |
|
|
@ -299,9 +289,7 @@ void GRenderWindow::OnEmulationStopping() { |
|
|
void GRenderWindow::showEvent(QShowEvent* event) { |
|
|
void GRenderWindow::showEvent(QShowEvent* event) { |
|
|
QWidget::showEvent(event); |
|
|
QWidget::showEvent(event); |
|
|
|
|
|
|
|
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
|
|
|
|
|
// windowHandle() is not initialized until the Window is shown, so we connect it here.
|
|
|
// windowHandle() is not initialized until the Window is shown, so we connect it here.
|
|
|
connect(this->windowHandle(), SIGNAL(screenChanged(QScreen*)), this, |
|
|
connect(this->windowHandle(), SIGNAL(screenChanged(QScreen*)), this, |
|
|
SLOT(OnFramebufferSizeChanged()), Qt::UniqueConnection); |
|
|
SLOT(OnFramebufferSizeChanged()), Qt::UniqueConnection); |
|
|
#endif
|
|
|
|
|
|
} |
|
|
} |