Add dummy OutputLayer type
It's needed to make repaint scheduling in render layers simple.
This commit is contained in:
parent
203d7b3b8a
commit
65ccfd336f
5 changed files with 79 additions and 0 deletions
|
@ -83,6 +83,7 @@ target_sources(kwin PRIVATE
|
|||
options.cpp
|
||||
osd.cpp
|
||||
outline.cpp
|
||||
outputlayer.cpp
|
||||
overlaywindow.cpp
|
||||
placement.cpp
|
||||
platform.cpp
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
*/
|
||||
|
||||
#include "abstract_output.h"
|
||||
#include "outputlayer.h"
|
||||
#include <KSharedConfig>
|
||||
#include <KConfigGroup>
|
||||
|
||||
|
@ -78,6 +79,7 @@ QDebug operator<<(QDebug debug, const AbstractOutput *output)
|
|||
|
||||
AbstractOutput::AbstractOutput(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_layer(new OutputLayer(this))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -85,6 +87,11 @@ AbstractOutput::~AbstractOutput()
|
|||
{
|
||||
}
|
||||
|
||||
OutputLayer *AbstractOutput::layer() const
|
||||
{
|
||||
return m_layer;
|
||||
}
|
||||
|
||||
QUuid AbstractOutput::uuid() const
|
||||
{
|
||||
return QUuid();
|
||||
|
|
|
@ -26,6 +26,7 @@ class OutputChangeSetV2;
|
|||
namespace KWin
|
||||
{
|
||||
class EffectScreenImpl;
|
||||
class OutputLayer;
|
||||
class RenderLoop;
|
||||
|
||||
class KWIN_EXPORT GammaRamp
|
||||
|
@ -93,6 +94,11 @@ public:
|
|||
explicit AbstractOutput(QObject *parent = nullptr);
|
||||
~AbstractOutput() override;
|
||||
|
||||
/**
|
||||
* Returns the primary layer. TODO: remove it
|
||||
*/
|
||||
OutputLayer *layer() const;
|
||||
|
||||
/**
|
||||
* Returns a short identifiable name of this output.
|
||||
*/
|
||||
|
@ -262,6 +268,7 @@ Q_SIGNALS:
|
|||
private:
|
||||
Q_DISABLE_COPY(AbstractOutput)
|
||||
EffectScreenImpl *m_effectScreen = nullptr;
|
||||
OutputLayer *m_layer;
|
||||
int m_directScanoutCount = 0;
|
||||
friend class EffectScreenImpl; // to access m_effectScreen
|
||||
};
|
||||
|
|
32
src/outputlayer.cpp
Normal file
32
src/outputlayer.cpp
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "outputlayer.h"
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
OutputLayer::OutputLayer(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
}
|
||||
|
||||
QRegion OutputLayer::repaints() const
|
||||
{
|
||||
return m_repaints;
|
||||
}
|
||||
|
||||
void OutputLayer::addRepaint(const QRegion ®ion)
|
||||
{
|
||||
m_repaints += region;
|
||||
}
|
||||
|
||||
void OutputLayer::resetRepaints()
|
||||
{
|
||||
m_repaints = QRegion();
|
||||
}
|
||||
|
||||
} // namespace KWin
|
32
src/outputlayer.h
Normal file
32
src/outputlayer.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "kwin_export.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QRegion>
|
||||
|
||||
namespace KWin
|
||||
{
|
||||
|
||||
class KWIN_EXPORT OutputLayer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit OutputLayer(QObject *parent = nullptr);
|
||||
|
||||
QRegion repaints() const;
|
||||
void resetRepaints();
|
||||
void addRepaint(const QRegion ®ion);
|
||||
|
||||
private:
|
||||
QRegion m_repaints;
|
||||
};
|
||||
|
||||
} // namespace KWin
|
Loading…
Reference in a new issue