KWin
Loading...
Searching...
No Matches
shmclientbuffer_p.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2023 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#pragma once
8
12#include "utils/memorymap.h"
13
14#include "qwayland-server-wayland.h"
15
16namespace KWin
17{
18
19class ShmClientBufferIntegrationPrivate : public QtWaylandServer::wl_shm
20{
21public:
23
25
26protected:
27 void shm_bind_resource(Resource *resource) override;
28 void shm_create_pool(Resource *resource, uint32_t id, int32_t fd, int32_t size) override;
29};
30
31class ShmPool : public QtWaylandServer::wl_shm_pool
32{
33public:
34 ShmPool(ShmClientBufferIntegration *integration, wl_client *client, int id, uint32_t version, FileDescriptor &&fd, MemoryMap &&mapping);
35
36 void ref();
37 void unref();
38
42 int refCount = 1;
43 bool sigbusImpossible = false;
44
45protected:
46 void shm_pool_destroy_resource(Resource *resource) override;
47 void shm_pool_create_buffer(Resource *resource, uint32_t id, int32_t offset, int32_t width, int32_t height, int32_t stride, uint32_t format) override;
48 void shm_pool_destroy(Resource *resource) override;
49 void shm_pool_resize(Resource *resource, int32_t size) override;
50};
51
52class KWIN_EXPORT ShmClientBuffer : public GraphicsBuffer
53{
54 Q_OBJECT
55
56public:
57 ShmClientBuffer(ShmPool *pool, ShmAttributes attributes, wl_client *client, uint32_t id);
58 ~ShmClientBuffer() override;
59
60 Map map(MapFlags flags) override;
61 void unmap() override;
62
63 QSize size() const override;
64 bool hasAlphaChannel() const override;
65 const ShmAttributes *shmAttributes() const override;
66
67 static ShmClientBuffer *get(wl_resource *resource);
68
69private:
70 static void buffer_destroy_resource(wl_resource *resource);
71 static void buffer_destroy(wl_client *client, wl_resource *resource);
72 static const struct wl_buffer_interface implementation;
73
74 wl_resource *m_resource = nullptr;
75 ShmPool *m_shmPool;
76 ShmAttributes m_shmAttributes;
77};
78
79} // namespace KWin
Class holding the Wayland server display loop.
Definition display.h:34
ShmClientBufferIntegrationPrivate(Display *display, ShmClientBufferIntegration *q)
void shm_bind_resource(Resource *resource) override
void shm_create_pool(Resource *resource, uint32_t id, int32_t fd, int32_t size) override
ShmClientBufferIntegration * integration
void shm_pool_destroy_resource(Resource *resource) override
ShmPool(ShmClientBufferIntegration *integration, wl_client *client, int id, uint32_t version, FileDescriptor &&fd, MemoryMap &&mapping)
void shm_pool_resize(Resource *resource, int32_t size) override
FileDescriptor fd
void shm_pool_create_buffer(Resource *resource, uint32_t id, int32_t offset, int32_t width, int32_t height, int32_t stride, uint32_t format) override
void shm_pool_destroy(Resource *resource) override
constexpr int version
GLenum format
Definition gltexture.cpp:49