summaryrefslogtreecommitdiff
blob: ef1697a8395aec0571f5ea21c688ea9219a79438 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From bbbb160f30a394655cff9398d17961142388b0f2 Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk>
Date: Wed, 17 Nov 2021 15:20:08 +0000
Subject: [PATCH] Only create window handles for actual windows

winId() creates a platform window for the given widget. This makes sense
for the topmost widget in a tree, we can't assume the parent widget is
the topmost widget.

Doing this on XCB is confusing and wrong, but apparently harmless. Doing
this on wayland causes issues as we promote the parent window to a
subsurface but never show that window leaving things in a bizarre
corrupt state that leads to content not updating.

BUG: 445196
---
 gstreamer/videowidget.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gstreamer/videowidget.cpp b/gstreamer/videowidget.cpp
index bd27b21f..83fa9b9e 100644
--- a/gstreamer/videowidget.cpp
+++ b/gstreamer/videowidget.cpp
@@ -158,7 +158,7 @@ void VideoWidget::setupVideoBin()
                 gst_object_unref(videopad);
                 QWidget *parentWidget = qobject_cast<QWidget*>(parent());
                 if (parentWidget) {
-                    parentWidget->winId();  // Due to some existing issues with alien in 4.4,
+                    parentWidget->window()->winId();  // Due to some existing issues with alien in 4.4,
                                             // we must currently force the creation of a parent widget.
                 }
                 m_isValid = true; //initialization ok, accept input
@@ -171,8 +171,8 @@ void VideoWidget::setupVideoBin()
         gst_object_unref(videopad);
         QWidget *parentWidget = qobject_cast<QWidget*>(parent());
         if (parentWidget) {
-            parentWidget->winId();  // Due to some existing issues with alien in 4.4,
-                                    // we must currently force the creation of a parent widget.
+            parentWidget->window()->winId();  // Due to some existing issues with alien in 4.4,
+                                    // we must currently force the creation of a parent widget's window
         }
         m_isValid = true; //initialization ok, accept input
     }
-- 
GitLab