Placement::placeTransient() checks the frame geometry right after
setting it. That is a problem because geometry updates for
XdgPopupClient are made in async fashion. We need to block geometry
updates in order to ensure that window placement code sees correct
geometry.
On some devices, the GPU nodes are also added as /dev/dri/cardX, they
are not useful for KMS purposes and does not have display resources.
If we encounter such cards, then skip them.
This check is completely wrong for mobile GPUs where GPU are internal
and are not attached through PCI subsystem,
P: /devices/platform/display-engine/drm/card1
N: dri/card1
L: 0
S: dri/by-path/platform-display-engine-card
E: DEVPATH=/devices/platform/display-engine/drm/card1
E: DEVNAME=/dev/dri/card1
E: DEVTYPE=drm_minor
E: MAJOR=226
E: MINOR=1
E: SUBSYSTEM=drm
E: USEC_INITIALIZED=4239383
E: ID_PATH=platform-display-engine
E: ID_PATH_TAG=platform-display-engine
E: ID_FOR_SEAT=drm-platform-display-engine
E: DEVLINKS=/dev/dri/by-path/platform-display-engine-card
E: TAGS=:master-of-seat:seat:uaccess:
For example, on A64 platform, the KMS capable card is card1 which is not
attached with PCI.
This makes our QPlatformOpenGLContext private subclass simpler.
As a slightly unrelated change, this patch also fixes a bug where our
platform opengl context may return a wrong surface format if surfaceless
contexts are unsupported.
Every time Platform::supportsQpaContext() is called, we go through the
list of supported extensions and perform a string comparison op. This is
not really cheap.
When we destroy all internal clients and override-redirect windows, we
assume that corresponding lists will be implicitly detached.
However, in some cases, that might be not the case. For example, if the
list is not shared, neither begin() nor end() will detach. Therefore, it
is possible to hit invalidated iterators if the list is modified inside
the loop.
This change prevents hitting invalidated iterators by making explicit
list copies.
CCBUG: 427373
- Do not set emit the enabledChanged of the text-input-v2 when it
requests us to show input panel, it is already enabled when you get
this request
- If we get the request to show input panel, reset the inputContext,
there's two reason we can get this event: 1) when keyboard focus is
activated or 2) when keyboard focus is changed to text field in same
surface. In both cases, information in input method context is not
valid anymore and should be reset.
- Also instead of ignoring the update_state events from client, adopt
input method accordingly.
Change the labels to singular `Property` and close the property sheet
after clicking on one item.
The behaviour of the sheet is now more similar to a menu, and not so
much as a dialog which needs to be dismissed to go on.
The idea is to simplify the rule editor workflow and make it more evident
to the users. By making the `Add property` close after each selection,
the user can see immediately that the property has been added to the
rule list so they can edit it.
Also use ListView transitions to add visual hints when adding
or removing properties, and try to position the new added item
into the visible view.
Commit e459c8bf54 added a sanity check to
prevent recomputing the texture matrix if the y-inverted hint hasn't been
changed, which is totally reasonable!
However, code that initializes dmabuf textures implicitly assumes that
calling setYInverted() always results in updating the matrix. But it may
be not the case if the passed value matches current isYInverted().
This change adds missing calls to force updating the texture matrix.
Note that we don't need to check the buffer size every time the dmabuf
image has been modified externally because the window pixmap is going to
be re-created if the dimensions of the attached buffer have changed.
I've seen some reports on the internet about Firefox displaying garbage
instead of videos. 99% that bug is caused by this issue. But it seems
like Firefox no longer displays corrupted videos on my machine, so it's
hard to tell.
Custom code for isDefault is not needed. Indeed, testing dropdown value is not needed to know if we have a default value or not. Testing theme and border size auto is enough, and it's done automatically by KConfigXT
This simplifies the code by porting the debug console away from
Workspace::clientList() to Workspace::allClientList(). The main
difference between the two is that the former returns only all X11
windows and the latter returns both X11 and Wayland windows.