Make Compositor::finish more generic
Summary: KWin is not only an X11 compositing window manager, but also a Wayland compositor. The Compositor class is used in both cases so in general it would be nice to keep it as much as possible generic. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19879
This commit is contained in:
parent
b617613bf7
commit
fd20c59ada
2 changed files with 15 additions and 11 deletions
|
@ -423,17 +423,6 @@ void Compositor::finish()
|
||||||
m_scene = NULL;
|
m_scene = NULL;
|
||||||
compositeTimer.stop();
|
compositeTimer.stop();
|
||||||
repaints_region = QRegion();
|
repaints_region = QRegion();
|
||||||
if (Workspace::self()) {
|
|
||||||
for (ClientList::ConstIterator it = Workspace::self()->clientList().constBegin();
|
|
||||||
it != Workspace::self()->clientList().constEnd();
|
|
||||||
++it) {
|
|
||||||
// forward all opacity values to the frame in case there'll be other CM running
|
|
||||||
if ((*it)->opacity() != 1.0) {
|
|
||||||
NETWinInfo i(connection(), (*it)->frameId(), rootWindow(), 0, 0);
|
|
||||||
i.setOpacity(static_cast< unsigned long >((*it)->opacity() * 0xffffffff));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_finishing = false;
|
m_finishing = false;
|
||||||
emit compositingToggled(false);
|
emit compositingToggled(false);
|
||||||
}
|
}
|
||||||
|
|
15
manage.cpp
15
manage.cpp
|
@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#ifdef KWIN_BUILD_ACTIVITIES
|
#ifdef KWIN_BUILD_ACTIVITIES
|
||||||
#include "activities.h"
|
#include "activities.h"
|
||||||
#endif
|
#endif
|
||||||
|
#include "composite.h"
|
||||||
#include "cursor.h"
|
#include "cursor.h"
|
||||||
#include "rules.h"
|
#include "rules.h"
|
||||||
#include "group.h"
|
#include "group.h"
|
||||||
|
@ -652,6 +653,20 @@ bool Client::manage(xcb_window_t w, bool isMapped)
|
||||||
setBlockingCompositing(info->isBlockingCompositing());
|
setBlockingCompositing(info->isBlockingCompositing());
|
||||||
readShowOnScreenEdge(showOnScreenEdgeCookie);
|
readShowOnScreenEdge(showOnScreenEdgeCookie);
|
||||||
|
|
||||||
|
// Forward all opacity values to the frame in case there'll be other CM running.
|
||||||
|
connect(Compositor::self(), &Compositor::compositingToggled, this,
|
||||||
|
[this](bool active) {
|
||||||
|
if (active) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (opacity() == 1.0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NETWinInfo info(connection(), frameId(), rootWindow(), 0, 0);
|
||||||
|
info.setOpacity(static_cast<unsigned long>(opacity() * 0xffffffff));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// TODO: there's a small problem here - isManaged() depends on the mapping state,
|
// TODO: there's a small problem here - isManaged() depends on the mapping state,
|
||||||
// but this client is not yet in Workspace's client list at this point, will
|
// but this client is not yet in Workspace's client list at this point, will
|
||||||
// be only done in addClient()
|
// be only done in addClient()
|
||||||
|
|
Loading…
Reference in a new issue