From b0897a9aa5919178044123c22dad7e1daa10f07c Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Tue, 8 Aug 2023 20:02:06 +0200 Subject: [PATCH] wayland: Don't send preferred scale and transform if not determined yet Rather not send anything than a potentially wrong default scale value of 1.0 or transform of Normal. --- src/wayland/fractionalscale_v1_interface.cpp | 4 +++- src/wayland/surface_interface.cpp | 8 ++++++-- src/wayland/surface_interface_p.h | 6 ++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/wayland/fractionalscale_v1_interface.cpp b/src/wayland/fractionalscale_v1_interface.cpp index fa29e3d7cd..45da57b9d9 100644 --- a/src/wayland/fractionalscale_v1_interface.cpp +++ b/src/wayland/fractionalscale_v1_interface.cpp @@ -49,7 +49,9 @@ FractionalScaleV1Interface::FractionalScaleV1Interface(SurfaceInterface *surface { SurfaceInterfacePrivate *surfacePrivate = SurfaceInterfacePrivate::get(surface); surfacePrivate->fractionalScaleExtension = this; - setPreferredScale(surfacePrivate->preferredBufferScale); + if (surfacePrivate->preferredBufferScale.has_value()) { + setPreferredScale(surfacePrivate->preferredBufferScale.value()); + } } FractionalScaleV1Interface::~FractionalScaleV1Interface() diff --git a/src/wayland/surface_interface.cpp b/src/wayland/surface_interface.cpp index 144ad6bde2..262f9493df 100644 --- a/src/wayland/surface_interface.cpp +++ b/src/wayland/surface_interface.cpp @@ -69,8 +69,12 @@ void SurfaceInterfacePrivate::addChild(SubSurfaceInterface *child) cached.above.append(child); current.above.append(child); child->surface()->setOutputs(outputs); - child->surface()->setPreferredBufferScale(preferredBufferScale); - child->surface()->setPreferredBufferTransform(preferredBufferTransform); + if (preferredBufferScale.has_value()) { + child->surface()->setPreferredBufferScale(preferredBufferScale.value()); + } + if (preferredBufferTransform.has_value()) { + child->surface()->setPreferredBufferTransform(preferredBufferTransform.value()); + } Q_EMIT q->childSubSurfaceAdded(child); Q_EMIT q->childSubSurfacesChanged(); diff --git a/src/wayland/surface_interface_p.h b/src/wayland/surface_interface_p.h index 799a9dae81..d01f7121e2 100644 --- a/src/wayland/surface_interface_p.h +++ b/src/wayland/surface_interface_p.h @@ -14,6 +14,8 @@ #include // Wayland #include "qwayland-server-wayland.h" +// C++ +#include namespace KWaylandServer { @@ -135,8 +137,8 @@ public: qreal pendingScaleOverride = 1.; QVector outputs; - qreal preferredBufferScale = 1.0; - KWin::OutputTransform preferredBufferTransform = KWin::OutputTransform::Normal; + std::optional preferredBufferScale; + std::optional preferredBufferTransform; LockedPointerV1Interface *lockedPointer = nullptr; ConfinedPointerV1Interface *confinedPointer = nullptr;