* BoxSwitch users are migrated to new QML TabBox thumbnails layout
* Thumbnail layout is new default (as before was BoxSwitch)
* Removed obsoleted settings from TabBox config
BUG: 283481
it's even worse, since it interferes with generally upscaled windows
(keeps them big, applies false transition and causes a final snapback)
and windata->highlight doesn't end at zero, so the entire screen is
still a little scaled when the effect ends (and snaps down afterwards)
now it snaps down when starting the leave what is better in general
and the only usable solution for upscaled windows.
some day presentwindows might be derived from the yet-to-add
animationeffect class ;-)
This patch introduces some kind of damage propagation. In the old version of the blur effect
we had to repaint the whole window if sth behind the blurred area was damaged. The new texture
cache, which was introduced by the last patch, gives us the opportunity to only update parts of
blurred background texture. This means that the damaged area can only propagate with the speed
of the blurring radius per window layer.
REVIEW: 102665
This caused situations in which the shader was pushed but never
popped from the stack as for the latter case there was a check
whether the effect is active.
BUG: 280455
This patch adds an optional texture cache to the blur effect such that damaged windows in
front of the blurred region dont trigger a repaint of the whole blurred region which pretty
often results in a avalanche repaint of nearly the whole screen.
REVIEW: 101977
This is actually a bloody hack by forcing the screen to be
repainted in each frame. This needs to be fixed in a different
way or we at least have to turn blur off by default for GLES in
the next release.
Each effect is able to declare itself as currently being active,
that is transforming windows or painting or screen or doing anything
during the current rendered frame.
This change eliminates the hottest path inside KWin identified by
callgrind.
REVIEW: 102449
Effect uses framebuffer blit to copy the zoomed are in a scaled
way into an offscreen texture and render the texture after the
rendering. This means instead of two rendering passes we now need
only one pass, but require the blit extension.
Due to changes in build system we have always either OpenGL or OpenGL ES.
This allows to remove the KWIN_HAVE_OPENGL_COMPOSITING define. In the
effects the define is kept as KWIN_HAVE_OPENGL which can be used in
future to build also an XRender only effect system.
BUG: 262543
pint desktop as background when including desktop in switcher
BUG: 262137
zoom windows as hover/selection indicaton (1/8 of the screen or 105%)
BUG: 215348
CCBUG: 175521
no closer on "show desktop" desktop
show closer immediately but have it disabled for a short time to allow the user realize it
REVIEW: 101318
If we have OpenGL ES but not OpenGL the KWIN_HAVE_OPENGL is set
causing the first compile pass to fail as it tries to build
against OpenGL. As a solution the first pass links against
OpenGL ES if OpenGL is not found.
This means both kwin and kwin_gles are built against GLES.
Nuno has to decide whether the new option will become default or not, for now it is disabled by default.
You can enable it in effects kcm, now Login effect has a configuration dialog.
It does not (yet) however check for non-fullscreen effects, so they might look weird when this is enabled.
REVIEW: 101812
CCMAIL: nuno@oxygen-icons.org
Reflection in a vertical multiscreen setup are kind of broken without
PaintClipper. But we have to ask ourselfe whether CoverSwitch in a
vertical multi screen setup makes sense and whether it's useful to
have reflections in such a setup.
Horizontal multiscreen setup works fine (also with reflections).
We have to set the bit depth of the XPixmap to 32 in order to get
an alpha channel and we have to render the grabbed image using
composition mode Source in order to just copy all pixels to the
destination pixmap.
BUG: 276719
FIXED-IN: 4.7.0
Since the funtionality of TopMenu did no longer work in KDE4 this feature was
removed from Workspace. Every reference to it was removed as well as commentaries
and documentation.
REVIEW: 101485
The uniforms textureWidth and textureHeight were only needed for
normal windows. For everything else it was just 1.0/1.0, that is
normalized.
The makeArrays method is changed to produce normalized texcoords
obsoleting the need for these uniforms. So two uniforms less, one
calculation in vertex shaders less and many many lines of code
removed.
At the same time makeArrays is also adjusted to take care of
yInverted of the texture, which is needed as we no longer can use
the enableUnnormalizedTexCoords which did the yInverted transformation.
REVIEW: 101646
Actually it's more a hack and should be addressed in the next
release cycle by allowing effects to modify the scene's blend
equation.
BUG: 274424
FIXED-IN: 4.7.0
For what reason ever motion manager thinks that windows are not
moving during the start animation (but are during the stop animation).
So we also have to look on the timeline to decide whether we should
disable lanczos filter on the windows.
Now wonder the animation was stuttering.
BUG: 274292
FIXED-IN: 4.7.0
Due to changes in the blur effect, the EffectFrame was flickering
with GLES. This can be worked around by doing full repaints whenever
a window is damagded while boxswitch is active with GLES. The problem
only occurs with the GLES backend due to the way how the buffers are
swapped.
BUG: 272688
With raster a QPixmap is no longer a XPixmap which fails all code
which assumes that an QPixmap is an XPixmap. Depending on were in
the codebase we either convert such pixmaps to images (OpenGL) or
create a XPixmap and use QPixmap::fromX11Pixmap to get a "real"
pixmap.
It is possible that there are more code pathes were we would need
a XPixmap. Currently tested is basic functionality of no-compositing,
XRender compositing, OpenGl/GLX and OpenGL ES/EGL compositing.
For OpenGL compositing raster might result in performance improvements,
for XRender it is possible that there are regressions when using raster.
By default KWin uses whatever is the default of the system, so we just
no longer enforce native.
Of course it is a bad idea to use graphicssystem OpenGL. As that
is broken anyways in Qt, we do not check for it.
Many thanks to Philipp Knechtges for bringing up the issue, convincing
me that we need it and providing most of the patch.
REVIEW: 101132
CCMAIL: Philipp.Knechtges@rwth-aachen.de
The new build option restricts the building of effects to those
useable for Plasma Active:
* blur
* dialogparent
* fade
* login
* outline
* presentwindows
* slidingpopups
* taskbarthumbnails
* screenshot
Additionally all effect KCMs are excluded from building in the
assumption that when building with this option, KWIN_BUILD_KCMS
is turned off.
CCMAIL: sebas@kde.org
Optimize the region of the screen that's painted in each frame,
and paint the windows top-to-bottom when the damaged region doesn't
intersect any blurred areas.
This fixes most of the rendering issues with cube in multi
screen setups and GLSL backend. For cylinder and sphere the
rendering of areas between screen is currently disabled if
using the GLSL backend. It needs adjustments to use another
vertex shader. Not sure if it is worth the effort.
also rewrite of the regular grid assignment - was
a) a suboptimal implementation
b) required because otherwise broken in desktopgrid proxy mode (which btw. polluted the effect through QHash::operator[])
BUG:262485
Warnings were:
glide.h:74:16: warning: possible problem detected in invocation of delete operator:
glide.h:74:16: warning: invalid use of incomplete type 'struct QTimeLine'
glide.h:28:7: warning: forward declaration of 'struct QTimeLine'
glide.h:74:16: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined.
By making Dashboard Effect a fullscreen effect the blurring got
accidentially broken (blur ignores fullscreen effects). Reenabling
by setting the force blur role on the dashboard window(s).
Reapplied commit 629e17d18526ccfae3d3579066e8be927a92437d from KDE/4.6.
CCBUG: 259797
As this area was not repainted it caused visual garbage during
animationgs. Most visible with yakuake and a panel at the top.
Offset in that case is the upper screenedge while yakuake is
positioned below the panel. The area of the panel did not get
repainted causing the garbage.
CCBUG: 264765
The not initialized boolean value seemed to have evaluated to true
and causing the animation to stop and therefore the darkening not
to apply.
Giving a default value to the EffectWindow pointer doesn't hurt either.
Patch does not apply to 4.6 branch, because of that only in master.
BUG: 264552
FIXED-IN: 4.7.0
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
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.
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.
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.
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.