mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Merge pull request #6412 from GPUCode/wayland-oops
Port yuzu-emu/yuzu#7410: "Wayland fixes"
This commit is contained in:
		
						commit
						e4e9fb4aed
					
				
					 6 changed files with 52 additions and 25 deletions
				
			
		|  | @ -40,6 +40,8 @@ | |||
| #include <qpa/qplatformnativeinterface.h> | ||||
| #endif | ||||
| 
 | ||||
| static Frontend::WindowSystemType GetWindowSystemType(); | ||||
| 
 | ||||
| EmuThread::EmuThread(Frontend::GraphicsContext& core_context) : core_context(core_context) {} | ||||
| 
 | ||||
| EmuThread::~EmuThread() = default; | ||||
|  | @ -242,6 +244,9 @@ public: | |||
|         : RenderWidget(parent), is_secondary(is_secondary) { | ||||
|         setAttribute(Qt::WA_NativeWindow); | ||||
|         setAttribute(Qt::WA_PaintOnScreen); | ||||
|         if (GetWindowSystemType() == Frontend::WindowSystemType::Wayland) { | ||||
|             setAttribute(Qt::WA_DontCreateNativeAncestors); | ||||
|         } | ||||
|         windowHandle()->setSurfaceType(QWindow::OpenGLSurface); | ||||
|     } | ||||
| 
 | ||||
|  | @ -401,6 +406,7 @@ GRenderWindow::GRenderWindow(QWidget* parent_, EmuThread* emu_thread, bool is_se | |||
|     setLayout(layout); | ||||
| 
 | ||||
|     this->setMouseTracking(true); | ||||
|     strict_context_required = QGuiApplication::platformName() == QStringLiteral("wayland"); | ||||
| 
 | ||||
|     GMainWindow* parent = GetMainWindow(); | ||||
|     connect(this, &GRenderWindow::FirstFrameDisplayed, parent, &GMainWindow::OnLoadComplete); | ||||
|  | @ -660,6 +666,12 @@ void GRenderWindow::OnMinimalClientAreaChangeRequest(std::pair<u32, u32> minimal | |||
| 
 | ||||
| bool GRenderWindow::InitializeOpenGL() { | ||||
| #ifdef HAS_OPENGL | ||||
|     if (!QOpenGLContext::supportsThreadedOpenGL()) { | ||||
|         QMessageBox::warning(this, tr("OpenGL not available!"), | ||||
|                              tr("OpenGL shared contexts are not supported.")); | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     // TODO: One of these flags might be interesting: WA_OpaquePaintEvent, WA_NoBackground,
 | ||||
|     // WA_DontShowOnScreen, WA_DeleteOnClose
 | ||||
|     auto child = new OpenGLRenderWidget(this, is_secondary); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue