Commit graph

53 commits

Author SHA1 Message Date
Martin Gräßlin
4351d6ce44 Cleanup and reorder includes in toplevel.h
REVIEW: 110202
2013-04-26 12:33:44 +02:00
Martin Gräßlin
89c2fd5598 Remove YesIKnowWhatImDoing from internal API
No need to have Allowed everywhere.

REVIEW: 110197
2013-04-26 12:29:42 +02:00
Martin Gräßlin
6d6b013720 Introduce a proper screen property in Toplevel
Instead of calculating the screen number each time screen() is invoked,
the screen number gets stored in a private member variable and evaluated
whenever either the screen count changes or the Toplevel's geometry
changes. During move/resize the screen property doesn't get updated. The
update is delayed till the end of the move/resize operation.

REVIEW: 109715
2013-04-02 08:21:01 +02:00
Martin Gräßlin
b967527db3 Use XCB to resolve the X11 Extensions
The extension handling is removed from kwinglobals and moved into the
xcbutils in KWin core in namespace KWin::Xcb. The motivation for this
change is that the Extensions are only used in KWin core and are marked
as internal. So there is no need to have them in the library.

What remains in Extensions are the non-native pixmaps. This will be
removed once we are on Qt 5 as QPixmap can no longer reference an XPixmap.

The remaining code in kwinglobals also still initialize the XLib versions
of extensions emitting events. It seems like there are no XEvents emitted
if not done so even if the extension is correctly initialized with xcb.
This needs to be removed once the event handling is ported over to xcb.

REVIEW: 107832
2013-01-22 07:50:03 +01:00
Thomas Lübking
24cf0e75f3 Merge branch 'KDE/4.9'
Conflicts:
	kwin/scene.cpp
	plasma/generic/applets/batterymonitor/metadata.desktop
	plasma/generic/applets/lock_logout/metadata.desktop
2012-09-19 20:21:18 +02:00
Thomas Lübking
42ad299d88 Do not unlist Unmanaged when released onShutdown
BUG: 303244
FIXED-IN: 4.9.2
REVIEW: 106382
2012-09-19 20:16:34 +02:00
Martin Gräßlin
62d5e8124c Toplevel::windowType becomes a pure virtual function
The method windowType needs actually two implementations:
* one for Clients
* one for Unmanaged

as for Clients also the window rules are checked and hacks are applied
which is both not needed for Unmanaged windows.

To have the Client specific behavior in windowType the function used to
perform two dynamic_casts which made this method one of the most
expensive during compositing, e.g. for ~1000 frames
* called ~43000 times
* ~85000 dynamic casts
* incl. cost of method: 0.24
* self cost of method: 0.05
* incl. cost of the casts: 0.12

After the change to remove the dynamic casts we have for ~1500 frames
in Client::windowType:
* called ~31000 times
* incl. cost of 0.06
* self cost of 0.02

Calls on Unmanaged and Deleted are so low that we do not need to consider
them.

BUG: 306384
FIXED-IN: 4.10
REVIEW: 106349
2012-09-07 08:03:05 +02:00
Martin Gräßlin
563dc7fb8e Do not create Deleted on Workspace Shutdown
When the Workspace is shutting down the compositor is torn down
before Clients and Unmanaged are released. This means that there
is no need to create the Deleted windows.

Furthermore creating the Deleted manipulates the stacking_order
while Workspace dtor loops over this list to release all clients.
This may cause crashes.

BUG: 282933
FIXED-IN: 4.9.0
REVIEW: 104690
2012-04-22 17:50:20 +02:00
Philipp Knechtges
2c08a14ff4 kwin: implement _KDE_NET_WM_OPAQUE_REGION
This patch implements an XProperty named _KDE_NET_WM_OPAQUE_REGION
which gives the compositor the information which part of a window
is opaque although it is an ARGB visual. The basic ideas are from
http://www.mail-archive.com/wm-spec-list@gnome.org/msg00715.html

Additionally the patch makes kwin  use this information to do a better
clipping in Scene::paintSimpleScreen which should result in a higher
performance.

REVIEW: 102933
2011-10-23 17:09:44 +02:00
Montel Laurent
62c5a5e276 normalize signal/slots 2011-08-17 23:51:55 +02:00
Arthur Arlt
02e08be5bd Merge signals clientClosed() and unmanagedClosed() to windowClosed()
This commit merges the two signals clientClosed() and unmanagedClosed() to windowClosed() which
is now provided by Toplevel.
The approriate slots in effects.h and effects.cpp were merges as well, since they did the
same.
The direct method calls of the method windowClosed() in SceneOpenGL and SceneXRender were
removed and are now connected to the appropriate signal in windowAdded().
2011-07-05 11:46:13 +02:00
Arthur Arlt
b63c9c1af8 Make mothod windowGeometryShapeChanged() a slot
The method windowGeometryShapeChanged() from the class Scene is now a slot. It is now connected to the signal geometryShapeChanged() which is sent from Toplevel instances Client and Unmanaged.
All direct method calls were deleted.
2011-07-05 11:34:12 +02:00
Martin Gräßlin
7287019050 Update cached Shadow information on size changes
In order to notice when the geometry changes a new signal is
added to toplevel and both Unmanaged and Client connect all their
signals which are emitted whenever the geometry changes in some way
to this new signal.

Shadow connects to the signal and updates the quads and region
whenever the size changes.
2011-04-03 12:43:57 +02:00
Martin Gräßlin
38e9ab9a4e Move ownership on Shadow from Toplevel to Scene::Window
The Shadow is clearly an aspect of the compositor. Therefore the
Shadow has to be owned and controlled by the Scene::Window.
Nevertheless Toplevel needs to know about the Shadow cause of reading
the property.
2011-04-03 11:31:33 +02:00
Martin Gräßlin
89aa8ee8db Fix repainting of shadow after window closes
Unmanaged needs to repaint the complete geometry including shadow
when it ends compositing. Therefore we need to track the shadow
passing to deleted correctly. Disadvantage: when turning off
compositing the shadow is kept. Need to solve in a better way!
2011-04-01 21:49:44 +02:00
Martin Gräßlin
0b85768ec5 EffectsHandler emits windowClosed signal
Client and Unmanaged use a signal to notify that they are about to be closed.
The EffectsHandlerImpl is connected to those signals and emits the appropriate
windowClosed signal to which the effects are connected.
2011-02-27 09:25:45 +01:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Kevin Ottens
ff61f40d8d Don't rely on the kdgstream typedef which is deprecated. Use QDebug
directly.

svn path=/trunk/KDE/kdebase/workspace/; revision=1190379
2010-10-27 14:16:56 +00:00
Chani Armitage
a9ad071575 Activity association for windows.
ok'd by fredrikh.
this code is buggy right now, but I promise to squash the bugs by the 19th :)


svn path=/trunk/KDE/kdebase/workspace/; revision=1125614
2010-05-11 20:30:20 +00:00
Fredrik Höglund
0a8c06b054 Implement support for _KDE_NET_WM_FRAME_OVERLAP.
svn path=/trunk/KDE/kdebase/workspace/; revision=1054393
2009-11-25 23:32:35 +00:00
Jason vanRijn Kasper
fb0a01228f This change allows KWin to use the new NETWinInfo2 class (binary
compatibility class) and subsequently properly handle the
_NET_WM_FULLSCREEN_MONITORS EWMH spec hint.

svn path=/trunk/KDE/kdebase/workspace/; revision=885362
2008-11-17 08:03:39 +00:00
Benjamin K. Stuhl
88c7325914 We need to explicitly select for PropertyChangeMask, so that we see
PropertyNotify events for effects. This fixes the task bar tooltip
showing the preview for the first item hovered even when you move to
another item.

svn path=/trunk/KDE/kdebase/workspace/; revision=776040
2008-02-17 07:45:49 +00:00
Luboš Luňák
01bf6cbb4c License cleanup - add headers where missing, be explicit about GPL
being v2+ (right now it says just GPL, which according to GPL itself
means any GPL). Decoration clients will come later.
CCMAIL: kwin@kde.org


svn path=/trunk/KDE/kdebase/workspace/; revision=742302
2007-11-27 19:40:25 +00:00
Luboš Luňák
1bfe2b9afd Read more properties also for unmanaged windows.
svn path=/trunk/KDE/kdebase/workspace/; revision=736251
2007-11-13 19:25:44 +00:00
Luboš Luňák
f5f2afc983 Don't remove event masks on kwin's own widgets.
svn path=/trunk/KDE/kdebase/workspace/; revision=734667
2007-11-09 14:48:26 +00:00
Luboš Luňák
c29c66832d Make quads carry information about whether the quad is part
of decoration or the actual window contents.


svn path=/trunk/KDE/kdebase/workspace/; revision=689554
2007-07-18 15:01:59 +00:00
Luboš Luňák
f52b8e48cd branches/work/kwin_composite becomes new trunk kwin.
svn path=/trunk/KDE/kdebase/workspace/; revision=659202
2007-04-29 17:35:43 +00:00
Luboš Luňák
2b7e1f4993 Remove kwin, kwin_composite will become new trunk kwin, missing merges
from trunk will be merged in.


svn path=/trunk/KDE/kdebase/workspace/; revision=659200
2007-04-29 17:34:49 +00:00
Rivo Laks
02032f8587 Move most (all?) internal methods from EffectsHandler to EffectsHandlerImpl.
The ugly side effect of this is that there are tons of static_casts in the code now... maybe it
  would be better to add effectImpl() convenience method and use that?

svn path=/branches/work/kwin_composite/; revision=652348
2007-04-10 18:47:13 +00:00
Luboš Luňák
e3b865cd5f namespace KWinInternal -> KWin - shorter typing of names in gdb, yay
svn path=/branches/work/kwin_composite/; revision=650770
2007-04-05 12:07:35 +00:00
Luboš Luňák
8b5b40e4e8 Shadows. Right not it's only flat black rectangle, but otherwise
everything should work.


svn path=/branches/work/kwin_composite/; revision=646315
2007-03-25 10:48:07 +00:00
Luboš Luňák
4019dff500 Distinguish between damage and repaints - damage is when windows contents
change, repaint just triggers repaint of the area (without e.g. the texture
updating for OpenGL).
addDamage() -> addRepaint()
CCMAIL: kwin@kde.org


svn path=/branches/work/kwin_composite/; revision=632866
2007-02-12 15:22:43 +00:00
Luboš Luňák
24eacc4908 Move NETWinInfo and few more things from Client to the base class.
svn path=/branches/work/kwin_composite/; revision=632380
2007-02-10 21:56:24 +00:00
Luboš Luňák
63a97b7d3d Add DesktopChangeSlideEffect, an effect that on virtual desktop
change slides the old desktop out and the new one in. Should not
be really technically different from the cube.


svn path=/branches/work/kwin_composite/; revision=629163
2007-02-01 17:20:48 +00:00
Luboš Luňák
0ae5a772e7 Add EffectWindow as a window representation for effects,
to hide the change from Client/Unmanaged and eventually also
act as the only API available to effects.


svn path=/branches/work/kwin_composite/; revision=626360
2007-01-22 22:57:22 +00:00
Luboš Luňák
77f803a563 Instead of the somewhat fragile way of trying to clean up Client/Unmanaged
instances and keeping them around after the window is closed, create
class Deleted as a representation of a closed window.


svn path=/branches/work/kwin_composite/; revision=626356
2007-01-22 22:51:30 +00:00
Luboš Luňák
ff6f889ffc Add support for showing effects for windows which have already been deleted.
Add a fade-out effect.


svn path=/branches/work/kwin_composite/; revision=623872
2007-01-15 18:03:04 +00:00
Luboš Luňák
579f174e63 Make sure to track only mapped override-redirect windows.
svn path=/branches/work/kwin_composite/; revision=621333
2007-01-08 16:54:32 +00:00
Luboš Luňák
1765551277 Support for "input windows" that let effects intercept mouse events
when they e.g. want to let the user select from window thumbnails.


svn path=/branches/work/kwin_composite/; revision=620305
2007-01-05 16:45:56 +00:00
Luboš Luňák
9f48b9dd02 But now there's a race condition - use a server grab to atomatically
check if the window still exists and selecting for events on it.


svn path=/branches/work/kwin_composite/; revision=620295
2007-01-05 16:13:57 +00:00
Luboš Luňák
2cbf4bb1c2 Don't change input mask of all unmanaged windows.
svn path=/branches/work/kwin_composite/; revision=620291
2007-01-05 16:02:51 +00:00
Luboš Luňák
cb549777ba Damage workspace when a window is unmapped to cause repainting of that area.
svn path=/branches/work/kwin_composite/; revision=607286
2006-11-23 23:05:50 +00:00
Luboš Luňák
fef4dec6e6 Add COPY_BUFFER workaround from glcompmgr that makes this work
even with stable 8776 nvidia drivers (the beta ones lock up on me
from time to time with multiple X running).


svn path=/branches/work/kwin_composite/; revision=597767
2006-10-21 15:23:01 +00:00
Luboš Luňák
b168c35384 Don't cache window pixmap, it's used only after it
changes.


svn path=/branches/work/kwin_composite/; revision=593453
2006-10-07 21:20:23 +00:00
Luboš Luňák
d65ebbcb5f Opengl transparency.
svn path=/branches/work/kwin_composite/; revision=590751
2006-09-30 18:09:41 +00:00
Luboš Luňák
ace6b4ad8a Opengl support for shaped windows.
svn path=/branches/work/kwin_composite/; revision=590728
2006-09-30 17:28:27 +00:00
Luboš Luňák
e24815411a Keep damage info separately for every window.
svn path=/branches/work/kwin_composite/; revision=561966
2006-07-13 18:17:49 +00:00
Luboš Luňák
64bf5bc51e Don't track InputOnly windows.
svn path=/branches/work/kwin_composite/; revision=560591
2006-07-10 18:20:25 +00:00
Luboš Luňák
0516e1e73b Add support for translation and add two "plugins" that
make windows transparent or shake them while moving.


svn path=/branches/work/kwin_composite/; revision=559013
2006-07-06 13:17:44 +00:00
Luboš Luňák
1719127d3f Make the opacity slider and wheel operations work again.
svn path=/branches/work/kwin_composite/; revision=558740
2006-07-05 22:26:34 +00:00