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
Scale window contents and decorations togheter in order to
avoid 1px glitches caused by rounding errors;
This has the net benefit of scaling only one pixmap instead of two
for each window*clipper and should actually give some performance bonus
I've tested this for some time with no issues, but this commit
*might* cause regressions. In case, let me know.
CC: kwin@kde.org
The code controlling timing for the animations
assumes that all painting is finished when the
Scene has finished painting. Since the X protocol
is asyncronous we need to call XSync (and not XFlush)
to make sure all painting has finished.
Tested for more than 2 weeks without issues.
NB: This is the same commit as
d0cf7ff6da4c6f8bcc684dd6378e2af09d36bb06
due to style changes in kwin code I could not cherry-pick
it cleanly
differecens to patch atteched to 258971:
- removed debug statements
- fixed indention...
- NON vsync strategy does not rely on the estimation, but on the time passed since the last repaint trigger, allowing a precise framerate
CCBUG: 258971
svn path=/trunk/KDE/kdebase/workspace/; revision=1210445
into KWin's global namespace. Morever None already kind of clashes with X's None.
CCMAIL: kde@martin-graesslin.com
svn path=/trunk/KDE/kdebase/workspace/; revision=1170588
This allows an effect to fade between old and new text/icon. As an example it's added to CoverSwitch.
Currently only supported in OpenGL. XRender might be added, but I'm missing an idea for an effect to add it.
Most effects using EffectFrame require OpenGL anyway.
svn path=/trunk/KDE/kdebase/workspace/; revision=1160252
So it is more consistent (in KDE newspeak "elegant") with other selections and as a plus we get rid of all the custom rendering code in boxswitch.
svn path=/trunk/KDE/kdebase/workspace/; revision=1155051
Some effects (boxswitch and flipswitch) still need to be changed to not set the icon in each frame.
svn path=/trunk/KDE/kdebase/workspace/; revision=1152367
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
functions and share the value with the KCM; Fallback to XRender
compositing if OpenGL fails to work correctly; Rearrange setting order
in options.h slightly and fix variable names
svn path=/trunk/KDE/kdebase/workspace/; revision=1079919
As this is a bigger commit I will wait with backporting to 4.3 for something about two or three weeks and will only backport if nobody yells.
BUG: 201780
svn path=/trunk/KDE/kdebase/workspace/; revision=1004096
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
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
actually needs to flush the output to the screen. Avoids windows
temporarily disappearing during KDE startup or similar visual glitches.
svn path=/trunk/KDE/kdebase/workspace/; revision=806387
should act just like Picture, except for proper initialization
and resource freeing (i.e. it's sane and easy from C++ point of view).
svn path=/trunk/KDE/kdebase/workspace/; revision=805085
Also slightly redo the #define's for effects, now it's:
- #ifdef KWIN_HAVE_COMPOSITING to check whether there's any compositing support at all
- #ifdef KWIN_HAVE_OPENGL_COMPOSITING to check for OpenGL-based compositing
- #ifdef KWIN_HAVE_XRENDER_COMPOSITING the same for XRender
CCMAIL: kwin@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=749628
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
Reverting r700026 and changing floats to doubles again. I'd probably like
to change even the ones interfacing with OpenGL which I've left for now.
svn path=/trunk/KDE/kdebase/workspace/; revision=707987
The 'ignore ARGB visuals' option from Kompmgr probably doesn't make
much sense, those (usually old) apps can be run with XLIB_SKIP_ARGB_VISUALS=1 set.
Also remove the alpha clear hack used for decorations - I think decorations
instead should be fixed not to "unintentionally" have alpha set.
svn path=/trunk/KDE/kdebase/workspace/; revision=689916
exposed a bug in our (ab)use of QX11Info::appDepth(). Make sure that
our buffers match the depth of the root window.
Thanks to Fredrik for the hint about DefaultDepth().
svn path=/trunk/KDE/kdebase/workspace/; revision=686998
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
is discarded. Windows that have previously been mapped and unmapped now
update properly when mapped again.
svn path=/trunk/KDE/kdebase/workspace/; revision=683977
It may fail (or "fail") if the window is not mapped or if the geometry
doesn't match, both of which may happen due to the asynchronous
nature of X.
svn path=/branches/work/kwin_composite/; revision=637741
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
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
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
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
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
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
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
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