mirror of
https://git.outfoxxed.me/quickshell/quickshell.git
synced 2026-04-10 06:11:54 +10:00
wayland/screencopy: use linear texture filtering over nearest
Fixes pixelated views at scaled resolutions.
This commit is contained in:
parent
20c691cdf1
commit
4b751ccb0d
4 changed files with 7 additions and 0 deletions
|
|
@ -64,6 +64,7 @@ set shell id.
|
||||||
- Fixed partial socket reads in greetd and hyprland on slow machines.
|
- Fixed partial socket reads in greetd and hyprland on slow machines.
|
||||||
- Worked around Qt bug causing crashes when plugging and unplugging monitors.
|
- Worked around Qt bug causing crashes when plugging and unplugging monitors.
|
||||||
- Fixed HyprlandFocusGrab crashing if windows were destroyed after being passed to it.
|
- Fixed HyprlandFocusGrab crashing if windows were destroyed after being passed to it.
|
||||||
|
- Fixed ScreencopyView pixelation when scaled.
|
||||||
|
|
||||||
## Packaging Changes
|
## Packaging Changes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,10 @@ void WlBufferQSGDisplayNode::setRect(const QRectF& rect) {
|
||||||
this->setMatrix(matrix);
|
this->setMatrix(matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WlBufferQSGDisplayNode::setFiltering(QSGTexture::Filtering filtering) {
|
||||||
|
this->imageNode->setFiltering(filtering);
|
||||||
|
}
|
||||||
|
|
||||||
void WlBufferQSGDisplayNode::syncSwapchain(const WlBufferSwapchain& swapchain) {
|
void WlBufferQSGDisplayNode::syncSwapchain(const WlBufferSwapchain& swapchain) {
|
||||||
auto* buffer = swapchain.frontbuffer();
|
auto* buffer = swapchain.frontbuffer();
|
||||||
auto& texture = swapchain.presentSecondBuffer ? this->buffer2 : this->buffer1;
|
auto& texture = swapchain.presentSecondBuffer ? this->buffer2 : this->buffer1;
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ public:
|
||||||
|
|
||||||
void syncSwapchain(const WlBufferSwapchain& swapchain);
|
void syncSwapchain(const WlBufferSwapchain& swapchain);
|
||||||
void setRect(const QRectF& rect);
|
void setRect(const QRectF& rect);
|
||||||
|
void setFiltering(QSGTexture::Filtering filtering);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QQuickWindow* window;
|
QQuickWindow* window;
|
||||||
|
|
|
||||||
|
|
@ -167,6 +167,7 @@ QSGNode* ScreencopyView::updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData*
|
||||||
auto& swapchain = this->context->swapchain();
|
auto& swapchain = this->context->swapchain();
|
||||||
node->syncSwapchain(swapchain);
|
node->syncSwapchain(swapchain);
|
||||||
node->setRect(this->boundingRect());
|
node->setRect(this->boundingRect());
|
||||||
|
node->setFiltering(QSGTexture::Linear); // NOLINT (misc-include-cleaner)
|
||||||
|
|
||||||
if (this->mLive) this->context->captureFrame();
|
if (this->mLive) this->context->captureFrame();
|
||||||
return node;
|
return node;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue