From 42cdc61a93cf2acb09936aebb5e431fdbc0a26c6 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Thu, 27 May 2021 20:02:53 -0300 Subject: [PATCH] Client: Always destroy frame callback in the actual callback It's good hygiene to destroy all frame callbacks. Destroy the frame callback and cleanup the mFrameCallback class member in the callback itself. The callback destruction happens before calling handleFrameCallback() to avoid the theoretical case where another frame callback is queued by handleFrameCallback(), and then immediately destroyed in the callback handler. Change-Id: Ide6dc95e3402932c58bfc088a9d471fda821e9a1 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/client/qwaylandwindow.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index d83d51695..5561f58f7 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -659,9 +659,13 @@ void QWaylandWindow::commit() const wl_callback_listener QWaylandWindow::callbackListener = { [](void *data, wl_callback *callback, uint32_t time) { - Q_UNUSED(callback); Q_UNUSED(time); auto *window = static_cast(data); + + Q_ASSERT(callback == window->mFrameCallback); + wl_callback_destroy(callback); + window->mFrameCallback = nullptr; + window->handleFrameCallback(); } }; @@ -1366,11 +1370,6 @@ void QWaylandWindow::handleUpdate() if (!mSurface) return; - if (mFrameCallback) { - wl_callback_destroy(mFrameCallback); - mFrameCallback = nullptr; - } - QMutexLocker locker(mFrameQueue.mutex); struct ::wl_surface *wrappedSurface = reinterpret_cast(wl_proxy_create_wrapper(mSurface->object())); wl_proxy_set_queue(reinterpret_cast(wrappedSurface), mFrameQueue.queue); -- 2.38.1 04be69838d2b9a6a08648971ca0351b'>root/tests/pack.scm
AgeCommit message (Expand)Author
2023-07-18tests: pack: Fix indentation....Maxim Cournoyer
2023-07-18pack: Move common build code to (guix build pack)....Maxim Cournoyer
2023-03-17Revert "tests: pack: Fix indentation."...Maxim Cournoyer
2023-02-27pack: Make sure tests can run without a world rebuild....Ludovic Courtès
2023-02-19pack: Add RPM format....Maxim Cournoyer
2023-02-19tests: pack: Fix indentation....Maxim Cournoyer
2022-10-22Remove now unnecessary uses of (guix grafts)....Ludovic Courtès
2021-07-18Merge branch 'master' into core-updatesLudovic Courtès
2021-07-18pack: Allow embedding custom control files in deb packs....Maxim Cournoyer
2021-07-11pack: Adjust test to earlier <compressor> changes....Ludovic Courtès
2021-06-29pack: Add support for the deb format....Maxim Cournoyer
2021-06-29tests: pack: Fix compressor extension....Maxim Cournoyer