Commit graph

95 commits

Author SHA1 Message Date
Luboš Luňák
5faa397849 Vertex redesign - redo the way windows are split into smaller parts
for use in effects (and not only). Now a list of window quads (=window areas)
is created at the beginning of the paint pass, prepaint calls can modify
the split itself (i.e. divide it into more parts). The actual paint calls
can then modify these quads (i.e. transform their geometry). This will allow
better control of how the split is done and also allow painting e.g. only
the decoration differently. Still work in progress, but it works.
Also pass data to prepaint functions in a struct, as there is
already quite a number of them.


svn path=/trunk/KDE/kdebase/workspace/; revision=684893
2007-07-07 14:01:32 +00:00
Luboš Luňák
9052116e4f Support for having previews even for unmapped windows - they're
actually kept mapped, so that they still have the backing pixmap.
Plus some small tricks to prevent such windows from interfering.
Only two basic modes are implemented right now.


svn path=/trunk/KDE/kdebase/workspace/; revision=683156
2007-07-04 09:51:10 +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
e85930ce1e prePaintWindow() calls of effects are now all done before anything is rendered. This is necessary e.g. for
upcoming blur effect.
Also postPaintScreen() is now called after postPaintWindow() calls.

svn path=/branches/work/kwin_composite/; revision=658757
2007-04-28 13:02:51 +00:00
Luboš Luňák
10bfb82e8c Make PresentWindows effect work properly even with idle paint passes
(i.e. trigger next repaint properly and react on mouse events).


svn path=/branches/work/kwin_composite/; revision=653921
2007-04-14 15:33:12 +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
Rivo Laks
0353f3376e Make effects actual plugins, so it's possible to load them on runtime.
There's also a kwineffects library now, containing the effects API, which makes it possible to write
  third-party effects.
API isn't complete yet and for now just two effects have been converted but I'm working on it :-)

svn path=/branches/work/kwin_composite/; revision=652226
2007-04-10 13:02:08 +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
da02ba11ca Scene*::Window classes are now too complex to be value-based,
allocate them dynamically.


svn path=/branches/work/kwin_composite/; revision=645046
2007-03-21 15:52:42 +00:00
Luboš Luňák
f6ad1881e1 Support for window thumbnails.
svn path=/branches/work/kwin_composite/; revision=640344
2007-03-07 17:50:33 +00:00
Philip Falkner
c16656d66d Rework how window painting is disabled; now effects can indicate reasons they want particular windows painted or not.
This solves a few problems, but may need revisiting in the future.

svn path=/branches/work/kwin_composite/; revision=632581
2007-02-11 17:36:32 +00:00
Philip Falkner
949aa1a778 Add PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS flag, to be called by effects in prePaintScreen(). Indicates that some window(s) may have transformed geometry, so the whole screen should be repainted.
svn path=/branches/work/kwin_composite/; revision=632580
2007-02-11 17:35:10 +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
Philip Falkner
f060c3bfbb Improved filtering algorithm. Now fast filtering is used by default, while (depending on SmoothScale in kwinrc) bilinear filtering is used on transformed windows and screens.
Optionally, if SmoothScale is set to 2, trilinear filtering will be attempted instead of bilinear.  This requires GL_ARB_texture_non_power_of_two, GL_EXT_framebuffer_object, and valid mipmaps.

svn path=/branches/work/kwin_composite/; revision=629453
2007-02-02 19:58:35 +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
Rivo Laks
c2830a6360 Effects can now request windows to be subdivided into multiple quads.
Effects also get access to window's vertices. This can be used to change shape of
  the window, e.g. for wobble effect

svn path=/branches/work/kwin_composite/; revision=626706
2007-01-24 11:51:38 +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
92652a187d Support in scene painting code for drawing also hidden windows.
svn path=/branches/work/kwin_composite/; revision=621337
2007-01-08 17:05:58 +00:00
Luboš Luňák
d33323be67 Paint only windows that are visible.
svn path=/branches/work/kwin_composite/; revision=610615
2006-12-04 18:31:36 +00:00
Luboš Luňák
f1be2aa724 Optimize XRender painting by manually doing clipping, even with transformations.
Since it's unlikely XRender code will use other transformations then the ones
provided this should be ok. Makes painting with obscured windows much faster
(i.e. it's just slow, not bloody slow).


svn path=/branches/work/kwin_composite/; revision=610613
2006-12-04 18:30:41 +00:00
Luboš Luňák
6a66250620 Better synchronization of refresh rate and vsyncing,
patch by Philip Falkner.


svn path=/branches/work/kwin_composite/; revision=610110
2006-12-03 13:29:14 +00:00
Luboš Luňák
049460fa2e Reset window damage after updating the damaged areas of the OpenGL texture
or Xrender picture, not after every repaint.
This also allows removing the confusing initPaint()/postPaint() calls in Scene.


svn path=/branches/work/kwin_composite/; revision=607500
2006-11-24 21:28:00 +00:00
Luboš Luňák
2c9dd370d9 Do not try to paint outside of the screen.
svn path=/branches/work/kwin_composite/; revision=606822
2006-11-21 22:22:48 +00:00
Luboš Luňák
0283b97a62 When no transformations are needed simple screen painting can be used
even for painting the whole screen, not just a region.


svn path=/branches/work/kwin_composite/; revision=605563
2006-11-17 08:43:24 +00:00
Luboš Luňák
d92d3a8165 Document the compositing framework and the scene backends,
describe the design, add links to external docs.
Restructure COMPOSITE_TODO into sections and add sort of priorities.


svn path=/branches/work/kwin_composite/; revision=600163
2006-10-29 19:23:45 +00:00
Luboš Luňák
3f9b754ee7 Add post-painting pass to be used for triggering
repaints with animations.


svn path=/branches/work/kwin_composite/; revision=600156
2006-10-29 19:07:10 +00:00
Luboš Luňák
6b41c062c8 Remove the WrapperEffect hack, it's ugly.
svn path=/branches/work/kwin_composite/; revision=600155
2006-10-29 19:06:32 +00:00
Luboš Luňák
10b31e7222 Support for animations, still some todo's pending.
svn path=/branches/work/kwin_composite/; revision=598831
2006-10-24 19:17:48 +00:00
Luboš Luňák
548eb09a74 Move shared code to base class.
svn path=/branches/work/kwin_composite/; revision=598752
2006-10-24 13:38:31 +00:00
Luboš Luňák
1d7b94acfc Basic window transformations.
svn path=/branches/work/kwin_composite/; revision=597997
2006-10-22 10:15:19 +00:00
Luboš Luňák
779597a648 Basic screen transformation.
svn path=/branches/work/kwin_composite/; revision=597815
2006-10-21 18:07:00 +00:00
Luboš Luňák
ddab4e0d2c Move functionality to the base Scene class.
svn path=/branches/work/kwin_composite/; revision=596186
2006-10-16 21:06:34 +00:00
Luboš Luňák
338adc9ad5 Throw away old code for effects and start anew.
svn path=/branches/work/kwin_composite/; revision=595965
2006-10-16 10:12:48 +00:00
Luboš Luňák
d547cf8cd4 Move duplicated functionality to the base class.
svn path=/branches/work/kwin_composite/; revision=595639
2006-10-15 08:58:38 +00:00
Luboš Luňák
06203d0652 Don't bother with trying to transform window damage,
when there are any transformations, it should simply
repaint everything (todo).


svn path=/branches/work/kwin_composite/; revision=593450
2006-10-07 21:18:36 +00:00
Luboš Luňák
649887d6c2 Looks like using XserverRegion for keeping damage regions
wasn't that good idea. Changed to QRegion.


svn path=/branches/work/kwin_composite/; revision=590648
2006-09-30 15:40:03 +00:00
Luboš Luňák
1c7e7bb2b7 Keeping scene-related data in opengl scene.
svn path=/branches/work/kwin_composite/; revision=590319
2006-09-29 19:05:36 +00:00
Luboš Luňák
e6c23e4cd3 Ok, I give up, whoever wants more complicated transformations than just
translation are welcome to implement it themselves. I'm no graphics guy
after all and this seems to be far beyond me.


svn path=/branches/work/kwin_composite/; revision=559182
2006-07-06 18:22:01 +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
c7f515630d Support for transparency.
svn path=/branches/work/kwin_composite/; revision=558690
2006-07-05 20:52:57 +00:00
Luboš Luňák
afcc9b6897 Prepare for scene rendering with different engines.
svn path=/branches/work/kwin_composite/; revision=558442
2006-07-05 12:30:03 +00:00