avoiding the blocking swapinterval detection causes
issues in the timing strategy and prevents protection
against CPU overload on the nvidia blob
BUG: 329821
FIXED-IN: 4.11.6
REVIEW: 115306
By setting the X property _KDE_NET_WM_SKIP_CLOSE_ANIMATION to 1 a window
can request to be excluded from any close animation. This property is
read in Toplevel, so that it is available to both Client and Unmanaged.
If the window has this property set the Scene suppresses the paintWindow
loop of the Deleted. Thus no effect needs to be adjusted. But an effect
using drawWindow directly would still be able to render the Deleted as
there is no suppression.
Furthermore the property is passed to the EffectWindow so that an
Effect can make use of this functionality and not start the animation
in the first place.
REVIEW: 115288
CCBUG: 279615
Backported from 9497b4ddb681ac50dbe9c015e05a3f12fd496da8
After losing current from the EGL or GLX
context, calls to the GL or GLES functions
have undefined behavior. Perform all
cleanup that may touch OpenGL and check for
GL errors before losing current from the
context.
REVIEW: 115311
It's possible that the Client does not have an effect window when
the desktop presence changes. This results in a crash.
Unit test which triggered the crash on
https://git.reviewboard.kde.org/r/115190/
REVIEW: 115214
1. swapping direction would rather toggle tiling
2. the next screen was calculated wrongly (found outmost)
3. the electrictborder geometry was not updated when swapping the mode on screen changes
BUG: 329136
FIXED-IN: 4.11.6
CCBUG: 222921
REVIEW: 114648
KWin used KDE_VERSION_STRING as version number. This means if compiled
against kdelibs 4.12 the version is 4.12 although the true version is
4.11.something. By using the KWIN_VERSION_STRING we can base it on the
version number set in kde-workspace's CMakeLists.txt.
REVIEW: 115002
Background gradient is now always decided based on window flag.
CCBUG: 273423
Added option in oxygenrc to disable window background:
[Common]
UseBackgroundGradient=true
Option is hidden (no UI element) because of string freeze
Also removed decoration blend style option.
Background gradient is now always decided based on window flag.
CCBUG: 273423
Allow prepareRenderingFrame() to return a region that will be
repainted in addition to the damaged region.
Pass both the damaged region and the repainted region, which
may be larger, as parameters to endRenderingFrame().
Instead of looping over every quad for every grid cell and checking
for possible intersections, loop over the quads once and compute
the top left corner of the first intersecting grid cell. Then loop over
all the intersecting cells from that point and create the sub quads.
This new algorithm also preserves the order of the quads in the
original list.
There is a check in Client::buttonReleaseEvent() for the state of the
mouse buttons compared to the button masks for button 1, 2, 3 (X11
button indices).
The check was:
if ((state & (Button1Mask & Button2Mask & Button3Mask)) == 0) { ... }
<=> if (state & 0 == 0) <=> if (true)
This change assumes what the check was supposed to be and fixes the problem. The correct fix was proposed by Thomas.
REVIEW: 113359
- B2 linked to the wrong slot (instead of changed signal)
- border size change was not written (for B2, Laptop etc)
- Aurorae didn't recreate decos when required
BUG: 325946
FIXED-IN: 4.11.3
REVIEW: 113229
Follow-up to c146941, which stopped exporting KDecorationBridgeUnstable.
The way the typeinfo and object comparisons are performed in a dynamic_cast
are not entirely defined in any ABI spec (or the C++ standard), and the
situation gets trickier when a hidden symbol (KDecorationBridgeUnstable)
gets passed between a program such as kwin or kcmshell4 and a dlopen()ed
library like kwin3_laptop.so: kwin is unaware of the symbol in
kwin3_laptop.so and vice-versa, so stricter implementations of the C++
runtime can choose to make the dynamic_cast call fail and return 0.
This was a source of crashes on GCC for a long time [1][2] until its
developers chose to make the typeinfo comparison in libstdc++ >= 4.5.x less
strict and just perform a string comparison of the type names by default.
[1] http://article.gmane.org/gmane.comp.gcc.patches/189813
[2] http://gcc.gnu.org/ml/gcc/2002-05/msg01970.html
It does not make things more correct, though, and after c146941 KWin started
crashing when built in debug mode and run with libcxxrt, another C++ runtime
implementation, since it performed a stricted typeinfo comparison by
default.
Simply removing the dynamic_cast should be fine: it is in an assertion, so
the code is not essential, and the assertion itself is not entirely correct.
Additionally, the assertion has already been removed from the master branch
in commit 4702bbd.
REVIEW: 113296