Commit graph

1826 commits

Author SHA1 Message Date
Martin Gräßlin
1a226ea3ca Optimization of Dashboard Effect
I think my review was not good enough on that effect.
2011-03-17 19:15:00 +01:00
Martin Gräßlin
b52975a57e Merge branch 'libkwineffects'
The branch contains the first step in reworking the kwineffects
library. This includes:
* replacing virtuals by signals and slots
* dropping some unused methods
* remove KWin::TimeLine

More to come.

Conflicts:
	kwin/workspace.cpp
2011-03-16 19:46:59 +01:00
Martin Gräßlin
82b8f8d2fc Drop the driver blacklist
Let's face it: it was a bad idea and the blacklist never got updated.
2011-03-15 20:11:11 +01:00
Martin Gräßlin
f213b7da70 Drop KWin::TimeLine from kwineffects
The KWin::TimeLine class was only a small wrapper around QTimeLine
without adding anything to QTimeLine what is not present in QTimeLine.
The initial idea was to make it possible to provide more curve shapes.
This is now obsoleted by Qt shipping more useful curves with QTimeLine.

So let's clean up a little bit and use QTimeLine directly instead of
the small wrapper.

All effects are adjusted to use QTimeLine directly.
2011-03-14 22:50:05 +01:00
Script Kiddy
fef3ee0ec6 SVN_SILENT made messages (.desktop file) 2011-03-14 08:45:54 +01:00
Martin Gräßlin
2cf51238a8 kwineffects doesn't use kdecorations 2011-03-13 16:56:25 +01:00
Martin Gräßlin
e5e5c4a020 Move push/popRenderTarget to kwingluitls
(De)Activating a FBO is OpenGL specific and does not belong into EffectsHandler.
2011-03-13 14:34:30 +01:00
Martin Gräßlin
32c903b05b Rework signals for move/resize windows
First a signal is emitted when the user starts a move/resize operation.
During the move/resize operation each geometry change emits an update signal.
Last but not least a finish signal is emitted.

This eliminates the specific method for geometry updates in drawbound resize
mode.
2011-03-13 12:41:30 +01:00
Martin Gräßlin
909a678e13 New signal for maximize state changed
The signal includes the state for horizontal and vertical maximize state.
It would be better to use the enum fro, KDecorationDefines but we don't want
to depend on decorations library.

Wobbly windows is adjusted to use this new signal - it is the only effect
interested in maximize state change.
2011-03-13 11:00:10 +01:00
Martin Gräßlin
640fdc7b6d PropertyNotify becomes a signal 2011-03-12 19:18:19 +01:00
Martin Gräßlin
f134a5c6bd DashboardEffect does not have a propertyNotify method
So there is no need to call the virtual method of the parent class
which does nothing.
2011-03-12 18:54:18 +01:00
Martin Gräßlin
88d50727ee WindowDamaged becomes a signal 2011-03-12 15:04:22 +01:00
Martin Gräßlin
39ab2cf29e MouseChanged becomes a signal 2011-03-12 14:37:30 +01:00
Martin Gräßlin
911098ee76 WindowGeometryShapeChanged becomes a signal 2011-03-12 12:34:59 +01:00
Martin Gräßlin
dcebc7481b ClientGroupItem* become signals
This needs to be improved in core. Currently ClientGroup does not yet
emit signals, as it would be difficult to connect them. Nevertheless
the effects dependency should be removed.
2011-03-06 21:15:09 +01:00
Martin Gräßlin
747afb4225 NumberDesktopsChanged becomes a signal
TODO: connect DesktopChangeOSD also to the signal
2011-03-06 20:10:11 +01:00
Martin Gräßlin
3529c34934 End PresentWindows effect after last window closed
Thanks to Marus Hähnel for this contribution to KDE.
CCMAIL: marcus@mh-development.info
FEATURE: 262540
FIXED-IN: 4.7.0
REVIEW: 100627
2011-03-06 19:08:14 +01:00
Martin Gräßlin
15757e953a TabBox uses signals to notify the effects
EffectsHandlerImpl just forwards the signals from TabBox. In order
to have a valid pointer to the TabBox, the TabBox is now initialized
before compositing in Workspace.
2011-03-06 12:15:16 +01:00
Martin Gräßlin
a404ec4259 WindowUnminimized becomes a signal 2011-03-06 11:08:19 +01:00
Martin Gräßlin
012222037e WindowMinimized becomes a signal 2011-03-06 10:55:27 +01:00
Martin Gräßlin
edd0950f96 WindowOpacityChanged becomes a signal 2011-03-06 10:30:23 +01:00
Martin Gräßlin
a728823fbe Fix passing matrixes to the shaders
QMatrix4x4 accepts data in row-major order, but returns them in
column-major order, which is not documented and because of that
I expected them to be in row-major order.
This commit fixes it and rewrites the shaders to apply the matrix
multiplications in the right order.
REVIEW: 100759
2011-03-06 09:13:31 +01:00
Lamarque V. Souza
b0c43762e2 Fix two problems with one commit:
1. The I18N_ARGUMENT_MISSING that appears when moving or resizing one
window. The problem happens because when declaring the variables
myResizeString, myCoordString[0] and myCoordString_[1] i18nc tries to
replace %1, %2, %3, and %4, but those arguments are not passed here.
Using #define we avoid the argument passsage.

2. Replace QString::arg() with direct formating, which is better for
performance.

I know we should avoid #define but in this case I think it is the best
option. If anyone has a better alternative feel free to change this
commit.
2011-03-03 00:37:17 -03:00
Script Kiddy
14fa13943a SVN_SILENT made messages (.desktop file) 2011-03-02 08:40:15 +01:00
Martin Gräßlin
eeb10c69d5 Signal for windowUserMovedResize
In core a new signal is added for maximizedState change of client.
Other function calls remain as direct calls for the moment.
2011-02-28 21:03:13 +01:00
Martin Gräßlin
e355700e6e EffectsHandler emits windowDeleted signal
Workspace emits a deletedRemoved signal which the EffectsHandlerImpl translates
into a windowDeleted signal.
2011-02-27 10:47:42 +01:00
Martin Gräßlin
0795ae89ac EffectsHandler emits signal on windowActivated
EffectsHandlerImpl connects to the Workspace signal clientActivated.
The emitting of the signal is slightly moved from before the activation logic
to after the activation logic. This might change behavior in the scripting
component, but the previous code looked wrong.
2011-02-27 10:05:04 +01: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
Script Kiddy
718680dfba SVN_SILENT made messages (.desktop file) 2011-02-27 08:11:47 +01:00
Martin Gräßlin
ab6f2ba1fd EffectsHandler emits windowAdded signal
All previously existing windowAdded methods are renamed to slotWindowAdded.
EffectsHandlerImpl is connected to Workspace's clientAdded signal, which is
emitted a little bit earlier than the previous direct method call. This might
change behavior.
Another signal is added to Workspace to signal that an unmanaged is added.
2011-02-25 22:06:02 +01:00
Martin Gräßlin
c3a076b6a5 EffectsHandler emits desktopChanged signal
The first signal used between EffectsHandler and Effects.
The signal is actually emitted by the EffectsHandlerImpl and only
the interested effects connect to this signal.
EffectsHandlerImpl itself is also notified by a signal from Workspace,
allowing to remove one of the many if (effects) checks.
2011-02-25 20:41:10 +01:00
Martin Gräßlin
b3a5639967 EffectsHandler and Effect become QObjects
This is in preparation for allowing to connect effects with signals and slots.
2011-02-25 20:25:21 +01:00
Martin Gräßlin
0827c2903b Use GLPlatform to decide whether shaders are supported
Dropping the static methods from GLShader and use supports()
where it was used before.
2011-02-19 11:08:43 +01:00
Martin Gräßlin
b265537962 Drop dependency to libplasma from kwineffects library
Since the EffectFrames have been moved into KWin core nothing in the
Effects lib actually used Plasma. The only remaining method is moved
to core as it's not used in the Effects. The Effects itself still
link against Plasma, so nothing changes for them.

The Plasma includes in the kwineffects header seemed to pull in
quite some additional headers, so the includes in some effects have
to be adjusted (most often KConfigGroup). This should speed up the
compilation of the library and the effects.
2011-02-17 19:38:42 +01:00
Fredrik Höglund
af92a4efd4 kwin: Rename sample to sampler in all shaders
A sample is not the same thing as a sampler.
2011-02-17 19:19:40 +01:00
Thomas Lübking
fcf68cfd69 secure m_highlightedWindows access when triggering
explicit repaint in highlight effect

forward port of 891a0a2a3272186c2c7a93f7a332e04809e3d4d4
2011-02-14 21:13:31 +01:00
Script Kiddy
18125ce37f SVN_SILENT made messages (.desktop file) 2011-02-14 16:30:56 +01:00
Script Kiddy
836b404f85 SVN_SILENT made messages (.desktop file) 2011-02-13 20:33:23 +01:00
Martin Gräßlin
dd4a169147 Fix missing include 2011-02-12 10:14:30 +01:00
Fredrik Höglund
73be6657ea kwin: Replace brightness and opacity with a modulation constant
This makes it possible to adjust both brightness and opacity
at the same time with one multiplication in the fragment shader.
2011-02-12 01:45:38 +01:00
Script Kiddy
8dc537af57 SVN_SILENT made messages (.desktop file) 2011-02-11 07:35:13 +01:00
Fredrik Höglund
2045e8dd34 kwin: Use the new setUniform() overloads in presentwindows 2011-02-11 00:41:19 +01:00
Fredrik Höglund
28cf355b26 kwin: Fix a bug in the fragment shaders
The alpha channel must be set to 1 before the sample is modulated
with the brightness and opacity constants, not after.
2011-02-11 00:39:47 +01:00
Fredrik Höglund
5e97ccf7e0 kwin: Normalize the texcoords in the vertex shader 2011-02-10 20:15:23 +01:00
Dr. Robert Marmorstein
6ccf538f49 Merge branch 'master' of git://anongit.kde.org/kde-workspace 2011-02-07 20:16:13 -05:00
Script Kiddy
95c8ba2035 SVN_SILENT made messages (.desktop file) 2011-02-07 07:07:14 +01:00
Dr. Robert Marmorstein
6f695d9a76 Merge branch 'master' of git://anongit.kde.org/kde-workspace 2011-02-06 13:57:17 -05:00
Dr. Robert Marmorstein
b9d4794977 Fix kwin crash when using animated effects.
Bug: 263383
2011-02-06 13:47:30 -05:00
Thomas Lübking
c513099354 logout effect: remove deleted windows from list
fwd port of 04831d049f73bb38694d7cecc4ea170b2a26a149
2011-02-06 16:54:20 +01:00
Thomas Lübking
7b5683f74b explicitly trigger repaint on highlight window property changes
forward port of 17934f79fa691a52efc4df142e5e8712634ad21a
2011-02-06 16:50:47 +01:00
Thomas Lübking
51ee04837f whitespace: da3a0ad39be3cd5529b3d8b259065cd26e631a0b
the other whitespace...
2011-02-06 16:39:41 +01:00
Thomas Lübking
a3328bd449 export WindowGeometry config symbols
BUG: 265272
2011-02-06 16:36:16 +01:00
Thomas Lübking
17dacb2290 strip qhash::operator[] from boxswitch
possibly prevents leaking ItemInfos
secure some accesses (selected_window), not sure whether this caused the unreproducable crash when used as proxy in coverswitch
manual fwd port of 84384efb52367e720ad82ace04ac8da668afc5ec

CCBUG: 253079
2011-02-06 00:53:22 +01:00
Script Kiddy
b90312c031 SVN_SILENT made messages (.desktop file) 2011-02-04 06:46:03 +01:00
Script Kiddy
15155326e2 SVN_SILENT made messages (.desktop file) 2011-02-03 07:25:47 +01:00
Script Kiddy
b637e9d7ca SVN_SILENT made messages (.desktop file) 2011-02-02 08:26:11 +01:00
Martin Gräßlin
54c0a913b9 Fixing broken Invert effect build.
Forgot to remove the header file for shadereffect, though
it was not used anymore in the effect.
CCMAIL: hein@kde.org
2011-02-01 20:13:26 +01:00
Eike Hein
39f57a472f Disable the invert effect to unbreak the workspace build.
invert.cpp refers to the apparently removed kwinshadereffect.h,
so it's probably missing out on some sort of porting activity.

CCMAIL:kde@martin-graesslin.com
2011-02-01 19:52:03 +01:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Martin Gräßlin
cf03487331 Remove Shadow Effect.
The shadow effect is known to be broken since at least 4.5.
It is unfortunately in a state which makes it difficult to maintain
and the architecture has some serious drawbacks. Therefore it is the
best solution to replace the effect with a new and better
implementation. For more information about the new implementation
please see the discussion on KWin mailinglist:
http://lists.kde.org/?l=kwin&m=129607406517609&w=2

This also "fixes" all existing bug reports about the shadow effect.
Most of the bugs will really be fixed when the new shadow system is
implemented, if not it is a new bug and a new report should be created
for it.

Please excuse that we go this unnormal approach to mark bugs as
fixed with code removal.
BUG: 164084
BUG: 160948
BUG: 189241
BUG: 229164
BUG: 258663
BUG: 216709
BUG: 243890
FIXED-IN: 4.7.0
2011-01-30 14:26:58 +01:00
Martin Gräßlin
65e6a1b03b Removing Snow Effect.
The usefulness of the snow effect is doubtable and it is rather
difficult to port the effect to the new rendering architecture
introduced with GLES. It is probably easier to rewrite the complete
effect from scratch, therefore it is removed for now.

I might consider readding it for 4.7.

This kind of "fixes" snow related bug reports.
BUG: 259362
BUG: 254498
FIXED-IN: 4.7.0
2011-01-30 14:24:48 +01:00
Martin Gräßlin
debb747797 Removing the Sharpen Effect.
The effect has been known to cause some problems for quite some time
and is not really useful. Therfore dropping the effect.
See discussion on kwin mailinglist:
http://lists.kde.org/?l=kwin&m=129597766829618&w=2
2011-01-30 14:20:05 +01:00
Martin Gräßlin
3e42ddc2cc ShaderManager handles rebind of previous shader.
No need to explicitly rebind the window shader in blur effect.
2011-01-30 14:12:06 +01:00
Martin Gräßlin
ccd0cae094 CoverSwitch supports multi screen in GLES. 2011-01-30 14:12:06 +01:00
Martin Gräßlin
8d46c978aa FlipSwitch supports MultiScreen with GLES. 2011-01-30 14:12:06 +01:00
Martin Gräßlin
d9fb2bd789 Cylinder and Sphere ported to new rendering stack 2011-01-30 14:12:06 +01:00
Martin Gräßlin
8c4fc28e1a Blur ported to GLES.
It now uses a GLShader for GLSL shaders and pushes it using the
ShaderManager.

It does not work with the nouveau driver plus GLES, but it works
with fglrx + desktop GL 2.x, so I assume it is a driver problem here.
2011-01-30 14:12:06 +01:00
Martin Gräßlin
bf56d17aee Compile fix for ShowFPS 2011-01-30 14:12:05 +01:00
Martin Gräßlin
0f7ebac00e Explosion portet to GLES.
I'm not completely sure if this is how the effect should look like.
But I cannot verify, it fails on fglrx and cannot find a video on Youtube.
2011-01-30 14:12:05 +01:00
Martin Gräßlin
b7ee35bba1 Invert effect ported to GLES.
It uses a generic vertex shader and because of that it needs to
mark all windows which are inverted as transformed.
There is currently a conflict with Lanczos (or thumbnails) and with
the desktop in cube effect.
2011-01-30 14:12:05 +01:00
Martin Gräßlin
6cd6883d8c Remove too strong error checks.
That should never have been committed, it was just for finding an error.
2011-01-30 14:12:05 +01:00
Martin Gräßlin
863726a085 LookingGlass ported to GLES.
LookingGlass does not inherit ShaderEffect any more and uses just a
fragment shader. It still renders to a FBO, this could probably be
improved.
2011-01-30 14:12:05 +01:00
Martin Gräßlin
75e926a6d7 Here comes the ported Magnifier 2011-01-30 14:12:05 +01:00
Martin Gräßlin
5d74f9ece7 StartupFeedback ported to GLES. 2011-01-30 14:12:05 +01:00
Martin Gräßlin
c5c318a342 Screenshot Effect ported to GLES 2011-01-30 14:12:05 +01:00
Martin Gräßlin
22d7c6c5f1 ShowFPS effect ported to GLES 2011-01-30 14:12:04 +01:00
Martin Gräßlin
764338e042 TaskbarThumbnails should say that it needs transformed windows.
Fixes a nice transformation issue when using thumbnails after cube effect.
2011-01-30 14:12:04 +01:00
Martin Gräßlin
2e0385101a Less ifdef in paintWindow. CleanerCode++
Using the QMatrix4x4 allows to make everything runtime dependent
and not a compile time switch.
2011-01-30 14:12:04 +01:00
Martin Gräßlin
802dd6b5fe Cache the matrix for cube cap mirroring 2011-01-30 14:12:04 +01:00
Martin Gräßlin
fe614119e5 Reflected cube uses QMatrix4x4 2011-01-30 14:12:03 +01:00
Martin Gräßlin
8c4db8f734 Say goodbye to Display Lists in cube.
Rotation is now only handled by the QMatrix4x4 m_rotationMatrix,
so no more need for display lists. Resulting in a cleaner code without
differences between OpenGL 1.x and 2.x/GLES.
2011-01-30 14:12:03 +01:00
Martin Gräßlin
6b88cdf36a Cube uses new high-level push/pop/multiply for caps.
For OpenGL 1.x cube caps are now rendered using the capMatrix
instead of using glTranslate/glRotate et al. One source base to
rule all GL versions.
2011-01-30 14:12:03 +01:00
Martin Gräßlin
db7a072c2b Blending is also useful in legacy mode... 2011-01-30 14:12:03 +01:00
Martin Gräßlin
8d196da880 Render empty areas in multiscreen with VBO. 2011-01-30 14:12:03 +01:00
Martin Gräßlin
7adc29efd7 Remove warnings when building with GLES 2011-01-30 14:12:03 +01:00
Martin Gräßlin
990001c5d7 Drop GLVertexBuffer::useShader.
The vertex buffer implementation uses the shader manager to decide
whether core painting should be used or not. Shader manager is only
used by shaders using vertex attributes instead of gl_Vertex etc.
2011-01-30 14:12:02 +01:00
Martin Gräßlin
7ca5d4dc6b Fade in/out cube caps during start/stop animation. 2011-01-30 14:12:02 +01:00
Martin Gräßlin
ef7fd87d65 Mirror bottom cube cap in shader. 2011-01-30 14:12:02 +01:00
Martin Gräßlin
75a1ee7aa8 CubeCaps back in GLES mode.
This includes quite some refactoring. For the cube cap a VBO is used
instead of glLists and all the required transformations are moved into
paintCap() which makes paintScreen more clean.
Currently the mirroring of bottom texture is still missing and cylinder
and sphere caps are not yet ported to using VBO.
I wouldn't be surprised if it is broken for legacy GL atm.
2011-01-30 14:12:02 +01:00
Martin Gräßlin
e5b6baeda9 Reflection plane in cube effect and GLSL 2011-01-30 14:12:02 +01:00
Martin Gräßlin
ad070909a3 Reflection plane in Coverswitch and GLES
CoverSwitch uses new concept of combining a custom fragment shader with the
built-in generic vertex shader. This shader is used to render the reflection
plane on top of the reflected windows.
The fragment shader uses two uniform colors for front and back and interpolates
between them based on the texcoords (which are not used for texture lookup).
The reflection plane vertices could be buffered.
2011-01-30 14:12:02 +01:00
Martin Gräßlin
054c8a62a6 Reflected windows in coverswitch
Reflection plane is still missing
On special request I added showing the reflected windows during the animation when the shader is used
2011-01-30 14:12:02 +01:00
Martin Gräßlin
ec1ec18260 Bring back some configuration interfaces 2011-01-30 14:12:02 +01:00
Martin Gräßlin
82b8faadab Welcome back Cube effect
Currently working:
* cube slide
* basic cube
* rotations
* reflections

Not working:
* Cube Inside effects
* Reflection plane (needs to be done in a shader)
* cube caps
* sphere/cylinder
* filled in areas in multi desktop
2011-01-30 14:12:01 +01:00
Martin Gräßlin
33dff065fc MouseMark ported to GLES 2011-01-30 14:12:01 +01:00
Martin Gräßlin
18814c66a3 Coverswitch works on GLES.
No multi-screen, no reflections yet
2011-01-30 14:12:01 +01:00
Martin Gräßlin
5dfa8becb5 FlipSwitch ported to GLES.
Multi-screen mode not yet included
2011-01-30 14:12:01 +01:00
Martin Gräßlin
6cb3b95cc1 ResizeEffect uses shared VBO 2011-01-30 14:12:00 +01:00
Martin Gräßlin
17032c66f8 SnapHelper uses shared VBO 2011-01-30 14:12:00 +01:00
Martin Gräßlin
ecc4f83c09 ShowPaint uses the shared buffer 2011-01-30 14:12:00 +01:00