qt5-qtwayland/0002-Fix-issue-with-repeated-window-size-changes.patch

59 lines
2.9 KiB
Diff
Raw Normal View History

2023-04-18 08:01:07 +00:00
From a9bcc5dc553b5a307a5bdcb6e1d92058e0257c7c Mon Sep 17 00:00:00 2001
2021-05-03 07:43:27 +00:00
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
Date: Mon, 15 Feb 2021 08:31:06 +0900
2023-04-18 08:01:07 +00:00
Subject: [PATCH 02/55] Fix issue with repeated window size changes
2021-05-03 07:43:27 +00:00
Check if the new window size is different from the size requested
previously before calling wl_egl_window_resize. It addresses the issue
where repeated setGeometry calls between two sizes might not work as
expected. The problem occurs when wl_egl_window_get_attached_size does
not get the same size that was requested by the previous setGeometry
call. If the returned size happened to match the new size instead,
we would mistakenly skip the resize.
Change-Id: Iafe4a91cc707f854b9099b6109b6be1423d7bd29
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2021-09-20 07:20:33 +00:00
(cherry picked from commit 14d066c61025e548227ccd8d655e80ffa31fa15e)
2021-05-03 07:43:27 +00:00
---
.../client/wayland-egl/qwaylandeglwindow.cpp | 4 +++-
.../client/wayland-egl/qwaylandeglwindow.h | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
2023-04-18 08:01:07 +00:00
index 57d4eb6b..13dd747a 100644
2021-05-03 07:43:27 +00:00
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
2023-04-18 08:01:07 +00:00
@@ -122,14 +122,16 @@ void QWaylandEglWindow::updateSurface(bool create)
2021-05-03 07:43:27 +00:00
if (!disableResizeCheck) {
wl_egl_window_get_attached_size(m_waylandEglWindow, &current_width, &current_height);
}
- if (disableResizeCheck || (current_width != sizeWithMargins.width() || current_height != sizeWithMargins.height())) {
+ if (disableResizeCheck || (current_width != sizeWithMargins.width() || current_height != sizeWithMargins.height()) || m_requestedSize != sizeWithMargins) {
wl_egl_window_resize(m_waylandEglWindow, sizeWithMargins.width(), sizeWithMargins.height(), mOffset.x(), mOffset.y());
+ m_requestedSize = sizeWithMargins;
mOffset = QPoint();
m_resize = true;
}
} else if (create && wlSurface()) {
m_waylandEglWindow = wl_egl_window_create(wlSurface(), sizeWithMargins.width(), sizeWithMargins.height());
+ m_requestedSize = sizeWithMargins;
}
if (!m_eglSurface && m_waylandEglWindow && create) {
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
2023-04-18 08:01:07 +00:00
index 6c8f04ec..94c56325 100644
2021-05-03 07:43:27 +00:00
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
2023-04-18 08:01:07 +00:00
@@ -87,6 +87,7 @@ private:
2021-05-03 07:43:27 +00:00
mutable QOpenGLFramebufferObject *m_contentFBO = nullptr;
QSurfaceFormat m_format;
+ QSize m_requestedSize;
};
}
2021-09-20 07:20:33 +00:00
--
2023-04-18 08:01:07 +00:00
2.40.0
2021-09-20 07:20:33 +00:00