- 27 Jan, 2019 1 commit
-
-
Martin Flöser authored
Summary: KWindowSystem provides a plugin interface to have platform specific implementations. So far KWin relied on the implementation in KWayland-integration repository. This is something I find unsuited, for the following reasons: * any test in KWin for functionality set through the plugin would fail * it's not clear what's going on where * in worst case some code could deadlock * KWin shouldn't use KWindowSystem and only a small subset is allowed to be used The last point needs some further explanation. KWin internally does not and cannot use KWindowSystem. KWindowSystem (especially KWindowInfo) is exposing information which KWin sets. It's more than weird if KWin asks KWindowSystem for the state of a window it set itself. On X11 it's just slow, on Wayland it can result in roundtrips to KWin itself which is dangerous. But due to using Plasma components we have a few areas where we use KWindowSystem. E.g. a Plasma::Dialog sets a window type, the slide in direction, blur and background contrast. This we want to support and need to support. Other API elements we do not want, like for examples the available windows. KWin internal windows either have direct access to KWin or a scripting interface exposed providing (limited) access - there is just no need to have this in KWindowSystem. To make it more clear what KWin supports as API of KWindowSystem for internal windows this change implements a stripped down version of the kwayland-integration plugin. The main difference is that it does not use KWayland at all, but a QWindow internal side channel. To support this EffectWindow provides an accessor for internalWindow and the three already mentioned effects are adjusted to read from the internal QWindow and it's dynamic properties. This change is a first step for a further refactoring. I plan to split the internal window out of ShellClient into a dedicated class. I think there are nowadays too many special cases. If it moves out there is the question whether we really want to use Wayland for the internal windows or whether this is just historic ballast (after all we used to use qwayland for that in the beginning). As the change could introduce regressions I'm targetting 5.16. Test Plan: new test case for window type, manual testing using Alt+Tab for the effects integration. Sliding popups, blur and contrast worked fine. Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18228
-
- 25 Jan, 2019 1 commit
-
-
Vlad Zahorodnii authored
Summary: The new connect syntax has several advantages over the old syntax: (a) Connecting with the new syntax is faster; (b) It is compile time checked. There are still a few places where the old connect syntax is used, e.g. connecting to QML buttons in the Desktop Grid effect. Test Plan: Have been testing this patch for ~2 weeks, haven't noticed any regressions. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, broulik, graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18368
-
- 17 May, 2018 1 commit
-
-
Vlad Zahorodnii authored
Summary: For more details, see D12452. Reviewers: #kwin, davidedmundson, fredrik, mart Reviewed By: #kwin, davidedmundson, mart Subscribers: romangg, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D12466
-
- 02 Dec, 2017 1 commit
-
-
Kai Uwe Broulik authored
Especially the BlurEffect::expanded() method is called a lot. Saves creating a temporary QVector. Differential Revision: https://phabricator.kde.org/D9101
-
- 29 Sep, 2017 1 commit
-
-
David Edmundson authored
Summary: Similar to the Blur patch. Arguably rven less reason as this doesn't have a texture the size of the workspace. We don't need to delete and recreate the entire effect every time the screen changes; This deletes the wayland global which causes quite a bit of extra work for the clients. Test Plan: Changed resolution under X, and scale under wayland Panel looked the same and nothing exploded Reviewers: #plasma, graesslin Reviewed By: #plasma, graesslin Subscribers: graesslin, plasma-devel, kwin, #kwin Tags: #plasma Differential Revision: https://phabricator.kde.org/D7937
-
- 12 Sep, 2017 1 commit
-
-
Martin Flöser authored
Summary: Several effects announce a support property atom on the root window. This change forwards the KWin::Application's signal that the xcbConnection changed to the EffectsHandler so that the effects can respond to it. All effects which announce a support property connect to this new signal and re-announce the property. In case the xcb connection died (future XWayland crashing case) it is set to XCB_ATOM_NONE by that. In case the xcb connection got created (future delayed XWayland startup) the atom is set to the proper value. In addition all usages of the support properties are guarded, so that no nonesense actions are performed if the support property is XCB_ATOM_NONE. Test Plan: Only compile tested as we don't have XFree KWin yet Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7761
-
- 28 Apr, 2017 1 commit
-
-
David Edmundson authored
Summary: Background contrast reads pixels from the framebuffer we need to convert from compositor to framebuffer co-ordinates when an output is scaled Test Plan: Ran the manual test in kwindowsystem. Moved window over dolphin. Visually checked output Reviewers: #plasma Subscribers: plasma-devel, kwin, #kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D4949
-
- 15 Mar, 2017 1 commit
-
-
Marco Martin authored
Summary: as different windows can have different contrast region parameters, store color matrices per window BUG:339237 Test Plan: logout window doesn't break panel anymore Reviewers: #plasma, graesslin Reviewed By: #plasma, graesslin Subscribers: broulik, plasma-devel, kwin, #kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D5048
-
- 18 Oct, 2016 1 commit
-
-
Martin Flöser authored
Summary: The glCopyTex(Sub)Image calls are adjusted to take the per output rendering into account. In addition contrast effect sets the model view projection matrix in each call to ensure it's on the correct screen. Blur probably needs more changes for the cached texture to work, but it's a start. Test Plan: Blur and Background contrast work on multi-screen wayland Reviewers: #kwin, #plasma_on_wayland Subscribers: plasma-devel, kwin Tags: #plasma_on_wayland, #kwin Differential Revision: https://phabricator.kde.org/D3101
-
- 09 Aug, 2016 1 commit
-
-
Martin Flöser authored
On llvmpipe it's better to have them disabled. Reviewed-By: Marco Martin
-
- 25 Feb, 2016 1 commit
-
-
Marco Martin authored
even if scaled or translated, if WindowForceBlurRole is set do the blur anyways same thing for backgroundcontrast reviewed by: Martin Gräßlin <mgraesslin@kde.org>
-
- 09 Feb, 2016 1 commit
-
-
Marco Martin authored
if the window we are blurring the background or adding contrast has a scale transform applied, scale the area to be blurred as well REVIEW:126980
-
- 01 Oct, 2015 1 commit
-
-
Martin Flöser authored
Following the approach how it's done for X11: only create the interface if the shader succeeded to compile and remove support again if it failed to compile after a reconfigure. REVIEW: 125444
-
- 03 Sep, 2015 1 commit
-
-
Marco Martin authored
support wayland as well in the background contrast effect REVIEW:125035
-
- 21 May, 2015 1 commit
-
-
Thomas Lübking authored
causes out of bounds segfault BUG: 347900 REVIEW: 123865 FIXED-IN: 5.3.1
-
- 30 Dec, 2014 1 commit
-
-
Fredrik Höglund authored
This parameter is ignored on GLES.
-
- 27 Nov, 2014 1 commit
-
-
Martin Flöser authored
Instead of getting size from displayWidth() and displayHeight() use the information we have from Screens. This means there is only one place to have the information and by that we can ensure that all components use the same data to rely on. displayWidth/displayHeight seem to provide the wrong information when unplugging an output without disabling the output. This results in rendering artefacts. But KWin::Screens has the correct information available.
-
- 22 Nov, 2014 1 commit
-
-
Fredrik Höglund authored
We require OpenGL 2.0 which always supports NPOT textures.
-
- 11 Jun, 2014 1 commit
-
-
Martin Flöser authored
GLSL is always required nowadays on GL compositor. REVIEW: 118642
-
- 11 Apr, 2014 1 commit
-
-
Martin Flöser authored
Ensures that the further checks are not performed on XRender compositing. REVIEW: 117497
-
- 26 Mar, 2014 1 commit
-
-
Martin Flöser authored
Affected effects * Blur and Contrast Shader to get atom name * Glide effect for the slide atom * startupfeedback for cursor size - read from config now and cached * showfps used an xsync, replaced by flush * logout effect for creating hack items REVIEW: 116828
-
- 10 Mar, 2014 1 commit
-
-
Martin Flöser authored
KWin already has a de facto OpenGL 2 dependency through QML. Combined with the fact that the OpenGL 1 backend is basically unmaintained and also unused, it's better to remove it for the new major release. This change includes: * Removal of cmake option KWIN_BUILD_OPENGL_1_COMPOSITING * Removal of KWIN_HAVE_OPENGL_1 compile option and all code ifdef'ed with it (partially removal of if-else constructs) * Removal of CompositingType::OpenGL1Compositing (flags are kept as a core flag should get introduced) * Driver recommendation for OpenGL1Compositing changed to XRender (should be evaluated whether the drivers can provide GL2) * Removal of configuration option "GLLegacy" * Removal of fooMatrix function in kwinglutils * Removal of ARBBlurShader * Removal of legacy code path in GLVertexBuffer * Removal of GLShaderManager::disable * if-blocks with ShaderManager::instance()->isValid() removed REVIEW: 116042
-
- 07 Mar, 2014 1 commit
-
-
Martin Flöser authored
Rational behind this change is that displayWidth and displayHeight are X specific API calls in kwinglobals. For the future it's easier to only rely on functionality which goes through the EffectsHandler API which allows easier adjustments in KWin core. displayWidth() and displayHeight() are only used to get the size or the complete rect of all screens. This is also provided by: effects->virtualScreenGeometry() or effects->virtualScreenSize() REVIEW: 116021
-
- 03 Feb, 2014 1 commit
-
-
Martin Flöser authored
-
- 24 Jan, 2014 1 commit
-
-
Martin Flöser authored
As all effects have always been compiled into the same .so file it's questionable whether resolving the effects through a library is useful at all. By linking against the built-in effects we gain the following advantages: * don't have to load/unload the KLibrary * don't have to resolve the create, supported and enabled functions * no version check required * no dependency resolving (effects don't use it) * remove the KWIN_EFFECT macros from the effects All the effects are now registered in an effects_builtins file which maps the name to a factory method and supported or enabled by default methods. During loading the effects we first check whether there is a built-in effect by the given name and make a shortcut to create it through that. If that's not possible the normal plugin loading is used. Completely unscientific testing [1] showed an improvement of almost 10 msec during loading all the effects I use. [1] QElapsedTimer around the loading code, start kwin five times, take average. REVIEW: 115073
-
- 23 Jan, 2014 9 commits
-
-
Marco Martin authored
slotWindowDeleted is not here anymore
-
Marco Martin authored
-
Marco Martin authored
-
Marco Martin authored
* use the atom, not XA_cardinal * we never do this effect behind the decoration
-
Marco Martin authored
* work also without blur enabled * try to pass only the 3 color parameters
-
Marco Martin authored
* update effect name * remove unused variable
-
Marco Martin authored
* get rid of the strength property * this effect doesn't have config
-
Marco Martin authored
* this effect is way cheaper than blur, don't cache it * use its own atom * also pass the matrix in the x property * remove remnants of the cache * do just a single pass * get rid of config ui remnants
-
Marco Martin authored
* a copy of the blur shader to become a copy of the background contrast effect * contrastshader actually doing the light modification * don't expand/shrink the area
-
- 02 Sep, 2013 1 commit
-
-
Martin Flöser authored
Usages of kBacktrace got dropped.
-
- 20 Aug, 2013 1 commit
-
-
Martin Flöser authored
-
- 11 Jun, 2013 2 commits
-
-
Fredrik Höglund authored
Reviewed-by:
Philipp Knechtges <philipp-dev@knechtges.com>
-
Fredrik Höglund authored
Use the new GLVertexBuffer::map() interface. Reviewed-by:
Philipp Knechtges <philipp-dev@knechtges.com>
-
- 21 Mar, 2013 1 commit
-
-
Fredrik Höglund authored
Otherwise the content below windows that were created before the effect was instantiated won't be blurred.
-
- 07 Jan, 2013 1 commit
-
-
Martin Flöser authored
Instead of each effect, which needs to announce support, having custom code to create a property and set it on the root window, there is now a common API in EffectsHandler to take care of this. The methods takes care of creating the atom if it has not already done and set the property on the root window. Furthermore it allows multiple effects to announce the same property without getting in conflict with each other. As a further convenience the property is automatically removed when the effect is unloaded, so less things an effect author has to care about. REVIEW: 107815
-