To do this, this commit adds infrastructure to include glsl files,
extracts all the color management functions and uniforms into such a
file, and makes use of it in the invert effect
BUG: 443148
The pageflip event may never arrive, as the GPU to trigger it is gone. It
also doesn't make a difference, as the GPU is unaccessible anyways, so
KWin can't affect the relevant output(s) anymore
If the client sets invalid min or max size, that can cause some code in KWin
to assert. To ensure that doesn't happen, enforce that the minimum size is
always at most as big as the maximum.
CCBUG: 478269
WindowThumbnails are image providers meaning it can provide textures
directly to ShaderEffects
layer.enabled is effectively a ShaderEffectSource meaning we render our
single desktop background item into an offscreen texture to ultimately
contain our desktop background.
We can cut out the middle-man and use the DesktopBackground as a source
directly saving a massive texture being generated.
The compilation step still takes a significant amount of time on the
first launch. On my machine, it's around 1s. Even if it happens just
once, freezing the session for 1 second is not great.
This change makes the overview effect load main.qml asynchronously
when plasma session starts. By the time the session is loaded, it should
be ready.
CCBUG: 455780
Effects like overview can create more than one thumbnail for the same
window. For example, if you have 4 virtual desktops, the overview is
going to create 9 window thumbnails for the desktop background, which in
its turn means that each thumbnail is going to have its own texture.
That's not great.
WindowThumbnailItem.sourceSize has been dropped because it's unused and
will complicate texture caching.
CCBUG: 455780
When the pointer moves, the shake cursor effect will either update the
cursor magnification or reset the magnification.
At the moment magnification is reset immediately, which doesn't look
if the pointer moves before the reset scale animation finishes.
Currently FrameSvgItem is used to highlight selected or hovered windows.
But the problem with it is that it's a bit heavyweight. As a way around
it, we could put it in a Loader, but that's going to be bring a set of
other challenges.
As an alternative solution, this change replaces FrameSvgItem with a
simple outline. It still produces decent visuals and it's simpler.
This tells the kernel when a buffer should be done rendering, which allows
it to for example increase GPU clocks in order to hopefully hit our deadlines.
That in turn should reduce the amount of dropped frames
CCBUG: 452119
Let's port the remaining uses to the upstream simpler alternative
`ItemDelegate`, which provides a consistent styling and fixes some
issues such as the background and highlighting.
This affects the rules, efects and virtual desktops KCMs.
Overview was trying always to animate the opening with 2 animations at the same moment:
* the transition from initial to active in WindowHeapDelegate
* the animation on the partialactivationfactor was always ran, partial or not
this resulted in jankier animations than they could be.
now base only on partialanimationfactor, so we a re sure there is one single way to trigger the effect
Do not reparent the OverlaySheet's parent and let it be the
whole page, so that the shadow darkening also covers the empty
space below the view and the placeholder message
BUG: 477963
FIXED-IN: 5.91.0 (Beta2)
The rest of the project is GPLv2, this one is GPLv3 for no apparent
reason. Even the .cpp file is GPLv2.
Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
There is a window title beneat the stock WindowHeapDelegate. The label
was bound to the size of the window, but because this animates our label
resizes every frame too.
Given the label is only at full opacity when the window is filling the
ExpoCell, we can set the width of our label to that directly.
This looks less glitchy as we don't change wrapping during animation,
but also should have a noticable performance impact as we avoid
re-laying out multiple times.
Instead of hardcoding only NVidia, try to use CTM and GAMMA_LUT before falling
back to the shader path. This way it also works on other GPUs that lack
color management hardware, and only falls back to the color management path
on older NVidia drivers.
This commit also ensures that the color management hardware is set properly
after toggling color management on and off again, and simplifies ColorDevice
to only deal with rgb factors instead of always calculating luts. This should
improve performance of night color animations on hardware where CTMs are
supported
CCBUG: 453701
ButtonPressEvent::state includes keys and buttons prior to the button
press has been generated.
On the other hand, it appears that QMouseEvent::buttons() should include
currently pressed buttons, i.e. the button that has been just pressed
should be in that bitfield.
This is important for QQuickDeliveryAgent, which checks
QMouseEvent::button() and QMouseEvent::buttons() to decide whether to
send the button event only to tap handlers or both tap handlers and
mouse areas.
BUG: 476653