Move requiresCompositing from Application to Platform
Summary: This change reduces the windowing system specific code pathes. Instead of checking whether we are on X11 or Wayland to decide whether compositing is required, we just ask the Platform. The default is true, only x11 standalone allows to not require compositing. Reviewers: #plasma Subscribers: plasma-devel Projects: #plasma Differential Revision: https://phabricator.kde.org/D1575
This commit is contained in:
parent
73fae5e63d
commit
c45942a70c
9 changed files with 38 additions and 17 deletions
|
@ -252,7 +252,7 @@ void Compositor::slotCompositingOptionsInitialized()
|
|||
cm_selection->owning = false;
|
||||
cm_selection->release();
|
||||
}
|
||||
if (kwinApp()->requiresCompositing()) {
|
||||
if (kwinApp()->platform()->requiresCompositing()) {
|
||||
qCCritical(KWIN_CORE) << "The used windowing system requires compositing";
|
||||
qCCritical(KWIN_CORE) << "We are going to quit KWin now as it is broken";
|
||||
qApp->quit();
|
||||
|
@ -268,7 +268,7 @@ void Compositor::slotCompositingOptionsInitialized()
|
|||
cm_selection->owning = false;
|
||||
cm_selection->release();
|
||||
}
|
||||
if (kwinApp()->requiresCompositing()) {
|
||||
if (kwinApp()->platform()->requiresCompositing()) {
|
||||
qCCritical(KWIN_CORE) << "The used windowing system requires compositing";
|
||||
qCCritical(KWIN_CORE) << "We are going to quit KWin now as it is broken";
|
||||
qApp->quit();
|
||||
|
@ -497,7 +497,7 @@ void Compositor::slotReinitialize()
|
|||
// for the shortcut
|
||||
void Compositor::slotToggleCompositing()
|
||||
{
|
||||
if (kwinApp()->requiresCompositing()) {
|
||||
if (kwinApp()->platform()->requiresCompositing()) {
|
||||
// we are not allowed to turn on/off compositing
|
||||
return;
|
||||
}
|
||||
|
@ -515,7 +515,7 @@ void Compositor::updateCompositeBlocking()
|
|||
|
||||
void Compositor::updateCompositeBlocking(Client *c)
|
||||
{
|
||||
if (kwinApp()->requiresCompositing()) {
|
||||
if (kwinApp()->platform()->requiresCompositing()) {
|
||||
return;
|
||||
}
|
||||
if (c) { // if c == 0 we just check if we can resume
|
||||
|
@ -540,7 +540,7 @@ void Compositor::updateCompositeBlocking(Client *c)
|
|||
|
||||
void Compositor::suspend(Compositor::SuspendReason reason)
|
||||
{
|
||||
if (kwinApp()->requiresCompositing()) {
|
||||
if (kwinApp()->platform()->requiresCompositing()) {
|
||||
return;
|
||||
}
|
||||
Q_ASSERT(reason != NoReasonSuspend);
|
||||
|
|
5
main.cpp
5
main.cpp
|
@ -123,11 +123,6 @@ bool Application::shouldUseWaylandForCompositing() const
|
|||
return m_operationMode == OperationModeWaylandAndX11 || m_operationMode == OperationModeXwayland;
|
||||
}
|
||||
|
||||
bool Application::requiresCompositing() const
|
||||
{
|
||||
return shouldUseWaylandForCompositing();
|
||||
}
|
||||
|
||||
void Application::start()
|
||||
{
|
||||
setQuitOnLastWindowClosed(false);
|
||||
|
|
1
main.h
1
main.h
|
@ -96,7 +96,6 @@ public:
|
|||
OperationMode operationMode() const;
|
||||
void setOperationMode(OperationMode mode);
|
||||
bool shouldUseWaylandForCompositing() const;
|
||||
bool requiresCompositing() const;
|
||||
|
||||
void setupTranslator();
|
||||
void setupCommandLine(QCommandLineParser *parser);
|
||||
|
|
12
options.cpp
12
options.cpp
|
@ -23,6 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "options.h"
|
||||
#include "config-kwin.h"
|
||||
#include "utils.h"
|
||||
#include "platform.h"
|
||||
|
||||
#ifndef KCMRULES
|
||||
|
||||
|
@ -1157,4 +1158,15 @@ QStringList Options::modifierOnlyDBusShortcut(Qt::KeyboardModifier mod) const
|
|||
return m_modifierOnlyShortcuts.value(mod);
|
||||
}
|
||||
|
||||
bool Options::isUseCompositing() const
|
||||
{
|
||||
return m_useCompositing || kwinApp()->platform()->requiresCompositing();
|
||||
}
|
||||
|
||||
|
||||
bool Options::isUnredirectFullscreen() const
|
||||
{
|
||||
return m_unredirectFullscreen && !kwinApp()->platform()->requiresCompositing();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
|
@ -542,9 +542,7 @@ public:
|
|||
m_compositingMode = mode;
|
||||
}
|
||||
// Separate to mode so the user can toggle
|
||||
bool isUseCompositing() const {
|
||||
return m_useCompositing || kwinApp()->requiresCompositing();
|
||||
}
|
||||
bool isUseCompositing() const;
|
||||
bool isCompositingInitialized() const {
|
||||
return m_compositingInitialized;
|
||||
}
|
||||
|
@ -553,9 +551,7 @@ public:
|
|||
HiddenPreviews hiddenPreviews() const {
|
||||
return m_hiddenPreviews;
|
||||
}
|
||||
bool isUnredirectFullscreen() const {
|
||||
return m_unredirectFullscreen && !kwinApp()->requiresCompositing();
|
||||
}
|
||||
bool isUnredirectFullscreen() const;
|
||||
// OpenGL
|
||||
// 0 = no, 1 = yes when transformed,
|
||||
// 2 = try trilinear when transformed; else 1,
|
||||
|
|
|
@ -281,4 +281,9 @@ QVector<QRect> Platform::screenGeometries() const
|
|||
return QVector<QRect>({QRect(QPoint(0, 0), screenSize())});
|
||||
}
|
||||
|
||||
bool Platform::requiresCompositing() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -94,6 +94,13 @@ public:
|
|||
*/
|
||||
virtual void configurationChangeRequested(KWayland::Server::OutputConfigurationInterface *config);
|
||||
|
||||
/**
|
||||
* Whether the Platform requires compositing for rendering.
|
||||
* Default implementation returns @c true. If the implementing Platform allows to be used
|
||||
* without compositing (e.g. rendering is done by the windowing system), re-implement this method.
|
||||
**/
|
||||
virtual bool requiresCompositing() const;
|
||||
|
||||
bool usesSoftwareCursor() const {
|
||||
return m_softWareCursor;
|
||||
}
|
||||
|
|
|
@ -74,4 +74,10 @@ Edge *X11StandalonePlatform::createScreenEdge(ScreenEdges *edges)
|
|||
return new WindowBasedEdge(edges);
|
||||
}
|
||||
|
||||
bool X11StandalonePlatform::requiresCompositing() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ public:
|
|||
Screens *createScreens(QObject *parent = nullptr) override;
|
||||
OpenGLBackend *createOpenGLBackend() override;
|
||||
Edge *createScreenEdge(ScreenEdges *parent) override;
|
||||
bool requiresCompositing() const override;
|
||||
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue