diff options
-rw-r--r-- | src/client/qwaylanddisplay.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp index 23645c8cc..b985f10e5 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp @@ -344,8 +344,15 @@ void QWaylandDisplay::forceRoundTrip() wl_proxy_set_queue((struct wl_proxy *)callback, mEventQueue); wl_callback_add_listener(callback, &sync_listener, &done); flushRequests(); - while (!done && ret >= 0) - ret = wl_display_dispatch_queue(mDisplay, mEventQueue); + if (QThread::currentThread()->eventDispatcher()) { + while (!done && ret >= 0) { + QThread::currentThread()->eventDispatcher()->processEvents(QEventLoop::WaitForMoreEvents); + ret = wl_display_dispatch_queue_pending(mDisplay, mEventQueue); + } + } else { + while (!done && ret >= 0) + ret = wl_display_dispatch_queue(mDisplay, mEventQueue); + } if (ret == -1 && !done) wl_callback_destroy(callback); |