qml6glsink: updatePaintNode needs scene changes results to re-render item when used with graphical effects
Describe your issue
Hi and thank you for your work on the Qt6 qml6glsink GStreamer plugin! I am testing the plugin out and want to be able to use effects to manipulate how the video is rendered on the screen. However, when I add an effect like Colorize
as an example, the item in the scene graph does not re-render with updated video frames.
It appears to me that the updatePaintNode
in qt6glitem.cc
is returning a QSGNode
that does not appear to have changed, so I added a call to QSGNode::markDirty() to indicate how the scene has changed and this allows the video to render with the effect applied.
Expected Behavior
I should be able to use an effect like Colorize
to modify the video output and the video will display as normal but with the effect applied.
Observed Behavior
I use an effect like Colorize
to modify the video output and the video does not render new frames and appears to be paused. The image shown is modified with the effect, but the issue is that it does not update with new video frames.
What I do observe is that is some other part of the application causes the item to update, then a new video frame will re-render once. An example is the over effect of a button that is on top of the video and also being colorized.
Setup
-
Operating System: Ubuntu 22.04
-
Device: Computer
-
GStreamer Version: Built from source from commit 0596871b pulled on Mon Apr 8.
$ git log -1 commit 448a461a40c0d575285b0d8ecf151ae8511a174e (HEAD -> main, origin/main, origin/HEAD) Author: Seungha Yang <seungha@centricular.com> Date: Sun Apr 7 19:34:43 2024 +0900 d3d12converter: Simplify root signature build D3DX12SerializeVersionedRootSignature() helper method will translate RS 1.1 into 1.0 version if needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6557>
-
Command line: Using the
gst-env.py
script to use the version of GStreamer I built from source.
Steps to reproduce the bug
- Modify the
gst-plugins-good
subproject examplegstreamer/subprojects/gst-plugins-good/tests/examples/qt6/qmlsink/main.qlm
with this diff
diff --git a/subprojects/gst-plugins-good/tests/examples/qt6/qmlsink/main.qml b/subprojects/gst-plugins-good/tests/examples/qt6/qmlsink/main.qml
index bf182b34f0..d6625f57d8 100644
--- a/subprojects/gst-plugins-good/tests/examples/qt6/qmlsink/main.qml
+++ b/subprojects/gst-plugins-good/tests/examples/qt6/qmlsink/main.qml
@@ -2,6 +2,7 @@ import QtQuick 6.0
import QtQuick.Controls 6.0
import QtQuick.Dialogs 6.0
import QtQuick.Window 6.0
+import Qt5Compat.GraphicalEffects
import org.freedesktop.gstreamer.Qt6GLVideoItem 1.0
@@ -15,6 +16,7 @@ ApplicationWindow {
color: "black"
Item {
+ id: videoArea
anchors.fill: parent
GstGLQt6VideoItem {
@@ -56,4 +58,13 @@ ApplicationWindow {
}
}
}
+
+ Colorize {
+ anchors.fill: videoArea
+ source: videoArea
+ hue: 0.0
+ saturation: 0.5
+ lightness: -0.2
+ }
+
}
- Build the gstreamer monorepo including the
gst-plugins-good
subproject and its tests - Run the example and see that the "snow" pattern does not update
How reproducible is the bug?
This was first found in a small test application I am working on and was very easy to reproduce with the qt6/qmlsink/qml6sink
example as described above. The issue happens every time the example is run.
Screenshots if relevant
Screencast_20240411_main_not_updating.webm
Solutions you have tried
I have added a call to QSGNode::markDirty
and this resolves the issue and from reading the documentation this does look like the correct way to address the issue.
diff --git a/subprojects/gst-plugins-good/ext/qt6/qt6glitem.cc b/subprojects/gst-plugins-good/ext/qt6/qt6glitem.cc
index 99c256708e..2d1f6e0874 100644
--- a/subprojects/gst-plugins-good/ext/qt6/qt6glitem.cc
+++ b/subprojects/gst-plugins-good/ext/qt6/qt6glitem.cc
@@ -325,6 +325,7 @@ Qt6GLVideoItem::updatePaintNode(QSGNode * oldNode,
GST_TRACE ("old buffer %p was not bound yet, unreffing", old_buffer);
gst_buffer_unref (old_buffer);
} else {
+ texNode->markDirty(QSGNode::DirtyMaterial);
GstBuffer *tmp_buffer;
GST_TRACE ("old buffer %p was bound, queueing up for later", old_buffer);
Screenshot after the fix is applied
Screencast_20240411_fix_does_update_normally.webm
Related non-duplicate issues
Additional Information
I enabled trace logging for the qt6glitem.cc
to confirm that the updatePaintNode
is running even though the video does not update and I confirmed that it is.
Here is example output:
export GST_DEBUG=*:3,qtglwidget:7
0:00:00.758832505 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518021950 was bound, queueing up for later
0:00:00.758838901 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518020890 should be unbound now, unreffing
0:00:00.758850849 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x7635180210b0 is potentially unbound now
0:00:00.792158156 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:00.792189603 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518022e80 was bound, queueing up for later
0:00:00.792195929 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x7635180210b0 should be unbound now, unreffing
0:00:00.792214499 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518021950 is potentially unbound now
0:00:00.825349172 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:00.825372043 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800a380 was bound, queueing up for later
0:00:00.825378472 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518021950 should be unbound now, unreffing
0:00:00.825391131 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518022e80 is potentially unbound now
0:00:00.858655761 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:00.858677147 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800e980 was bound, queueing up for later
0:00:00.858683629 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518022e80 should be unbound now, unreffing
0:00:00.858695109 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800a380 is potentially unbound now
0:00:00.892068837 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:00.892093355 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351801e580 was bound, queueing up for later
0:00:00.892101404 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800a380 should be unbound now, unreffing
0:00:00.892115109 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800e980 is potentially unbound now
0:00:00.925205108 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:00.925223078 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518020890 was bound, queueing up for later
0:00:00.925227226 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800e980 should be unbound now, unreffing
0:00:00.925235770 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351801e580 is potentially unbound now
0:00:00.958764777 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:00.958779907 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x7635180210b0 was bound, queueing up for later
0:00:00.958782895 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351801e580 should be unbound now, unreffing
0:00:00.958790756 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518020890 is potentially unbound now
0:00:00.992106114 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:00.992119294 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518021950 was bound, queueing up for later
0:00:00.992122485 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518020890 should be unbound now, unreffing
0:00:00.992129295 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x7635180210b0 is potentially unbound now
0:00:01.025189419 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.025204688 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518022e80 was bound, queueing up for later
0:00:01.025209289 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x7635180210b0 should be unbound now, unreffing
0:00:01.025220104 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518021950 is potentially unbound now
0:00:01.058774389 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.058790070 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800a380 was bound, queueing up for later
0:00:01.058793317 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518021950 should be unbound now, unreffing
0:00:01.058801210 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518022e80 is potentially unbound now
0:00:01.092094399 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.092108404 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800e980 was bound, queueing up for later
0:00:01.092111808 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518022e80 should be unbound now, unreffing
0:00:01.092118937 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800a380 is potentially unbound now
0:00:01.125246426 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.125259383 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351801e580 was bound, queueing up for later
0:00:01.125262955 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800a380 should be unbound now, unreffing
0:00:01.125269955 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800e980 is potentially unbound now
0:00:01.158742431 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.158755586 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518020890 was bound, queueing up for later
0:00:01.158758926 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800e980 should be unbound now, unreffing
0:00:01.158765848 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351801e580 is potentially unbound now
0:00:01.192132543 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.192147647 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x7635180210b0 was bound, queueing up for later
0:00:01.192151270 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351801e580 should be unbound now, unreffing
0:00:01.192158936 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518020890 is potentially unbound now
0:00:01.225161246 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.225174169 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518021950 was bound, queueing up for later
0:00:01.225177389 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518020890 should be unbound now, unreffing
0:00:01.225184091 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x7635180210b0 is potentially unbound now
0:00:01.258807122 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.258822873 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518022e80 was bound, queueing up for later
0:00:01.258826623 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x7635180210b0 should be unbound now, unreffing
0:00:01.258837665 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518021950 is potentially unbound now
0:00:01.292150269 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.292167222 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800a380 was bound, queueing up for later
0:00:01.292170920 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518021950 should be unbound now, unreffing
0:00:01.292179322 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518022e80 is potentially unbound now
0:00:01.325384989 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.325398097 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800e980 was bound, queueing up for later
0:00:01.325401127 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518022e80 should be unbound now, unreffing
0:00:01.325408197 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800a380 is potentially unbound now
0:00:01.358737727 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.358759885 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351801e580 was bound, queueing up for later
0:00:01.358769385 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800a380 should be unbound now, unreffing
0:00:01.358783812 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800e980 is potentially unbound now
0:00:01.392129851 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.392146190 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518020890 was bound, queueing up for later
0:00:01.392150044 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800e980 should be unbound now, unreffing
0:00:01.392158247 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351801e580 is potentially unbound now
0:00:01.425176891 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.425189852 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x7635180210b0 was bound, queueing up for later
0:00:01.425192901 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351801e580 should be unbound now, unreffing
0:00:01.425200188 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518020890 is potentially unbound now
0:00:01.458778913 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.458792359 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518021950 was bound, queueing up for later
0:00:01.458795519 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518020890 should be unbound now, unreffing
0:00:01.458802229 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x7635180210b0 is potentially unbound now
0:00:01.491921814 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.491938077 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518022e80 was bound, queueing up for later
0:00:01.491942501 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x7635180210b0 should be unbound now, unreffing
0:00:01.491951230 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518021950 is potentially unbound now
0:00:01.525166231 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.525179135 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800a380 was bound, queueing up for later
0:00:01.525182316 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518021950 should be unbound now, unreffing
0:00:01.525188938 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518022e80 is potentially unbound now
0:00:01.558794493 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.558816366 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800e980 was bound, queueing up for later
0:00:01.558823972 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518022e80 should be unbound now, unreffing
0:00:01.558836968 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800a380 is potentially unbound now
0:00:01.592019272 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.592038406 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351801e580 was bound, queueing up for later
0:00:01.592044955 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800a380 should be unbound now, unreffing
0:00:01.592057066 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800e980 is potentially unbound now
0:00:01.625291662 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.625311711 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518020890 was bound, queueing up for later
0:00:01.625318252 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800e980 should be unbound now, unreffing
0:00:01.625329822 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351801e580 is potentially unbound now
0:00:01.658708929 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.658727069 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x7635180210b0 was bound, queueing up for later
0:00:01.658732593 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351801e580 should be unbound now, unreffing
0:00:01.658743278 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518020890 is potentially unbound now
0:00:01.692092362 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.692114320 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518021950 was bound, queueing up for later
0:00:01.692120577 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518020890 should be unbound now, unreffing
0:00:01.692133426 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x7635180210b0 is potentially unbound now
0:00:01.725358706 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.725378162 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518022e80 was bound, queueing up for later
0:00:01.725384366 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x7635180210b0 should be unbound now, unreffing
0:00:01.725395358 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518021950 is potentially unbound now
0:00:01.758805873 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.758824558 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800a380 was bound, queueing up for later
0:00:01.758830360 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518021950 should be unbound now, unreffing
0:00:01.758841025 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518022e80 is potentially unbound now
0:00:01.792139794 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.792158337 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800e980 was bound, queueing up for later
0:00:01.792164191 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518022e80 should be unbound now, unreffing
0:00:01.792175644 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800a380 is potentially unbound now
0:00:01.825406032 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.825427421 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351801e580 was bound, queueing up for later
0:00:01.825433973 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800a380 should be unbound now, unreffing
0:00:01.825446114 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800e980 is potentially unbound now
0:00:01.858846715 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.858870270 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518020890 was bound, queueing up for later
0:00:01.858876931 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800e980 should be unbound now, unreffing
0:00:01.858890687 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351801e580 is potentially unbound now
0:00:01.892105720 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.892130443 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x7635180210b0 was bound, queueing up for later
0:00:01.892139300 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351801e580 should be unbound now, unreffing
0:00:01.892154813 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518020890 is potentially unbound now
0:00:01.925201937 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.925221481 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518021950 was bound, queueing up for later
0:00:01.925227546 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518020890 should be unbound now, unreffing
0:00:01.925238785 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x7635180210b0 is potentially unbound now
0:00:01.958671738 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.958690793 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518022e80 was bound, queueing up for later
0:00:01.958696586 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x7635180210b0 should be unbound now, unreffing
0:00:01.958706770 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518021950 is potentially unbound now
0:00:01.992022015 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:01.992040292 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800a380 was bound, queueing up for later
0:00:01.992046376 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518021950 should be unbound now, unreffing
0:00:01.992057239 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518022e80 is potentially unbound now
0:00:02.025179960 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.025198082 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800e980 was bound, queueing up for later
0:00:02.025204199 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518022e80 should be unbound now, unreffing
0:00:02.025214877 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800a380 is potentially unbound now
0:00:02.058674204 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.058693617 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351801e580 was bound, queueing up for later
0:00:02.058700153 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800a380 should be unbound now, unreffing
0:00:02.058711861 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800e980 is potentially unbound now
0:00:02.092145964 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.092158682 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518020890 was bound, queueing up for later
0:00:02.092161987 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800e980 should be unbound now, unreffing
0:00:02.092169393 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351801e580 is potentially unbound now
0:00:02.125151341 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.125164660 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x7635180210b0 was bound, queueing up for later
0:00:02.125167792 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351801e580 should be unbound now, unreffing
0:00:02.125174944 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518020890 is potentially unbound now
0:00:02.158685861 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.158699317 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518021950 was bound, queueing up for later
0:00:02.158702979 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518020890 should be unbound now, unreffing
0:00:02.158709992 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x7635180210b0 is potentially unbound now
0:00:02.192110451 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.192125409 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518022e80 was bound, queueing up for later
0:00:02.192128868 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x7635180210b0 should be unbound now, unreffing
0:00:02.192141955 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518021950 is potentially unbound now
0:00:02.225193316 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.225207622 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800a380 was bound, queueing up for later
0:00:02.225211729 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518021950 should be unbound now, unreffing
0:00:02.225220624 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518022e80 is potentially unbound now
0:00:02.258728480 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.258740587 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800e980 was bound, queueing up for later
0:00:02.258743538 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518022e80 should be unbound now, unreffing
0:00:02.258750230 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800a380 is potentially unbound now
0:00:02.292172761 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.292189250 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351801e580 was bound, queueing up for later
0:00:02.292193018 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800a380 should be unbound now, unreffing
0:00:02.292203148 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351800e980 is potentially unbound now
0:00:02.325147449 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.325161084 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518020890 was bound, queueing up for later
0:00:02.325164401 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351800e980 should be unbound now, unreffing
0:00:02.325171353 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x76351801e580 is potentially unbound now
0:00:02.358706114 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.358724183 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x7635180210b0 was bound, queueing up for later
0:00:02.358728371 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x76351801e580 should be unbound now, unreffing
0:00:02.358738297 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518020890 is potentially unbound now
0:00:02.392086929 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.392099331 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518021950 was bound, queueing up for later
0:00:02.392102361 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518020890 should be unbound now, unreffing
0:00:02.392108843 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x7635180210b0 is potentially unbound now
0:00:02.425289105 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.425305109 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x763518022e80 was bound, queueing up for later
0:00:02.425308530 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x7635180210b0 should be unbound now, unreffing
0:00:02.425317039 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518021950 is potentially unbound now
0:00:02.458763186 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:288:updatePaintNode: 0x5acfae95cc80 updatePaintNode
0:00:02.458778352 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:331:updatePaintNode: old buffer 0x76351800a380 was bound, queueing up for later
0:00:02.458781779 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:336:updatePaintNode: old buffer 0x763518021950 should be unbound now, unreffing
0:00:02.458790097 2487799 0x763544004490 TRACE qtglwidget qt6glitem.cc:344:updatePaintNode: old buffer 0x763518022e80 is potentially unbound now