[Development] Debugging qwindow-compositor with example/opengl/hellogl_es2
Elvis Lee
kwangwoong.lee at lge.com
Thu Jul 19 11:23:35 CEST 2012
I tested qwindow-compositor with some examples and found that hellogl_es2
was not working.
It’s because that the app was blocked in
QWaylandDisplay::blockingReadEvents, waiting frameCallback.
But the frameCallback is already read and it’s on wayland connection.
Briefly, QWaylandWindow::waitForFrameSync() was re-entered.
I am not sure, but I think there are two problems. Or one of them.
1. QWaylandWindow::waitForFrameSync() or
QWaylandDisplay::blockingReadEvents() are not considered for re-enterence.
Since it does not just read, but also handle events, re-enterence might be
occurred and it makes the order of events change.
2. Waiting frameCallback, the app received onscreenVisiblitiy event for
extendedSurfaceReady from qwindow-compositor.
I hope this will be fixed. Or let me know how to fix it, then I will try.
If you have any interest about this, reference attached the gdb logs.
Thanks.
Elvis.
#0 wl_os_recvmsg_cloexec (sockfd=10, msg=0x7fffffffbff0, flags=0) at
wayland-os.c:123
#1 0x00007ffff2d03150 in wl_connection_data (connection=0x618e70,
mask=<optimized out>) at connection.c:311
#2 0x00007ffff2d02973 in wl_display_iterate (display=0x6133e0,
mask=<optimized out>) at wayland-client.c:515
#3 0x00007ffff3591f53 in QWaylandDisplay::blockingReadEvents
(this=0x6237c0) at qwaylanddisplay.cpp:207
#4 0x00007ffff3593d3f in QWaylandWindow::waitForFrameSync (this=0x719f90)
at qwaylandwindow.cpp:250
#5 0x00007ffff358d0af in QWaylandShmBackingStore::beginPaint
(this=0x71a270)
at qwaylandshmbackingstore.cpp:171
#6 0x00007ffff6d0b264 in QBackingStore::beginPaint (this=0x7198f0,
region=...)
at painting/qbackingstore.cpp:138
#7 0x00007ffff72fe7f8 in QWidgetBackingStore::beginPaint (this=0x71a2d0,
toClean=..., widget=0x7fffffffe2f0,
backingStore=0x7198f0, returnInfo=0x7fffffffc470,
toCleanIsInTopLevelCoordinates=true)
at kernel/qwidgetbackingstore.cpp:313
#8 0x00007ffff7302782 in QWidgetBackingStore::sync (this=0x71a2d0) at
kernel/qwidgetbackingstore.cpp:1052
#9 0x00007ffff732b8ed in QWidgetPrivate::syncBackingStore (this=0x65fd50)
at kernel/qwidget.cpp:1663
#10 0x00007ffff7367616 in QWidgetWindow::handleResizeEvent (this=0x72d0d0,
event=0x7fffffffcdf0)
at kernel/qwidgetwindow.cpp:401
#11 0x00007ffff7366784 in QWidgetWindow::event (this=0x72d0d0,
event=0x7fffffffcdf0)
at kernel/qwidgetwindow.cpp:159
#12 0x00007ffff72f4800 in QApplicationPrivate::notify_helper
(this=0x613d30, receiver=0x72d0d0,
e=0x7fffffffcdf0) at kernel/qapplication.cpp:3594
#13 0x00007ffff72f1ffc in QApplication::notify (this=0x7fffffffe320,
receiver=0x72d0d0, e=0x7fffffffcdf0)
at kernel/qapplication.cpp:3051
#14 0x00007ffff657f098 in QCoreApplication::notifyInternal
(this=0x7fffffffe320, receiver=0x72d0d0,
event=0x7fffffffcdf0) at kernel/qcoreapplication.cpp:725
#15 0x00007ffff6b87d51 in QCoreApplication::sendSpontaneousEvent
(receiver=0x72d0d0, event=0x7fffffffcdf0)
at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:214
#16 0x00007ffff6b861c7 in QGuiApplicationPrivate::processExposeEvent
(e=0x7fffffffcee0)
at kernel/qguiapplication.cpp:1968
#17 0x00007ffff6b827c6 in QGuiApplicationPrivate::processWindowSystemEvent
(e=0x7fffffffcee0)
at kernel/qguiapplication.cpp:1158
#18 0x00007ffff6b75125 in
QWindowSystemInterface::handleSynchronousExposeEvent (tlw=0x72d0d0,
region=...)
at kernel/qwindowsysteminterface.cpp:474
#19 0x00007ffff359819c in QWaylandExtendedSurface::onscreen_visibility
(data=0x72d8c0,
wl_extended_surface=0x72d890, visible=1) at
qwaylandextendedsurface.cpp:153
---Type <return> to continue, or q <return> to quit---
#20 0x00007ffff1cbea14 in ffi_call_unix64 () from /usr/lib/x86_64-linux-
gnu/libffi.so.6
#21 0x00007ffff1cbe435 in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.
so.6
#22 0x00007ffff2d0425f in wl_closure_invoke (closure=<optimized out>,
target=0x72d890, func=<optimized out>,
data=0x72d8c0) at connection.c:773
#23 0x00007ffff2d029af in handle_event (size=12, opcode=<optimized out>,
id=<optimized out>, display=0x6133e0)
at wayland-client.c:495
#24 wl_display_iterate (display=0x6133e0, mask=<optimized out>) at wayland-
client.c:528
#25 0x00007ffff3591f53 in QWaylandDisplay::blockingReadEvents
(this=0x6237c0) at qwaylanddisplay.cpp:207
#26 0x00007ffff3593d3f in QWaylandWindow::waitForFrameSync (this=0x719f90)
at qwaylandwindow.cpp:250
#27 0x00007ffff358d0af in QWaylandShmBackingStore::beginPaint
(this=0x71a270)
at qwaylandshmbackingstore.cpp:171
#28 0x00007ffff6d0b264 in QBackingStore::beginPaint (this=0x7198f0,
region=...)
at painting/qbackingstore.cpp:138
#29 0x00007ffff72fe7f8 in QWidgetBackingStore::beginPaint (this=0x71a2d0,
toClean=..., widget=0x7fffffffe2f0,
backingStore=0x7198f0, returnInfo=0x7fffffffd400,
toCleanIsInTopLevelCoordinates=true)
at kernel/qwidgetbackingstore.cpp:313
#30 0x00007ffff7302782 in QWidgetBackingStore::sync (this=0x71a2d0) at
kernel/qwidgetbackingstore.cpp:1052
#31 0x00007ffff732b8ed in QWidgetPrivate::syncBackingStore (this=0x65f500)
at kernel/qwidget.cpp:1663
#32 0x00007ffff733c713 in QWidget::event (this=0x7fffffffe2f0,
event=0x72dcb0) at kernel/qwidget.cpp:8144
#33 0x00007ffff74c2a9a in QMainWindow::event (this=0x7fffffffe2f0,
event=0x72dcb0)
at widgets/qmainwindow.cpp:1465
#34 0x00007ffff72f4800 in QApplicationPrivate::notify_helper
(this=0x613d30, receiver=0x7fffffffe2f0,
e=0x72dcb0) at kernel/qapplication.cpp:3594
#35 0x00007ffff72f4664 in QApplication::notify (this=0x7fffffffe320,
receiver=0x7fffffffe2f0, e=0x72dcb0)
at kernel/qapplication.cpp:3559
#36 0x00007ffff657f098 in QCoreApplication::notifyInternal
(this=0x7fffffffe320, receiver=0x7fffffffe2f0,
event=0x72dcb0) at kernel/qcoreapplication.cpp:725
#37 0x00007ffff6582e67 in QCoreApplication::sendEvent
(receiver=0x7fffffffe2f0, event=0x72dcb0)
at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:211
#38 0x00007ffff6580156 in QCoreApplicationPrivate::sendPostedEvents
(receiver=0x0, event_type=0,
data=0x613eb0) at kernel/qcoreapplication.cpp:1325
#39 0x00007ffff657fd1d in QCoreApplication::sendPostedEvents (receiver=0x0,
event_type=0)
at kernel/qcoreapplication.cpp:1185
#40 0x00007ffff6b75159 in QWindowSystemInterface::sendWindowSystemEvents
(eventDispatcher=0x622390, flags=...)
---Type <return> to continue, or q <return> to quit---
at kernel/qwindowsysteminterface.cpp:482
#41 0x00007ffff362433e in QUnixEventDispatcherQPA::processEvents
(this=0x622390, flags=...)
at eventdispatchers/qunixeventdispatcher.cpp:70
#42 0x00007ffff657c25b in QEventLoop::processEvents (this=0x7fffffffe270,
flags=...)
at kernel/qeventloop.cpp:135
#43 0x00007ffff657c529 in QEventLoop::exec (this=0x7fffffffe270, flags=...)
at kernel/qeventloop.cpp:211
#44 0x00007ffff657f721 in QCoreApplication::exec () at
kernel/qcoreapplication.cpp:977
#45 0x00007ffff6b8245b in QGuiApplication::exec () at
kernel/qguiapplication.cpp:1037
#46 0x00007ffff72f1c2e in QApplication::exec () at
kernel/qapplication.cpp:2942
#47 0x0000000000405faf in main (argc=1, argv=0x7fffffffe428) at main.cpp:51
(gdb)
--
Elvis Lee (이광웅)
Software Engineer @ LG Electronics Inc.
CTO Division / SW Platform Lab. / Advanced OS Tech Team.
Yang-jae dong 221, Seoul, Korea.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20120719/0f015a6b/attachment.html>
More information about the Development
mailing list