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.
This commit is contained in:
Kai Uwe Broulik 2023-08-08 20:02:06 +02:00
parent ff636fc909
commit b0897a9aa5
3 changed files with 13 additions and 5 deletions

View file

@ -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()

View file

@ -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();

View file

@ -14,6 +14,8 @@
#include <QVector>
// Wayland
#include "qwayland-server-wayland.h"
// C++
#include <optional>
namespace KWaylandServer
{
@ -135,8 +137,8 @@ public:
qreal pendingScaleOverride = 1.;
QVector<OutputInterface *> outputs;
qreal preferredBufferScale = 1.0;
KWin::OutputTransform preferredBufferTransform = KWin::OutputTransform::Normal;
std::optional<qreal> preferredBufferScale;
std::optional<KWin::OutputTransform> preferredBufferTransform;
LockedPointerV1Interface *lockedPointer = nullptr;
ConfinedPointerV1Interface *confinedPointer = nullptr;