With XInput2 it's possible that multiple pairs of keyboard and pointers
are connected. As the lock screen only grabbed keyboard and pointer using
the core protocol any additional input devices were still reporting
input events to non-lockscreen windows creating the risk of interaction
with the system and accidentially typing a password where it doesn't
belong.
This change ensures that all additional master devices are also grabbed.
Unfortunately there are no xcb bindings for xinput2 (considered
experimental and thus not build on at least all debian based distros)
and because of that the XLib library is used. This brings some problems
as we cannot process the events (for that we would need xcb bindings,
to get the events). To still be able to get any keyboard and mouse events
we grab using the core protocol as it used to be and then ignore the
"Virtual core" devices and don't grab them with XInput2. Input events
from additional devices are grabbed and ignored, but definately no longer
delivered to other windows.
BUG: 341469
FIXED-IN: 5.3.0
REVIEW: 122558
By invoking saveHistory after each change we ensure that the clipboard
doesn't lose data in case klipper (or in dataengine mode plasmashell)
crashes.
To not cause stalls, the saving is performed in a thread using
QtConcurrentRun. As klipper itself is not thread save a Mutex is
used to lock changes in the HistoryModel.
To not overload the system the save operations are delayed and queued.
Each save is delayed by five seconds since the last clipboard change.
So if the clipboard is changed multiple times in a short interval it
doesn't get synced to the disk till the interaction has settled.
BUG: 343333
FIXED-IN: 5.3.0
REVIEW: 122382
If there are no metadata, showing "by Unknown" is a bit strange and
serves not much purpose. So let it show only the filename when no
metadata available.
REVIEW: 122622
If there was a vlc engine it got skipped due to a bug in VLC. This
bug seems to be fixed as of VLC 2.1.5 which contains the following
item in the changelog:
"dbus: Upgrade to an mpris2 compliant interface"
Given that the workaround breaks with the fixed VLC (no media control
at all), it's better to drop it and brake VLC installations which
haven't updated for more than half a year.
REVIEW: 122589
Instead of having the media control shortcuts being grouped under
"plasmashell" a dedicated component "Media Controller" is added and all
shortcuts are assigned to it.
This solves the problem if multiple processes include the dataengine, the
shortcuts would be registered in each application.
REVIEW: 122588
This allows shells to know the current xsession by evaluating
DESKTOP_SESSION variable
Useful for plasma-mediacenter shell session file, that way pmc shell
will know when to load
Reviewed-By: Marco Martin <mart@kde.org>