Commit graph

103 commits

Author SHA1 Message Date
Thomas Lübking
e789daf1bc clean dirty rect from repaints_region when updating shadow, skip double resetting of shadow rect
REVIEW: 104028
2012-02-21 17:19:24 +01:00
Philipp Knechtges
6f3b9fae2a kwin: fixing _NET_WM_OPAQUE_REGION related bug
The initial implementation forgot to consider the client borders.

BUG: 293574
FIXED-IN: 4.8.1
2012-02-08 16:41:02 +01:00
Martin Gräßlin
f98593d3fb Window Thumbnail support for QML
A new QML item "ThumbnailItem" is registered to the TabBox. The
C++ implementation finds the EffectWindow of the TabBox and adds
itself to the EffectWindow.

While rendering the EffectWindow the information for all registered
ThumbnailItems are extracted and the thumbnail is rendered on top
of the EffectWindow.

This has obvious limitations like you cannot put other QML items
on top of the thumbnail. Nevertheless it works well enough to
be a possible replacement for e.g. BoxSwitch effect.

When compositing is disabled an icon is rendered instead of the
Thumbnail.

One TabBox Layout inspired by BoxSwitch Effect is added. For the
KCM small pre-rendered items are used.

REVIEW: 103039
2011-11-10 14:28:06 +01:00
Fredrik Höglund
ebd0d9303b kwin: Replace calls to QElapsedTimer::restart() with start()
It doesn't make sense to call restart() without using the return
value, or when the timer has never been started.
2011-10-29 17:41:16 +02:00
Fredrik Höglund
c784dbb097 kwin: Fix two ;;'s 2011-10-29 17:41:16 +02:00
Fredrik Höglund
7f0c74cb38 kwin: Initialize Scene::lastRenderTime
This fixes a valgrind error
2011-10-29 17:41:16 +02:00
Fredrik Höglund
44165bb0d1 kwin: Initialize QElapsedTimers by calling invalidate()
QElapsedTimer doesn't have a constructor that initializes the
private members. This means that calls to isValid() will depend
on uninitialized data when the timer has never been started.

elapsed() and restart() will also use and return values
computed from uninitialized data.

This fixes several valgrind errors.
2011-10-29 17:40:09 +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
Martin Gräßlin
6e15c0c208 Change timers to QElapsedTimers
Instead of calculating the elapsed time from epoch clock, using
a QElapsedTimer as well as reusing the timer object instead of
creating a new one in the scene each frame.

REVIEW: 102473
2011-08-29 06:48:44 +02:00
Martin Gräßlin
f72f465c13 Fix Typos
Krazy--
SVN_SILENT
2011-08-03 08:25:10 +02:00
Philipp Knechtges
a145fa564c kwin: fix an issue in paintSimpleScreen
Damaged windows for which painting is disabled should not be considered.
2011-07-14 14:17:33 +02:00
Philipp Knechtges
85c5181a81 kwin: Avoid painting damaged areas which are occluded by another opaque window.
So far we have not used the information that damage events are window-specific, resulting in the
behavior that we repainted the damaged area although it might be hidden behind another window.
E.g. the CPU-Monitor plasmoid is almost all day occluded by a browser etc. and before this patch
we have been repainting the appropiate area every time the plasmoid has been updated.

Thx to Thomas Lübking for optimizing the patch.

REVIEW: 101846
2011-07-11 19:35:29 +02:00
Arthur Arlt
d8072be54d Move OverlayWindow from Workspace to its own class
All the functionality of Overlay Window is moved to its own class
OverlayWindow. It is created and owned by class Scene, since almost
all function calls are called from this class.

REVIEW: 101866
2011-07-09 19:08:48 +02:00
Arthur Arlt
d88cb00b0b Make class Scene inherit from QObject
The class Scene now inherits from QObject and has the Q_OBJECT macro. The inheriting classes SceneOpenGL and SceneXRender are provided with the Q_OBJECT macro. Now it is possible to use signals and slots and replace direct method calls.
2011-07-05 11:34:12 +02:00
Martin Gräßlin
6cfdbfe1dc Remove compositing self-check
Removes the last bits of the self-check at compositing startup.
It seems like they were only added to XRender because they were
in OpenGL and there they are not available for quite some time.

Also removes the now obsolete disable functionality checks from UI.

REVIEW: 101756
2011-06-26 09:19:22 +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
12220a0d59 Initial implementation of new Shadows in KWin
For a complete documentation of new functionality refer to:
http://community.kde.org/KWin/Shadow

The current implementation includes a new Shadow class and Toplevel
holds a pointer to an instance of this class. The Shadow class reads
the data from the X11 Property. There is one extended class located
in SceneOpenGL to render the shadow.

Compositor is adjusted to include the shadow region into the painting
passes.

Implementation for XRender still missing and Shadow needs to respond
to size changes of the Toplevel to update cached shadow region and
WindowQuads.
2011-03-27 12:33:07 +02:00
Thomas Lübking
0c5d47f3ae unify composite activation, 'Enable' only controls initial state 2011-03-06 22:35:13 +01:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Martin Gräßlin
6e31461039 Adding a new rendering flag for painting the screen with transformed windows but without triggering full repaints.
It is not always required to do a full repaint in each frame. E.g. in sliding popups the repaint areas are known and tracked.
This change reduces the painting overhead to just the window area.
Nevertheless I consider this change as experimental and will revert the commit in case it introduces rendering glitches.
Other effects which are good candidates for this flag is wobbly windows, magic lamp, minimize or in general all effects which transform just one window.

svn path=/trunk/KDE/kdebase/workspace/; revision=1158838
2010-08-03 21:33:27 +00:00
Martin Gräßlin
e2eebb6503 Refactoring of EffectFrame: EffectFrame becomes an interface just like EffectsHandler and EffectWindow and a concrete EffectFrameImpl in core.
Rendering of the EffectFrame is moved into the scene as Scene::EffectFrame with a concrete implementation in SceneXrender and SceneOpenGL.
A factory method for an EffectFrame is added to the EffectsHandler, which is used by the effects.
Next step: pass the EffectFrame through all effects, so that effects can transform, blur, invert whatever it.

svn path=/trunk/KDE/kdebase/workspace/; revision=1151271
2010-07-18 16:32:37 +00:00
Martin Gräßlin
191435d425 Move Lanczos filter from taskbarthumbnail effect into the scene and use it also in boxswitch, presentwindows and thumbnailaside effects.
svn path=/trunk/KDE/kdebase/workspace/; revision=1133901
2010-06-02 20:04:54 +00:00
Fredrik Höglund
e1161c2525 Don't paint windows that are not on the current activity.
svn path=/trunk/KDE/kdebase/workspace/; revision=1127193
2010-05-15 20:18:57 +00:00
Hugo Pereira Da Costa
df712a4802 reverting r1121187
on developpers request.
CCBUG: 235821

svn path=/trunk/KDE/kdebase/workspace/; revision=1121252
2010-04-30 23:06:02 +00:00
Hugo Pereira Da Costa
81e2b18888 Properly account for windeco padding, when deciding which parts of the decoration are to be
drawn in "buildQuads" method.

Bug: 235820

svn path=/trunk/KDE/kdebase/workspace/; revision=1121191
2010-04-30 19:12:17 +00:00
Hugo Pereira Da Costa
73c39daaaa renamed toplevelDecorationHasAlpha into decorationHasAlpha
svn path=/trunk/KDE/kdebase/workspace/; revision=1121190
2010-04-30 19:01:48 +00:00
Hugo Pereira Da Costa
9f8bbd1d6c Take decorationUseAlpha decoration flag when setting the PAINT_WINDOW_TRANSLUCENT bit mask.
BUG: 235821

svn path=/trunk/KDE/kdebase/workspace/; revision=1121187
2010-04-30 18:34:08 +00:00
Lucas Murray
7d897b7d3f Added PAINT_DISABLED_BY_CLIENT_GROUP. Allow highlighting of inactive tab
windows in box switch.

svn path=/trunk/KDE/kdebase/workspace/; revision=1065321
2009-12-23 01:44:23 +00:00
Martin Gräßlin
279b3d07f8 Crash less
BUG: 216908

svn path=/trunk/KDE/kdebase/workspace/; revision=1056931
2009-12-01 09:31:47 +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
Martin Gräßlin
1b24e5bf92 When we have a shaded window we have to create the four decoration quads manually. For each deco pixmap there has to be one quad of same size.
This requires some testing and will be backported in two or three weeks.
BUG: 195593

svn path=/trunk/KDE/kdebase/workspace/; revision=1004690
2009-07-30 18:22:21 +00:00
Fredrik Höglund
33b8ab7d91 Really fix the crash on gwenview startup this time.
Apparently a Toplevel isn't always a Client when the client rect 
is different from the toplevel rect.

svn path=/trunk/KDE/kdebase/workspace/; revision=980458
2009-06-11 19:42:55 +00:00
Fredrik Höglund
f81485d868 Fix shaded and shaped windows not being clipped correctly.
BUG: 193808

svn path=/trunk/KDE/kdebase/workspace/; revision=973673
2009-05-27 16:04:58 +00:00
Fredrik Höglund
8bba7aed7d Make it possible for the decorations to paint outside the window frame
when compositing is enabled, by letting them add additional padding
to the sides of the frame.

svn path=/trunk/KDE/kdebase/workspace/; revision=963586
2009-05-04 22:35:33 +00:00
Fredrik Höglund
e92aab0518 Implement initial support for ARGB window decorations.
Based on earlier work done by Lubos Lunak and ideas by Lucas Murray.

svn path=/trunk/KDE/kdebase/workspace/; revision=957680
2009-04-22 17:29:56 +00:00
Luboš Luňák
7249ca2cfb Do self-check immediatelly during compositing setup only when it's not KWin startup
at the same time (in other words, only when activating compositing using the kcm).
Currently selfcheck causes bad flicker (due to X mapping the overlay window
for too long?) which looks bad during KDE startup. With this patch, KDE startup
is without any flicker.


svn path=/trunk/KDE/kdebase/workspace/; revision=923842
2009-02-09 14:51:11 +00:00
Luboš Luňák
6fef8fe8bd Use 3x2 sized pixmap for the self-check rather than 5x1, to also
check for Y inversion (bnc#450801, although I have no idea what
the real problem there is).


svn path=/trunk/KDE/kdebase/workspace/; revision=904309
2009-01-01 21:17:27 +00:00
Lucas Murray
c84d39b5df Complete port to Kephal.
svn path=/trunk/KDE/kdebase/workspace/; revision=884554
2008-11-15 11:38:26 +00:00
Lucas Murray
c07ba30b63 Fixed shadow effect losing its shadows after making changes to the settings.
Added force mode to buildQuads() to allow refreshing the cache.
Made EffectWindow::buildQuads() no longer internal.

svn path=/trunk/KDE/kdebase/workspace/; revision=872836
2008-10-18 10:31:59 +00:00
Lucas Murray
899d578c49 Merge Libkdecoration2 Git branch.
WARNING: Breaks shadow effect. I don't think it causes anything to crash anymore but it is VERY ugly visually.

Contains:
 - New decoration API that allows decorations to change the way shadows look.
 - Shadows now wobble.
 - API example code in the Oxygen decoration.
 - Added buildQuads() effect plugin hook.
 - Work on the shadow effect to use the new decoration shadow API as well.
 - Added IDs to WindowQuads.
 - Added public accessors to texture coords in WindowVertex.

Would like all this to be reviewed.

CCMAIL: kwin@kde.org

svn path=/trunk/KDE/kdebase/workspace/; revision=872473
2008-10-17 10:30:43 +00:00
Luboš Luňák
402ea46332 Avoid drawing corruptions caused by window geometry and shape
being out of sync (bnc#430472).


svn path=/trunk/KDE/kdebase/workspace/; revision=866586
2008-10-01 11:53:48 +00:00
Luboš Luňák
e433f92374 Avoid useless repeated processing of checking whether to unredirect.
svn path=/trunk/KDE/kdebase/workspace/; revision=863933
2008-09-23 14:51:21 +00:00
Luboš Luňák
6796c1225f Self-check also for XRender.
svn path=/trunk/KDE/kdebase/workspace/; revision=862312
2008-09-18 15:27:13 +00:00
Luboš Luňák
14ae8d2dc9 Support for unredirecting fullscreen windows, i.e. games etc. can paint directly
and not be slowed down by going through compositing. Turned on and no UI option
in the naive hope that it won't cause any real problems. Maybe effects doing
window previews should get API to suspend unredirect though.


svn path=/trunk/KDE/kdebase/workspace/; revision=851742
2008-08-24 13:32:57 +00:00
Albert Astals Cid
3b9121ec3f const & in foreach
svn path=/trunk/KDE/kdebase/workspace/; revision=801427
2008-04-26 16:03:02 +00:00
Luboš Luňák
1927a283b3 Cache window quads since they usually don't change and this gives
few fps.


svn path=/trunk/KDE/kdebase/workspace/; revision=787978
2008-03-20 11:17:50 +00:00
Rivo Laks
c920574f4d Return empty shape region if XShapeGetRectangles() returns null.
svn path=/trunk/KDE/kdebase/workspace/; revision=781850
2008-03-03 19:17:56 +00:00
Luboš Luňák
cff2b0e6cd Abstract paint clipping into PaintClipper helper class that allows
stacking of clipping regions.
(http://lists.kde.org/?l=kwin&m=120138051215450&w=2)
BUG: 156798


svn path=/trunk/KDE/kdebase/workspace/; revision=779045
2008-02-25 11:32:21 +00:00
Luboš Luňák
fc848b8cd9 Don't paint windows that have been hidden by KWin itself.
svn path=/trunk/KDE/kdebase/workspace/; revision=778351
2008-02-23 13:41:53 +00:00
Bill Egert
c12a07e11a Update QRect stuffs.
intersect() => intersected()
addCoords() => adjust()
coords() => getCoords()
moveBy() => translate()
rect() => getRect()

svn path=/trunk/KDE/kdebase/runtime/kstyles/; revision=776918
2008-02-19 01:58:04 +00:00