diff --git a/abstract_wayland_output.h b/abstract_wayland_output.h --- a/abstract_wayland_output.h +++ b/abstract_wayland_output.h @@ -64,7 +64,7 @@ return !m_waylandOutput.isNull(); } - virtual QSize pixelSize() const = 0; + QSize pixelSize() const; qreal scale() const override; /** diff --git a/abstract_wayland_output.cpp b/abstract_wayland_output.cpp --- a/abstract_wayland_output.cpp +++ b/abstract_wayland_output.cpp @@ -54,12 +54,7 @@ QRect AbstractWaylandOutput::geometry() const { - // TODO: This is inefficient on current KWayland since - // we loop over modes. -// const QSize size = m_waylandOutputDevice->pixelSize(); - const QSize size = pixelSize(); - - return QRect(globalPos(), size / scale()); + return QRect(globalPos(), pixelSize() / scale()); } QSize AbstractWaylandOutput::physicalSize() const @@ -93,6 +88,11 @@ } } +QSize AbstractWaylandOutput::pixelSize() const +{ + return orientateSize(m_waylandOutputDevice->pixelSize()); +} + qreal AbstractWaylandOutput::scale() const { return m_waylandOutputDevice->scaleF(); diff --git a/plugins/platforms/drm/drm_output.h b/plugins/platforms/drm/drm_output.h --- a/plugins/platforms/drm/drm_output.h +++ b/plugins/platforms/drm/drm_output.h @@ -60,8 +60,6 @@ bool present(DrmBuffer *buffer); void pageFlipped(); - QSize pixelSize() const override; - // These values are defined by the kernel enum class DpmsMode { On = DRM_MODE_DPMS_ON, diff --git a/plugins/platforms/drm/drm_output.cpp b/plugins/platforms/drm/drm_output.cpp --- a/plugins/platforms/drm/drm_output.cpp +++ b/plugins/platforms/drm/drm_output.cpp @@ -675,11 +675,6 @@ setWaylandMode(); } -QSize DrmOutput::pixelSize() const -{ - return orientateSize(QSize(m_mode.hdisplay, m_mode.vdisplay)); -} - void DrmOutput::setWaylandMode() { AbstractWaylandOutput::setWaylandMode(QSize(m_mode.hdisplay, m_mode.vdisplay), diff --git a/plugins/platforms/fbdev/fb_backend.h b/plugins/platforms/fbdev/fb_backend.h --- a/plugins/platforms/fbdev/fb_backend.h +++ b/plugins/platforms/fbdev/fb_backend.h @@ -38,16 +38,10 @@ ~FramebufferOutput() override = default; void init(const QSize &size); - QSize pixelSize() const override { - return m_pixelSize; - } void setRawPhysicalSize(const QSize &set) { AbstractWaylandOutput::setRawPhysicalSize(set); } - -private: - QSize m_pixelSize; }; class KWIN_EXPORT FramebufferBackend : public Platform diff --git a/plugins/platforms/fbdev/fb_backend.cpp b/plugins/platforms/fbdev/fb_backend.cpp --- a/plugins/platforms/fbdev/fb_backend.cpp +++ b/plugins/platforms/fbdev/fb_backend.cpp @@ -39,7 +39,6 @@ void FramebufferOutput::init(const QSize &size) { - m_pixelSize = size; KWayland::Server::OutputDeviceInterface::Mode mode; mode.id = 0; mode.size = size; diff --git a/plugins/platforms/hwcomposer/hwcomposer_backend.cpp b/plugins/platforms/hwcomposer/hwcomposer_backend.cpp --- a/plugins/platforms/hwcomposer/hwcomposer_backend.cpp +++ b/plugins/platforms/hwcomposer/hwcomposer_backend.cpp @@ -506,7 +506,6 @@ if (pixel.isEmpty()) { return; } - m_pixelSize = pixel; if (attr_values[2] != 0 && attr_values[3] != 0) { static const qreal factor = 25.4; @@ -531,22 +530,17 @@ const auto outputGroup = kwinApp()->config()->group("HWComposerOutputs").group("0"); setScale(outputGroup.readEntry("Scale", 1)); - setWaylandMode(m_pixelSize, mode.refreshRate); + setWaylandMode(pixel, mode.refreshRate); } HwcomposerOutput::~HwcomposerOutput() { hwc_close_1(m_device); } -QSize HwcomposerOutput::pixelSize() const -{ - return m_pixelSize; -} - bool HwcomposerOutput::isValid() const { - return m_pixelSize.isValid(); + return isEnabled(); } void HwcomposerOutput::updateDpms(KWayland::Server::OutputInterface::DpmsMode mode) diff --git a/plugins/platforms/virtual/virtual_output.h b/plugins/platforms/virtual/virtual_output.h --- a/plugins/platforms/virtual/virtual_output.h +++ b/plugins/platforms/virtual/virtual_output.h @@ -39,8 +39,6 @@ void init(const QPoint &logicalPosition, const QSize &pixelSize); - QSize pixelSize() const override; - void setGeometry(const QRect &geo); int gammaRampSize() const override { @@ -55,8 +53,6 @@ Q_DISABLE_COPY(VirtualOutput); friend class VirtualBackend; - QSize m_pixelSize; - int m_gammaSize = 200; bool m_gammaResult = true; }; diff --git a/plugins/platforms/virtual/virtual_output.cpp b/plugins/platforms/virtual/virtual_output.cpp --- a/plugins/platforms/virtual/virtual_output.cpp +++ b/plugins/platforms/virtual/virtual_output.cpp @@ -46,15 +46,10 @@ setScale(1.); } -QSize VirtualOutput::pixelSize() const -{ - return m_pixelSize; -} - void VirtualOutput::setGeometry(const QRect &geo) { - m_pixelSize = geo.size(); - setRawPhysicalSize(m_pixelSize); + // TODO: set mode to have updated pixelSize + setRawPhysicalSize(geo.size()); setGlobalPos(geo.topLeft()); } diff --git a/plugins/platforms/wayland/wayland_output.h b/plugins/platforms/wayland/wayland_output.h --- a/plugins/platforms/wayland/wayland_output.h +++ b/plugins/platforms/wayland/wayland_output.h @@ -62,8 +62,6 @@ virtual bool pointerIsLocked() { return false; } - QSize pixelSize() const override; - /** * @brief defines the geometry of the output * @param logicalPosition top left position of the output in compositor space @@ -95,7 +93,6 @@ KWayland::Client::Surface *m_surface; WaylandBackend *m_backend; - QSize m_pixelSize; bool m_rendered = false; }; diff --git a/plugins/platforms/wayland/wayland_output.cpp b/plugins/platforms/wayland/wayland_output.cpp --- a/plugins/platforms/wayland/wayland_output.cpp +++ b/plugins/platforms/wayland/wayland_output.cpp @@ -69,14 +69,9 @@ setScale(backend()->initialOutputScale()); } -QSize WaylandOutput::pixelSize() const -{ - return m_pixelSize; -} - void WaylandOutput::setGeometry(const QPoint &logicalPosition, const QSize &pixelSize) { - m_pixelSize = pixelSize; + // TODO: set mode to have updated pixelSize setRawPhysicalSize(pixelSize); setGlobalPos(logicalPosition); } diff --git a/plugins/platforms/x11/windowed/x11windowed_output.h b/plugins/platforms/x11/windowed/x11windowed_output.h --- a/plugins/platforms/x11/windowed/x11windowed_output.h +++ b/plugins/platforms/x11/windowed/x11windowed_output.h @@ -59,8 +59,6 @@ void setWindowTitle(const QString &title); - QSize pixelSize() const override; - /** * @brief defines the geometry of the output * @param logicalPosition top left position of the output in compositor space @@ -75,7 +73,6 @@ NETWinInfo *m_winInfo = nullptr; QPoint m_hostPosition; - QSize m_pixelSize; X11WindowedBackend *m_backend; }; diff --git a/plugins/platforms/x11/windowed/x11windowed_output.cpp b/plugins/platforms/x11/windowed/x11windowed_output.cpp --- a/plugins/platforms/x11/windowed/x11windowed_output.cpp +++ b/plugins/platforms/x11/windowed/x11windowed_output.cpp @@ -134,14 +134,9 @@ #endif } -QSize X11WindowedOutput::pixelSize() const -{ - return m_pixelSize; -} - void X11WindowedOutput::setGeometry(const QPoint &logicalPosition, const QSize &pixelSize) { - m_pixelSize = pixelSize; + // TODO: set mode to have updated pixelSize // Physicial size must be adjusted, such that QPA calculates correct sizes of // internal elements.