KWin
Loading...
Searching...
No Matches
src
platformsupport
scenes
qpainter
qpaintersurfacetexture_wayland.cpp
Go to the documentation of this file.
1
/*
2
SPDX-FileCopyrightText: 2021 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4
SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#include "
qpaintersurfacetexture_wayland.h
"
8
#include "
core/graphicsbufferview.h
"
9
10
#include <QPainter>
11
12
namespace
KWin
13
{
14
15
QPainterSurfaceTextureWayland::QPainterSurfaceTextureWayland
(
QPainterBackend
*backend,
SurfacePixmap
*pixmap)
16
:
QPainterSurfaceTexture
(backend)
17
, m_pixmap(pixmap)
18
{
19
}
20
21
bool
QPainterSurfaceTextureWayland::create
()
22
{
23
const
GraphicsBufferView
view(m_pixmap->
buffer
());
24
if
(Q_LIKELY(view.
image
())) {
25
// The buffer data is copied as the buffer interface returns a QImage
26
// which doesn't own the data of the underlying wl_shm_buffer object.
27
m_image
= view.
image
()->copy();
28
}
29
return
!
m_image
.isNull();
30
}
31
32
void
QPainterSurfaceTextureWayland::update
(
const
QRegion ®ion)
33
{
34
const
GraphicsBufferView
view(m_pixmap->
buffer
());
35
if
(Q_UNLIKELY(!view.
image
())) {
36
return
;
37
}
38
39
QPainter painter(&
m_image
);
40
painter.setCompositionMode(QPainter::CompositionMode_Source);
41
42
// The buffer data is copied as the buffer interface returns a QImage
43
// which doesn't own the data of the underlying wl_shm_buffer object.
44
for
(
const
QRect &rect : region) {
45
painter.drawImage(rect, *view.
image
(), rect);
46
}
47
}
48
49
}
// namespace KWin
KWin::GraphicsBufferView
Definition
graphicsbufferview.h:17
KWin::GraphicsBufferView::image
QImage * image()
Definition
graphicsbufferview.cpp:83
KWin::QPainterBackend
Definition
qpainterbackend.h:26
KWin::QPainterSurfaceTexture
Definition
qpaintersurfacetexture.h:19
KWin::QPainterSurfaceTexture::m_image
QImage m_image
Definition
qpaintersurfacetexture.h:33
KWin::QPainterSurfaceTextureWayland::QPainterSurfaceTextureWayland
QPainterSurfaceTextureWayland(QPainterBackend *backend, SurfacePixmap *pixmap)
Definition
qpaintersurfacetexture_wayland.cpp:15
KWin::QPainterSurfaceTextureWayland::update
void update(const QRegion ®ion) override
Definition
qpaintersurfacetexture_wayland.cpp:32
KWin::QPainterSurfaceTextureWayland::create
bool create() override
Definition
qpaintersurfacetexture_wayland.cpp:21
KWin::SurfacePixmap
Definition
surfaceitem.h:96
KWin::SurfacePixmap::buffer
GraphicsBuffer * buffer() const
Definition
surfaceitem.cpp:283
graphicsbufferview.h
KWin
Definition
activation_test.cpp:20
qpaintersurfacetexture_wayland.h
Generated on Sat Feb 17 2024 01:42:09 for KWin by
1.10.0