diff --git a/CMakeLists.txt b/CMakeLists.txt index ce69e8492a..b65d5ee30f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,6 +78,7 @@ add_subdirectory( tabbox ) set(kwin_KDEINIT_SRCS workspace.cpp + dbusinterface.cpp client.cpp tabgroup.cpp placement.cpp @@ -148,7 +149,9 @@ if(KWIN_BUILD_SCREENEDGES) ) endif(KWIN_BUILD_SCREENEDGES) -qt4_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.KWin.xml workspace.h KWin::Workspace ) +qt4_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.KWin.xml dbusinterface.h KWin::DBusInterface ) +qt4_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.kwin.Compositing.xml composite.h KWin::Compositor ) +qt4_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.kwin.Effects.xml effects.h KWin::EffectsHandlerImpl ) qt4_add_dbus_interface( kwin_KDEINIT_SRCS ${KDEBASE_WORKSPACE_SOURCE_DIR}/ksmserver/org.kde.KSMServerInterface.xml ksmserver_interface) diff --git a/composite.cpp b/composite.cpp index 6d3ad3f2d9..f3d04b097c 100644 --- a/composite.cpp +++ b/composite.cpp @@ -37,6 +37,8 @@ along with this program. If not, see . http://ktown.kde.org/~fredrik/composite_howto.html */ +#include "composite.h" +#include "compositingadaptor.h" #include @@ -54,7 +56,6 @@ along with this program. If not, see . #include "shadow.h" #include "useractions.h" #include "compositingprefs.h" -#include "composite.h" #include "notifications.h" #include @@ -64,6 +65,7 @@ along with this program. If not, see . #include #include #include +#include #include #include #include @@ -105,6 +107,10 @@ Compositor::Compositor(QObject* workspace) , m_nextFrameDelay(0) , m_scene(NULL) { + new CompositingAdaptor(this); + QDBusConnection dbus = QDBusConnection::sessionBus(); + dbus.registerObject("/Compositor", this); + dbus.registerService("org.kde.kwin.Compositing"); connect(&unredirectTimer, SIGNAL(timeout()), SLOT(delayedCheckUnredirect())); connect(&compositeResetTimer, SIGNAL(timeout()), SLOT(restart())); connect(workspace, SIGNAL(configChanged()), SLOT(slotConfigChanged())); @@ -375,13 +381,6 @@ void Compositor::toggleCompositing() } } -QStringList Workspace::activeEffects() const -{ - if (effects) - return static_cast< EffectsHandlerImpl* >(effects)->activeEffects(); - return QStringList(); -} - void Compositor::updateCompositeBlocking() { updateCompositeBlocking(NULL); @@ -698,33 +697,30 @@ void Compositor::restartKWin(const QString &reason) system(cmd); } -/***************************************************** - * Compositing related D-Bus interface from Workspace - ****************************************************/ -bool Workspace::compositingPossible() const +bool Compositor::isCompositingPossible() const { return CompositingPrefs::compositingPossible(); } -QString Workspace::compositingNotPossibleReason() const +QString Compositor::compositingNotPossibleReason() const { return CompositingPrefs::compositingNotPossibleReason(); } -bool Workspace::openGLIsBroken() const +bool Compositor::isOpenGLBroken() const { return CompositingPrefs::openGlIsBroken(); } -QString Workspace::compositingType() +QString Compositor::compositingType() const { - // the returned strings are considered as identifiers and may not be translated - if (!effects) { + if (!hasScene()) { return "none"; } - if (effects->compositingType() == XRenderCompositing) { + switch (m_scene->compositingType()) { + case XRenderCompositing: return "xrender"; - } else if (effects->compositingType() == OpenGLCompositing) { + case OpenGLCompositing: #ifdef KWIN_HAVE_OPENGLES return "gles"; #else @@ -734,10 +730,16 @@ QString Workspace::compositingType() return "gl1"; } #endif + case NoCompositing: + default: + return "none"; } - return "none"; } +/***************************************************** + * Workspace + ****************************************************/ + bool Workspace::compositing() const { return m_compositor && m_compositor->hasScene(); diff --git a/composite.h b/composite.h index 2d96780cd1..2d9eee3005 100644 --- a/composite.h +++ b/composite.h @@ -25,7 +25,6 @@ along with this program. If not, see . #include #include #include -#include #include #include @@ -38,6 +37,34 @@ class Scene; class Compositor : public QObject { Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.kde.kwin.Compositing") + /** + * @brief Whether the Compositor is active. That is a Scene is present and the Compositor is + * not shutting down itself. + **/ + Q_PROPERTY(bool active READ isActive) + /** + * @brief Whether compositing is possible. Mostly means whether the required X extensions + * are available. + **/ + Q_PROPERTY(bool compositingPossible READ isCompositingPossible) + /** + * @brief The reason why compositing is not possible. Empty String if compositing is possible. + **/ + Q_PROPERTY(QString compositingNotPossibleReason READ compositingNotPossibleReason) + /** + * @brief Whether OpenGL has failed badly in the past (crash) and is considered as broken. + **/ + Q_PROPERTY(bool openGLIsBroken READ isOpenGLBroken) + /** + * The type of the currently used Scene: + * @li @c none No Compositing + * @li @c xrender XRender + * @li @c gl1 OpenGL 1 + * @li @c gl2 OpenGL 2 + * @li @c gles OpenGL ES 2 + **/ + Q_PROPERTY(QString compositingType READ compositingType) public: ~Compositor(); // when adding repaints caused by a window, you probably want to use @@ -45,11 +72,6 @@ public: void addRepaint(const QRect& r); void addRepaint(const QRegion& r); void addRepaint(int x, int y, int w, int h); - /** - * Called from the D-Bus interface. Does the same as slotToggleCompositing with the - * addition to show a notification on how to revert the compositing state. - **/ - void toggleCompositing(); // Mouse polling void startMousePolling(); void stopMousePolling(); @@ -139,8 +161,19 @@ public: return s_compositor != NULL && s_compositor->isActive(); } + // D-Bus: getters for Properties, see documentation on the property + bool isCompositingPossible() const; + QString compositingNotPossibleReason() const; + bool isOpenGLBroken() const; + QString compositingType() const; + public Q_SLOTS: void addRepaintFull(); + /** + * Called from the D-Bus interface. Does the same as slotToggleCompositing with the + * addition to show a notification on how to revert the compositing state. + **/ + Q_SCRIPTABLE void toggleCompositing(); /** * Actual slot to perform the toggling compositing. * That is if the Compositor is suspended it will be resumed and if the Compositor is active @@ -163,8 +196,10 @@ public Q_SLOTS: void updateCompositeBlocking(); void updateCompositeBlocking(KWin::Client* c); + // For the D-Bus interface + Q_SIGNALS: - void compositingToggled(bool active); + Q_SCRIPTABLE void compositingToggled(bool active); protected: void timerEvent(QTimerEvent *te); diff --git a/dbusinterface.cpp b/dbusinterface.cpp new file mode 100644 index 0000000000..180f6cf670 --- /dev/null +++ b/dbusinterface.cpp @@ -0,0 +1,177 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 2012 Martin Gräßlin + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ + +// own +#include "dbusinterface.h" +// kwin +#include "composite.h" +#include "effects.h" +#include "kwinadaptor.h" +#include "workspace.h" + +namespace KWin +{ + +DBusInterface::DBusInterface(QObject *parent) + : QObject(parent) +{ + (void) new KWinAdaptor(this); + + QDBusConnection dbus = QDBusConnection::sessionBus(); + dbus.registerObject("/KWin", this); + dbus.registerService("org.kde.KWin"); + connect(Compositor::self(), SIGNAL(compositingToggled(bool)), SIGNAL(compositingToggled(bool))); + dbus.connect(QString(), "/KWin", "org.kde.KWin", "reloadConfig", + Workspace::self(), SLOT(slotReloadConfig())); + dbus.connect(QString(), "/KWin", "org.kde.KWin", "reinitCompositing", + Compositor::self(), SLOT(slotReinitialize())); +} + +DBusInterface::~DBusInterface() +{ +} + +// wrap void methods with no arguments to Workspace +#define WRAP(name) \ +void DBusInterface::name() \ +{\ + Workspace::self()->name();\ +} + +WRAP(cascadeDesktop) +WRAP(circulateDesktopApplications) +WRAP(killWindow) +WRAP(nextDesktop) +WRAP(previousDesktop) +WRAP(reconfigure) +WRAP(unclutterDesktop) + +#undef WRAP + +// wrap returning methods with no arguments to Workspace +#define WRAP( rettype, name ) \ +rettype DBusInterface::name( ) \ +{\ + return Workspace::self()->name(); \ +} + +WRAP(int, currentDesktop) +WRAP(QList, decorationSupportedColors) +WRAP(QString, supportInformation) +WRAP(bool, waitForCompositingSetup) + +#undef WRAP + +// wrap returning methods with one argument to Workspace +#define WRAP( rettype, name, argtype ) \ +rettype DBusInterface::name( argtype arg ) \ +{\ + return Workspace::self()->name(arg); \ +} + +WRAP(bool, setCurrentDesktop, int) +WRAP(bool, startActivity, const QString &) +WRAP(bool, stopActivity, const QString &) + +#undef WRAP + +void DBusInterface::doNotManage(const QString &name) +{ + Workspace::self()->doNotManage(name); +} + +void DBusInterface::showWindowMenuAt(qlonglong winId, int x, int y) +{ + Workspace::self()->showWindowMenuAt(winId, x, y); +} + +// wrap returning methods with no arguments to COMPOSITOR +#define WRAP( rettype, name ) \ +rettype DBusInterface::name( ) \ +{\ + return Compositor::self()->name(); \ +} + +WRAP(QString, compositingNotPossibleReason) +WRAP(QString, compositingType) + +#undef WRAP + +bool DBusInterface::compositingPossible() +{ + return Compositor::self()->isCompositingPossible(); +} + +bool DBusInterface::openGLIsBroken() +{ + return Compositor::self()->isOpenGLBroken(); +} + +bool DBusInterface::compositingActive() +{ + return Compositor::self()->isActive(); +} + +void DBusInterface::toggleCompositing() +{ + Compositor::self()->toggleCompositing(); +} + +// wrap returning QStringList methods with no argument to EffectsHandlerImpl +#define WRAP( name ) \ +QStringList DBusInterface::name( ) \ +{\ + if (effects) { \ + return static_cast< EffectsHandlerImpl* >(effects)->name(); \ + } \ + return QStringList(); \ +} + +WRAP(activeEffects) +WRAP(listOfEffects) +WRAP(loadedEffects) + +#undef WRAP + +// wrap void methods with one argument to EffectsHandlerImpl +#define WRAP( name, argtype ) \ +void DBusInterface::name( argtype arg ) \ +{\ + if (effects) { \ + static_cast< EffectsHandlerImpl* >(effects)->name(arg); \ + } \ +} + +WRAP(loadEffect, const QString &) +WRAP(reconfigureEffect, const QString &) +WRAP(toggleEffect, const QString &) +WRAP(unloadEffect, const QString &) + +#undef WRAP + +QString DBusInterface::supportInformationForEffect(const QString &name) +{ + if (effects) { + static_cast< EffectsHandlerImpl* >(effects)->supportInformation(name); + } + return QString(); +} + +} // namespace diff --git a/dbusinterface.h b/dbusinterface.h new file mode 100644 index 0000000000..e49d4e0ab2 --- /dev/null +++ b/dbusinterface.h @@ -0,0 +1,151 @@ +/******************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (C) 2012 Martin Gräßlin + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*********************************************************************/ + +#ifndef KWIN_DBUS_INTERFACE_H +#define KWIN_DBUS_INTERFACE_H + +#include +#include +class QByteArray; +template class QList; +template class QMap; +class QString; +class QStringList; +class QVariant; + +namespace KWin +{ + +/** + * @brief This class is a wrapper for the org.kde.KWin D-Bus interface. + * + * The main purpose of this class is to be exported on the D-Bus as object /KWin. + * It is a pure wrapper to provide the deprecated D-Bus methods which have been + * removed from Workspace which used to implement the complete D-Bus interface. + * + * Nowadays the D-Bus interfaces are distributed, parts of it are exported on + * /Compositor, parts on /Effects and parts on /KWin. The implementation in this + * class just delegates the method calls to the actual implementation in one of the + * three singletons. + * + * @author Martin Gräßlin + * @todo KDE5: remove the methods provided on /Effects and /Compositor + **/ +class DBusInterface: public QObject +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.kde.KWin") +public: + DBusInterface(QObject *parent); + virtual ~DBusInterface(); + +public: // PROPERTIES +public Q_SLOTS: // METHODS + Q_NOREPLY void cascadeDesktop(); + void circulateDesktopApplications(); + int currentDesktop(); + QList decorationSupportedColors(); + void doNotManage(const QString &name); + Q_NOREPLY void killWindow(); + void nextDesktop(); + void previousDesktop(); + Q_NOREPLY void reconfigure(); + bool setCurrentDesktop(int desktop); + /** + * @deprecated + **/ + void showWindowMenuAt(qlonglong winId, int x, int y); + bool startActivity(const QString &in0); + bool stopActivity(const QString &in0); + QString supportInformation(); + Q_NOREPLY void unclutterDesktop(); + // from compositor + /** + * @deprecated + **/ + bool compositingActive(); + /** + * @deprecated + **/ + QString compositingNotPossibleReason(); + /** + * @deprecated + **/ + bool compositingPossible(); + /** + * @deprecated + **/ + QString compositingType(); + /** + * @deprecated + **/ + bool openGLIsBroken(); + /** + * @deprecated + **/ + Q_NOREPLY void toggleCompositing(); + /** + * @deprecated + **/ + bool waitForCompositingSetup(); + // from effectshandler + /** + * @deprecated + **/ + QStringList activeEffects(); + /** + * @deprecated + **/ + QStringList listOfEffects(); + /** + * @deprecated + **/ + void loadEffect(const QString &name); + /** + * @deprecated + **/ + QStringList loadedEffects(); + /** + * @deprecated + **/ + void reconfigureEffect(const QString &name); + /** + * @deprecated + **/ + QString supportInformationForEffect(const QString &name); + /** + * @deprecated + **/ + void toggleEffect(const QString &name); + /** + * @deprecated + **/ + void unloadEffect(const QString &name); + +Q_SIGNALS: // SIGNALS + /** + * @deprecated + **/ + void compositingToggled(bool active); +}; + +} // namespace + +#endif // KWIN_DBUS_INTERFACE_H diff --git a/effects.cpp b/effects.cpp index ecb0a8a7ce..0f3084474a 100644 --- a/effects.cpp +++ b/effects.cpp @@ -21,6 +21,7 @@ along with this program. If not, see . #include "effects.h" +#include "effectsadaptor.h" #include "deleted.h" #include "client.h" #include "group.h" @@ -105,6 +106,10 @@ EffectsHandlerImpl::EffectsHandlerImpl(Compositor *compositor, Scene *scene) , m_compositor(compositor) , m_scene(scene) { + new EffectsAdaptor(this); + QDBusConnection dbus = QDBusConnection::sessionBus(); + dbus.registerObject("/Effects", this); + dbus.registerService("org.kde.kwin.Effects"); // init is important, otherwise causes crashes when quads are build before the first painting pass start m_currentBuildQuadsIterator = m_activeEffects.end(); diff --git a/effects.h b/effects.h index 8f6b6c174d..6e922ffffb 100644 --- a/effects.h +++ b/effects.h @@ -47,6 +47,10 @@ class Unmanaged; class EffectsHandlerImpl : public EffectsHandler { Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.kde.kwin.Effects") + Q_PROPERTY(QStringList activeEffects READ activeEffects) + Q_PROPERTY(QStringList loadedEffects READ loadedEffects) + Q_PROPERTY(QStringList listOfEffects READ listOfEffects) public: EffectsHandlerImpl(Compositor *compositor, Scene *scene); virtual ~EffectsHandlerImpl(); @@ -164,12 +168,6 @@ public: void desktopResized(const QSize &size); virtual void reloadEffect(Effect *effect); - bool loadEffect(const QString& name, bool checkDefault = false); - void toggleEffect(const QString& name); - void unloadEffect(const QString& name); - void reconfigureEffect(const QString& name); - bool isEffectLoaded(const QString& name) const; - QString supportInformation(const QString& name) const; QStringList loadedEffects() const; QStringList listOfEffects() const; @@ -183,6 +181,14 @@ public Q_SLOTS: void slotShowOutline(const QRect &geometry); void slotHideOutline(); + // slots for D-Bus interface + Q_SCRIPTABLE void reconfigureEffect(const QString& name); + Q_SCRIPTABLE bool loadEffect(const QString& name, bool checkDefault = false); + Q_SCRIPTABLE void toggleEffect(const QString& name); + Q_SCRIPTABLE void unloadEffect(const QString& name); + Q_SCRIPTABLE bool isEffectLoaded(const QString& name) const; + Q_SCRIPTABLE QString supportInformation(const QString& name) const; + protected Q_SLOTS: void slotDesktopChanged(int old, KWin::Client *withClient); void slotClientAdded(KWin::Client *c); diff --git a/org.kde.kwin.Compositing.xml b/org.kde.kwin.Compositing.xml new file mode 100644 index 0000000000..ad20701089 --- /dev/null +++ b/org.kde.kwin.Compositing.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/org.kde.kwin.Effects.xml b/org.kde.kwin.Effects.xml new file mode 100644 index 0000000000..d060e8e023 --- /dev/null +++ b/org.kde.kwin.Effects.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/useractions.cpp b/useractions.cpp index ea0071741e..a65214feed 100755 --- a/useractions.cpp +++ b/useractions.cpp @@ -1200,53 +1200,6 @@ void Workspace::showWindowMenuAt(unsigned long, int, int) slotWindowOperations(); } -void Workspace::loadEffect(const QString& name) -{ - if (effects) - static_cast(effects)->loadEffect(name); -} - -void Workspace::toggleEffect(const QString& name) -{ - if (effects) - static_cast(effects)->toggleEffect(name); -} - -void Workspace::unloadEffect(const QString& name) -{ - if (effects) - static_cast(effects)->unloadEffect(name); -} - -void Workspace::reconfigureEffect(const QString& name) -{ - if (effects) - static_cast(effects)->reconfigureEffect(name); -} - -QStringList Workspace::loadedEffects() const -{ - QStringList listModulesLoaded; - if (effects) - listModulesLoaded = static_cast(effects)->loadedEffects(); - return listModulesLoaded; -} - -QStringList Workspace::listOfEffects() const -{ - QStringList listModules; - if (effects) - listModules = static_cast(effects)->listOfEffects(); - return listModules; -} - -QString Workspace::supportInformationForEffect(const QString& name) const -{ - if (effects) - return static_cast(effects)->supportInformation(name); - return QString(); -} - void Workspace::slotActivateAttentionWindow() { if (attention_chain.count() > 0) diff --git a/workspace.cpp b/workspace.cpp index 06add6c8bf..258a237534 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -55,7 +55,7 @@ along with this program. If not, see . #include "outline.h" #include "group.h" #include "rules.h" -#include "kwinadaptor.h" +#include "dbusinterface.h" #include "unmanaged.h" #include "deleted.h" #include "effects.h" @@ -148,13 +148,6 @@ Workspace::Workspace(bool restore) // If KWin was already running it saved its configuration after loosing the selection -> Reread QFuture reparseConfigFuture = QtConcurrent::run(options, &Options::reparseConfiguration); - (void) new KWinAdaptor(this); - - QDBusConnection dbus = QDBusConnection::sessionBus(); - dbus.registerObject("/KWin", this); - dbus.connect(QString(), "/KWin", "org.kde.KWin", "reloadConfig", - this, SLOT(slotReloadConfig())); - // Initialize desktop grid array desktopGrid_[0] = 0; desktopGrid_[1] = 0; @@ -207,10 +200,9 @@ Workspace::Workspace(bool restore) m_compositor = Compositor::createCompositor(this); connect(this, SIGNAL(currentDesktopChanged(int,KWin::Client*)), m_compositor, SLOT(addRepaintFull())); - connect(m_compositor, SIGNAL(compositingToggled(bool)), SIGNAL(compositingToggled(bool))); connect(m_compositor, SIGNAL(compositingToggled(bool)), SLOT(slotCompositingToggled())); - dbus.connect(QString(), "/KWin", "org.kde.KWin", "reinitCompositing", - m_compositor, SLOT(slotReinitialize())); + + new DBusInterface(this); // Compatibility long data = 1; @@ -2210,18 +2202,18 @@ QString Workspace::supportInformation() const } support.append("\nLoaded Effects:\n"); support.append( "---------------\n"); - foreach (const QString &effect, loadedEffects()) { + foreach (const QString &effect, static_cast(effects)->loadedEffects()) { support.append(effect % '\n'); } support.append("\nCurrently Active Effects:\n"); support.append( "-------------------------\n"); - foreach (const QString &effect, activeEffects()) { + foreach (const QString &effect, static_cast(effects)->activeEffects()) { support.append(effect % '\n'); } support.append("\nEffect Settings:\n"); support.append( "----------------\n"); - foreach (const QString &effect, loadedEffects()) { - support.append(supportInformationForEffect(effect)); + foreach (const QString &effect, static_cast(effects)->loadedEffects()) { + support.append(static_cast(effects)->supportInformation(effect)); support.append('\n'); } } else { @@ -2239,27 +2231,6 @@ void Workspace::slotCompositingToggled() } } -/* - * Called from D-BUS - */ -bool Workspace::compositingActive() -{ - if (m_compositor) { - return m_compositor->isActive(); - } - return false; -} - -/* - * Called from D-BUS - */ -void Workspace::toggleCompositing() -{ - if (m_compositor) { - m_compositor->toggleCompositing(); - } -} - void Workspace::slotToggleCompositing() { if (m_compositor) { diff --git a/workspace.h b/workspace.h index 474591901e..ae26f6ba81 100644 --- a/workspace.h +++ b/workspace.h @@ -397,15 +397,6 @@ public: // KDE4 remove me - And it's also in the DCOP interface :( void showWindowMenuAt(unsigned long id, int x, int y); - void toggleCompositing(); - void loadEffect(const QString& name); - void toggleEffect(const QString& name); - void reconfigureEffect(const QString& name); - void unloadEffect(const QString& name); - QString supportInformationForEffect(const QString& name) const; - - QStringList loadedEffects() const; - QStringList listOfEffects() const; /** @@ -455,24 +446,10 @@ public: void nextDesktop(); void previousDesktop(); void circulateDesktopApplications(); - bool compositingActive(); bool waitForCompositingSetup(); bool stopActivity(const QString &id); bool startActivity(const QString &id); - QStringList activeEffects() const; QString supportInformation() const; - bool compositingPossible() const; - QString compositingNotPossibleReason() const; - bool openGLIsBroken() const; - /** - * Returns the currently used Compositor (Scene): - * @li @c none No Compositing - * @li @c xrender XRender - * @li @c gl1 OpenGL 1 - * @li @c gl2 OpenGL 2 - * @li @c gles OpenGL ES 2 - **/ - QString compositingType(); void setCurrentScreen(int new_screen); @@ -645,7 +622,6 @@ private slots: void handleActivityReply(); Q_SIGNALS: - Q_SCRIPTABLE void compositingToggled(bool active); /** * Emitted after the Workspace has setup the complete initialization process. * This can be used to connect to for performing post-workspace initialization.