[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kwin] /: Move requiresCompositing from Application to Platform
From:       Martin_Gräßlin <mgraesslin () kde ! org>
Date:       2016-05-17 12:02:46
Message-ID: E1b2di2-00017S-NT () scm ! kde ! org
[Download RAW message or body]

Git commit c45942a70c6ab90a0260164b69f5ed8876e63c3e by Martin Gräßlin.
Committed on 17/05/2016 at 11:59.
Pushed by graesslin into branch 'master'.

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

M  +5    -5    composite.cpp
M  +0    -5    main.cpp
M  +0    -1    main.h
M  +12   -0    options.cpp
M  +2    -6    options.h
M  +5    -0    platform.cpp
M  +7    -0    platform.h
M  +6    -0    plugins/platforms/x11/standalone/x11_platform.cpp
M  +1    -0    plugins/platforms/x11/standalone/x11_platform.h

http://commits.kde.org/kwin/c45942a70c6ab90a0260164b69f5ed8876e63c3e

diff --git a/composite.cpp b/composite.cpp
index c3df6b5..7b0a166 100644
--- a/composite.cpp
+++ b/composite.cpp
@@ -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);
diff --git a/main.cpp b/main.cpp
index d99aedb..67cfc8e 100644
--- a/main.cpp
+++ b/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);
diff --git a/main.h b/main.h
index a0c6e76..a7dd47d 100644
--- a/main.h
+++ b/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);
diff --git a/options.cpp b/options.cpp
index 0a59508..9054cff 100644
--- a/options.cpp
+++ b/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
diff --git a/options.h b/options.h
index 4c09b9e..30c3899 100644
--- a/options.h
+++ b/options.h
@@ -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,
diff --git a/platform.cpp b/platform.cpp
index 8a7e255..1273df8 100644
--- a/platform.cpp
+++ b/platform.cpp
@@ -281,4 +281,9 @@ QVector<QRect> Platform::screenGeometries() const
     return QVector<QRect>({QRect(QPoint(0, 0), screenSize())});
 }
 
+bool Platform::requiresCompositing() const
+{
+    return true;
+}
+
 }
diff --git a/platform.h b/platform.h
index f7c2a52..0368742 100644
--- a/platform.h
+++ b/platform.h
@@ -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;
     }
diff --git a/plugins/platforms/x11/standalone/x11_platform.cpp \
b/plugins/platforms/x11/standalone/x11_platform.cpp index 8b13518..fa090a8 100644
--- a/plugins/platforms/x11/standalone/x11_platform.cpp
+++ b/plugins/platforms/x11/standalone/x11_platform.cpp
@@ -74,4 +74,10 @@ Edge *X11StandalonePlatform::createScreenEdge(ScreenEdges *edges)
     return new WindowBasedEdge(edges);
 }
 
+bool X11StandalonePlatform::requiresCompositing() const
+{
+    return false;
+}
+
+
 }
diff --git a/plugins/platforms/x11/standalone/x11_platform.h \
b/plugins/platforms/x11/standalone/x11_platform.h index e57d6e4..949f804 100644
--- a/plugins/platforms/x11/standalone/x11_platform.h
+++ b/plugins/platforms/x11/standalone/x11_platform.h
@@ -41,6 +41,7 @@ public:
     Screens *createScreens(QObject *parent = nullptr) override;
     OpenGLBackend *createOpenGLBackend() override;
     Edge *createScreenEdge(ScreenEdges *parent) override;
+    bool requiresCompositing() const override;
 
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic