The CMake code is careful not to include PipeWire when it is not
installed, however what it *does* include (taskmanagerplugin) still has
a dependency on Screencasting classes, which prior to this are gated
under the PipeWire check.
Since these classes only require Wayland, not PipeWire, I fix the build
error by reducing the CMake check for PipeWire to only add the
PipeWire-specific bits when PipeWire is present, and to build the
screencasting stuff unconditionally.
The ECM logging code is named after PipeWire but doesn't depend on it
either so that is also built unconditionally to avoid build failures
about a missing "logging.h".
BUG:456655
`enabled` must be set in the backend because `visible` will always be
true after getting a valid nodeId, and sometimes we need to reset `enabled`
to false.
CCBUG: 449189
Libtaskmanager's buffer for spa_builder is too small on certain
configurations. Because podBuilder->state.offset is never reset, the
buffer space can run out when EGL returns a long list of dma_buf
modifiers, causing PipeWire negotiation to fail.
An example is when EGL returns 20 modifiers. There are 6 formats defined
in pipewiresourcestream.cpp, for each format it will construct 2 frames,
one with 21*8=168 bytes long of modifiers. The modifier lists for all
frames will be 6*168=1008 bytes (only 16 bytes left of 1024 bytes), let
alone other frames.
BUG: 446061
There were some changes in KWin that only enabled exchanging streams
(thumbnails in our case) in case it's properly supported. We need to
explicitly request it now, otherwise we get memfd which is much slower.
If there's no texture factory function, return the old node immediately.
Also, remove a guard against the code that calculates centered geometry
of the texture node. We cannot hit that case as we check whether the
factory function has returned a valid texture before that.
We recently changed it so kwin defaults to memptr because some clients
couldn't deal with dmabuf. We still want dmabuf to be used as it's less
stressful to the system and we support it just fine.
Tell QQuickWindow when there is an alpha channel, otherwise it's
considered opaque and Qt/mesa renders it disregarding what's underneath.
Sometimes windows will have translucent areas and we want these to be
rendered cleanly on top of the scene. Alternatively it shows weird
noise.
Summary:
This makes the AdditionalRoles enum available to Qt Quick. Useful for
calling data() TasksModel from inside QML, which uses AbstractTasksModel
roles but doesn't actually inherit from AbstractTasksModel.
The reason TasksModel doesn't inherit from AbstractTasksModel is
because it inherits from QSortFilterProxyModel, and it doesn't fly
to multiple-inherit from two QObject-derived classes. This is also
why AdditionalRoles can't be moved to AbstractTasksModelIface easily.
The VDG is working on tooltip changes that require this.
Reviewers: #plasma, davidedmundson, subdiff
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3641