diff options
Diffstat (limited to 'meta-agl-core/dynamic-layers/meta-qt5/recipes-qt')
4 files changed, 50 insertions, 1 deletions
diff --git a/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtbase_aglcore.inc b/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtbase_aglcore.inc index ae5444e13..54a6311fb 100644 --- a/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtbase_aglcore.inc +++ b/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtbase_aglcore.inc @@ -2,7 +2,7 @@ PACKAGECONFIG_WAYLAND = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'way PACKAGECONFIG_GL = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2', '', d)}" -PACKAGECONFIG_append = " ${PACKAGECONFIG_WAYLAND}" +PACKAGECONFIG:append = " ${PACKAGECONFIG_WAYLAND}" # '-qpa wayland-egl' set wayland-egl as default of platform plugins PACKAGECONFIG[wayland]="-qpa wayland-egl -no-qpa-platform-guard" diff --git a/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland/0001-Fix-timer-leak-and-a-potential-race.patch b/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland/0001-Fix-timer-leak-and-a-potential-race.patch new file mode 100644 index 000000000..642eabc4b --- /dev/null +++ b/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland/0001-Fix-timer-leak-and-a-potential-race.patch @@ -0,0 +1,42 @@ +From f4d3297e6705cc524729d629bf94db11841dbb24 Mon Sep 17 00:00:00 2001 +From: Simon Yuan <simon.yuan@navico.com> +Date: Thu, 7 Nov 2019 09:22:37 +1300 +Subject: [PATCH] Fix timer leak and a potential race + +The callback timer is now killed immediately before starting a new timer, this +makes sure there is always a single active callback timer. It's unclear why +killing the timer in a separate lambda doesn't always kill the timer in time, +the hypothesis is that if killing the timer comes after starting a new one, then +the previous timer is now left dangling. Whatever the reason is, it makes even +more sense to kill the timer in the same lamda and immediately before starting a +new timer anyway. +--- + src/client/qwaylandwindow.cpp | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 0df99d9f..93b46bf1 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -1136,13 +1136,12 @@ void QWaylandWindow::handleUpdate() + mWaitingForFrameCallback = true; + mWaitingForUpdate = false; + +- // Stop current frame timer if any, can't use killTimer directly, see comment above. +- int fcbId = mFrameCallbackTimerId.fetchAndStoreOrdered(-1); +- if (fcbId != -1) +- QMetaObject::invokeMethod(this, [this, fcbId] { killTimer(fcbId); }, Qt::QueuedConnection); +- + // Start a timer for handling the case when the compositor stops sending frame callbacks. +- QMetaObject::invokeMethod(this, [this] { // Again; can't do it directly ++ // Can't use killTimer directly, see comment above. ++ QMetaObject::invokeMethod(this, [this] { ++ int fcbId = mFrameCallbackTimerId.fetchAndStoreOrdered(-1); ++ if (fcbId != -1) ++ killTimer(fcbId); + if (mWaitingForFrameCallback) + mFrameCallbackTimerId = startTimer(100); + }, Qt::QueuedConnection); +-- +2.25.1 + diff --git a/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland_%.bbappend b/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland_%.bbappend new file mode 100644 index 000000000..aa55c3a0c --- /dev/null +++ b/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'qtwayland_aglcore.inc', '', d)} diff --git a/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland_aglcore.inc b/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland_aglcore.inc new file mode 100644 index 000000000..08837ce26 --- /dev/null +++ b/meta-agl-core/dynamic-layers/meta-qt5/recipes-qt/qt5/qtwayland_aglcore.inc @@ -0,0 +1,6 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/qtwayland:" + +# Patch reported in https://bugreports.qt.io/browse/QTBUG-79838, not upstreamed +SRC_URI += " \ + file://0001-Fix-timer-leak-and-a-potential-race.patch \ + " |