From c6a0ab9792390fefa816ace846e3a76a85e8b4d5 Mon Sep 17 00:00:00 2001 From: James Rowe Date: Fri, 11 Jan 2019 21:06:34 -0700 Subject: QT Frontend: Migrate to QOpenGLWindow --- src/yuzu/bootmanager.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/yuzu/bootmanager.h') diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h index d1f37e503..d2a440d0d 100644 --- a/src/yuzu/bootmanager.h +++ b/src/yuzu/bootmanager.h @@ -7,9 +7,9 @@ #include #include #include -#include #include #include +#include #include "common/thread.h" #include "core/core.h" #include "core/frontend/emu_window.h" @@ -21,6 +21,8 @@ class QTouchEvent; class GGLWidgetInternal; class GMainWindow; class GRenderWindow; +class QSurface; +class QOpenGLContext; class EmuThread : public QThread { Q_OBJECT @@ -115,6 +117,7 @@ public: void MakeCurrent() override; void DoneCurrent() override; void PollEvents() override; + std::unique_ptr CreateSharedContext() const override; void BackupGeometry(); void RestoreGeometry(); @@ -168,6 +171,11 @@ private: QByteArray geometry; EmuThread* emu_thread; + // Context that backs the GGLWidgetInternal (and will be used by core to render) + std::unique_ptr context; + // Context that will be shared between all newly created contexts. This should never be made + // current + std::unique_ptr shared_context; /// Temporary storage of the screenshot taken QImage screenshot_image; -- cgit v1.2.3 From 9ff72ca9f2147ff41101d60fb806357825d5aa53 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Mon, 25 Mar 2019 16:41:48 -0300 Subject: bootmanager: Delete container to avoid crash on game restarting While we are at it, remove nullptr checks for deletion, since the C++ standard defines that delete does it by its own --- src/yuzu/bootmanager.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/yuzu/bootmanager.h') diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h index d2a440d0d..c2f2fe87e 100644 --- a/src/yuzu/bootmanager.h +++ b/src/yuzu/bootmanager.h @@ -166,7 +166,8 @@ private: void OnMinimalClientAreaChangeRequest( const std::pair& minimal_size) override; - GGLWidgetInternal* child; + QWidget* container = nullptr; + GGLWidgetInternal* child = nullptr; QByteArray geometry; -- cgit v1.2.3 From 9ebc27234d1f79516ea1a785c31551c26118997d Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Mon, 25 Mar 2019 17:01:11 -0300 Subject: bootmanager: Bypass input focus issues --- src/yuzu/bootmanager.h | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'src/yuzu/bootmanager.h') diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h index c2f2fe87e..288ce1572 100644 --- a/src/yuzu/bootmanager.h +++ b/src/yuzu/bootmanager.h @@ -119,24 +119,19 @@ public: void PollEvents() override; std::unique_ptr CreateSharedContext() const override; + void ForwardKeyPressEvent(QKeyEvent* event); + void ForwardKeyReleaseEvent(QKeyEvent* event); + void BackupGeometry(); void RestoreGeometry(); void restoreGeometry(const QByteArray& geometry); // overridden QByteArray saveGeometry(); // overridden - qreal windowPixelRatio() const; + qreal GetWindowPixelRatio() const; + std::pair ScaleTouch(const QPointF pos) const; void closeEvent(QCloseEvent* event) override; - - void keyPressEvent(QKeyEvent* event) override; - void keyReleaseEvent(QKeyEvent* event) override; - - void mousePressEvent(QMouseEvent* event) override; - void mouseMoveEvent(QMouseEvent* event) override; - void mouseReleaseEvent(QMouseEvent* event) override; - bool event(QEvent* event) override; - void focusOutEvent(QFocusEvent* event) override; void OnClientAreaResized(unsigned width, unsigned height); @@ -158,7 +153,6 @@ signals: void FirstFrameDisplayed(); private: - std::pair ScaleTouch(const QPointF pos) const; void TouchBeginEvent(const QTouchEvent* event); void TouchUpdateEvent(const QTouchEvent* event); void TouchEndEvent(); -- cgit v1.2.3