18795 Commits (7e5c16989e706af65ffc4635688e9499824077a3)
 

Author SHA1 Message Date
Vlad Zahorodnii 7e5c16989e Drop hwcomposer backend
Plasma Mobile announced that they plan to drop support for Halium
devices, see the announcement blog post [1] for the reasons that led to
such a decision.

But just to summarize, here are some of the key points from the post:

 * Some of our team members no longer have access to reference LG Nexus
   5X device anymore
 * After KDE Neon switched to using Ubuntu 20.04 we no longer are
   updating the rootfs for halium devices
 * After several important architecture changes in upstream KWin, the
   hwcomposer backend might be broken and we have no way of verifying it

If the community members are interested in reviving the hwcomposer
backend,

  * it pretty much needs rewrite/re-thinking given differences of hwc1
    and hwc2 API for hwcomposer part of it, see also [2]
  * It also needs removal of Android 5 based libhardware API as we don't
    think code can be kept sane with 3 different levels of ifdefs
  * This backend needs better way of fixing difference between
    CAF/non-CAF devices then just recompiling with different headers,
    maybe env vars?
  * This backend does not support various things like transformation/
    rotation etc, and is not exactly feature complete as the DRM backend

[1] https://www.plasma-mobile.org/2020/12/14/plasma-mobile-technical-debt.html
[2] 83f563c339
4 years ago
David Edmundson ae440bdc25 Bump libkwineffects so version
There was an ABI breaking change when presentation times were added.
It has not been bumped since Plasma 5.20
4 years ago
Ismael Asensio 6eda92a0fd kcm/kwinrules: Detect and suggest activities from a window
Add the activities info to the list of properties provided by
the `queryWindowInfo()` dBus method, and suggest them to the
user when inspecting a given window.

An empty activity list means "All Activities" (null UUID)
Also get the null UUID value instead of having it hardcoded.
4 years ago
Cyril Rossi 8a79f38de8 KCM KWinScripts implement KCModuleData to highlight default at module level
Use highlight in KPluginSelector
Also remove PluginKeyword in .desktop file
4 years ago
Ismael Asensio 247d9c38d1 kcm/kwinrules: Restore method textOfValue()
This convenience invokable method was removed in 66ee89855
by mistake, since it's still used in RulesEditor.qml

While at it, optimize arguments to const &
4 years ago
Vlad Zahorodnii 93194a6720 autotests: Convert testScreens into an integration test
At the moment, the Screens class is convoluted with ifdefs because of
MockScreens.

The goal of this change is to reduce the number of usages of the
MockScreens class so it is possible to get rid of the ifdefs.
4 years ago
Vlad Zahorodnii c324cd1464 Remove Findepoxy.cmake
It's in extra-cmake-modules now.
4 years ago
Michael Tunnell 5193658aa2 Apply Initially as default value of new Properties
Change the default value from "Do Not Affect" to "Apply Initially" when
adding new properties in Window Rules.

REASON: prior "Do Not Affect" as default and occasionally I forget to
change the setting to something else when adding new properties.
Unfortunately, this means I forget to do it and so it isn't saved when
I close the window. I will then go back in to change it to Apply Initially
or in some cases have to add the new property again as it wasn't saved in
the set.

I think if Apply Initially were to be the default it would be an easier
and faster experience to add new properties.
4 years ago
Ismael Asensio 66ee898556 kcm/kwinrules: Allow to select multiple activities
This commit addresses the UI part

BUG: 430499
4 years ago
Ismael Asensio fc1553e8ee kwinrules: Allow multiple activities in rule settings
Change the setting's type from `QString` to `QStringList`
and adjust relevant code.

Previous config requires no porting as a single string in the
config file is read as the first item in the list.
4 years ago
Vlad Zahorodnii ccfaf1a1d6 cmake: Rework how tabbox is conditionally compiled into libkwin
In modern CMake code, it is highly advised to avoid using variables. One
should instead try to use targets and properties more extensively.
4 years ago
Vlad Zahorodnii 9af78c0e7f cmake: Rework how activities support is compiled into libkwin
In modern CMake code, it is highly advised to avoid using variables. One
should instead try to use targets and properties more extensively.
4 years ago
Vlad Zahorodnii d16c15301f cmake: Rework Findepoxy.cmake
This makes Findepoxy.cmake more upstreamable and easier to use.
4 years ago
Kai Uwe Broulik 5edfccac12 KRunner integration: Send window pixmap along
If there is no icon name available which is very often
the case on X11.

BUG: 430054
4 years ago
Vlad Zahorodnii 810186222b cmake: Fix a typo in Findlcms2 4 years ago
Vlad Zahorodnii 70458eb280 plugins/nightcolor: Handle new color devices
This ensures that new outputs have the right color temperature.
4 years ago
Vlad Zahorodnii 8b03fc9e07 Fix minor coding style issues
The coding style guidelines recommend to keep line width under 100
characters if possible.
4 years ago
Vlad Zahorodnii eaf94f465c Re-apply color transforms when session is re-activated
When our session is re-activated, we need to re-apply color transforms
as the current gamma ramps might be outdated.
4 years ago
Vlad Zahorodnii 6adfe3064f Drop Platform::createScreens()
Since the Screens class is a convenience wrapper around AbstractOutput
objects that come from the Platform, it should not be platform-specific.

By dropping createScreens(), output-related code becomes simpler.
4 years ago
Vlad Zahorodnii 935a6d7e21 platforms/x11: Drop XRandrScreens::displaySize()
The default implementation of Screens::displaySize() returns the
bounding rectangle of all available outputs.

In case the Xrandr extension is unavailable, there will be a fake
output whose dimensions are the same as the dimensions of all screens
combined.
4 years ago
Vlad Zahorodnii 2567d0c935 platforms/x11: Init outputs during platform initialization 4 years ago
Vlad Zahorodnii 8a606e47c4 platforms/x11: Introduce X11PlaceholderOutput
It is useful in case the Xrandr extension is unavailable or no outputs
are connected.
4 years ago
l10n daemon script 1a40632fbc SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
4 years ago
Vlad Zahorodnii d70e6c2c69 Avoid destroying yet alive color devices
This is a typo that I forgot to fix, therefore not requesting code
review. After QVector::erase() has been called, we cannot use the
iterator as it will lead to undefined behavior.
4 years ago
Daan De Meyer 38f55c81f3 Add .gitignore file to ignore generated .clang-format 4 years ago
Vlad Zahorodnii 79ca5ccd26 Merge OutputScreens into Screens
Since all platforms have been ported to AbstractOutput, OutputScreens
can be merged into Screens. This simplifies the class hierarchy.
4 years ago
Cyril Rossi 0420048405 KCM KWinCompositing implement KCModuleData to highlight default at module level
Fix Rendering backend combobox that was not highlighted.
Particular case due to OpenGLIsUnsafe kcfg entry which is an indicating
flag and not a configurable setting.
4 years ago
Vlad Zahorodnii c812b1b8d2 Spy on the right signal in KeyboardLayoutTest 4 years ago
Vlad Zahorodnii a8dd455953 Fix DebugConsoleTest
The debug console now displays window ids as hexidecimal numbers.
4 years ago
Vlad Zahorodnii 267eb0e9fa Fix NightColorTest
Currently, the test crashes because the ColorManager is not created.
4 years ago
Vlad Zahorodnii 533ec39af5 Fix PlasmaSurfaceTest
Opaqueness is not based on the window type.
4 years ago
Vlad Zahorodnii a2c765800b Drop Screens::supportsTransformations
It's used nowhere.
4 years ago
l10n daemon script 58ae454f6b SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
4 years ago
Adriaan de Groot b42e4d1884 Missing includes (for strdup() and strlen()) 4 years ago
Adriaan de Groot 002d4737ee Use execvp() instead of execvpe()
Nothing here changes environ directly, and we're not interested
in passing a specific custom environment to kwin_wayland, so
don't use the (Linux-only) execvpe() for passing environment.
4 years ago
Vlad Zahorodnii d96eb3897d wayland: Reload key-repeat settings when kcminputrc changes
At the moment, if key repeat settings are changed in the input kcm, kwin
will do nothing.
4 years ago
Xaver Hugl 2da1b3211e Fix login modeset 4 years ago
Vlad Zahorodnii c7fb0160ac Remove COPYING-CMAKE-SCRIPTS
All find modules contain license information, which renders
COPYING-CMAKE-SCRIPTS redundant.

The reason why we have this file in the first place is purely
historical. Back in the kde-workspace repo days, not all find
modules contained the license under which they're distributed.
4 years ago
David Edmundson 86c6066551 Introduce helper to restart kwin on crash exit
Right now when kwin exits, the user is taken directly back to the login
screen. The login session exits, so all processes then are killed by the
session.

This patchset introduces a mechanism to safely restart kwin. The socket
(typically wayland-0) remains alive and persistent across restarts. This
means if any process reconnects through it's own mechanism or a crash
restart handler the socket appears to work, and blocks until the new
kwin restarts.

This makes it secure and race free.

If the screen was locked at the time kwin went down, this is also
secure. Kwin now checks the status from logind at the time of launch, so
will immediately restore a locked state before any other rendering.
4 years ago
David Edmundson bac9d554f1 Move m_display construction to the constructor
We will always create one, this resolves potential to call a getter on a null object.
Requires some code shuffling.
4 years ago
Vlad Zahorodnii 3e1443e003 wayland: Don't force a bpp of 24 for desktop windows
plasmashell provides the compositor buffers with an alpha channel and
without indicating the opaque region. Given that, kwin forces a bpp of
24 for desktop windows to improve performance. Unfortunately, there are
legit cases where plasma may attach a buffer that is not fully opaque,
for example when switching between activities.

BUG: 423545
BUG: 421237
4 years ago
Vlad Zahorodnii ecac025a2a Port wayland code away from factory methods in KWaylandServer::Display 4 years ago
Vlad Zahorodnii 3b1c143881 scene: Fix window pixmap traversal order
Since the last child window pixmap is the top-most one, it needs to be
pushed on the stack first. This may fix KMail rendering issues.
4 years ago
Vlad Zahorodnii 64ad9a61d8 Introduce ColorManager component
This change introduces a new component - ColorManager that is
responsible for color management stuff.

At the moment, it's very naive. It is useful only for updating gamma
ramps. But in the future, it will be extended with more CMS-related
features.

The ColorManager depends on lcms2 library. This is an optional
dependency. If lcms2 is not installed, the color manager won't be built.

This also fixes the issue where colord and nightcolor overwrite each
other's gamma ramps. With this change, the ColorManager will resolve the
conflict between two.
4 years ago
Vlad Zahorodnii b06fb6b060 Drop redundant find_package(Qt5Multimedia)
We need the multimedia component only to play preview videos in a KCM.

The find_package(Qt5Multimedia) is not needed because we already check
if Qt5Multimedia QML module is present using ecm_find_qmlmodule().

The main motivation behind this change is to work around constant build
failures caused by buggy config file of the Qt5::Multimedia component.
4 years ago
Andrey Butirsky eebae29bcc Revert "refactor: localize checkLayoutChange() check"
This reverts commit c459faba5a

Fixes kwin_x11 crash on typing regression,
see original MR for details
4 years ago
Aleix Pol 2c6bfdf0b8 --warning
Set -DLIBINPUT_HAS_TOTEM per file rather than per target so that all
targets that build it have the define.
This particular file is also used by some tests and this fixes the
warning that this ifdef resolves at once for all targets.
4 years ago
Andrey Butirsky c459faba5a refactor: localize checkLayoutChange() check
We don't have to postpone the check until client would be actually
switched any more, so do it where it actually needed
4 years ago
Andrey Butirsky b127b5f45e impr: no keyboard layout OSD on switching between windows
now if two windows have different layouts, there will be no OSD on
switching between them on Alt+Tab

GUI:
DIGEST:
BUG: 418699
4 years ago
Aleix Pol 3f66aabd48 Use variables instead of macros for local variables 4 years ago