KWin
Loading...
Searching...
No Matches
blur.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org>
3 SPDX-FileCopyrightText: 2015 Marco Martin <mart@kde.org>
4 SPDX-FileCopyrightText: 2020 David Edmundson <davidedmundson@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7*/
8#include "blur.h"
9#include "display.h"
10#include "region_p.h"
11#include "surface_p.h"
12
13#include "qwayland-server-blur.h"
14
15namespace KWin
16{
17static const quint32 s_version = 1;
18
19class BlurManagerInterfacePrivate : public QtWaylandServer::org_kde_kwin_blur_manager
20{
21public:
23
25
26protected:
28 void org_kde_kwin_blur_manager_create(Resource *resource, uint32_t id, wl_resource *surface) override;
29 void org_kde_kwin_blur_manager_unset(Resource *resource, wl_resource *surface) override;
30};
31
33 : QtWaylandServer::org_kde_kwin_blur_manager(*d, s_version)
34 , q(_q)
35{
36}
37
42
43void BlurManagerInterfacePrivate::org_kde_kwin_blur_manager_unset(Resource *resource, wl_resource *surface)
44{
46 if (!s) {
47 return;
48 }
50 surfacePrivate->setBlur(QPointer<BlurInterface>());
51}
52
53void BlurManagerInterfacePrivate::org_kde_kwin_blur_manager_create(Resource *resource, uint32_t id, wl_resource *surface)
54{
56 if (!s) {
57 wl_resource_post_error(resource->handle, 0, "Invalid surface");
58 return;
59 }
60 wl_resource *blur_resource = wl_resource_create(resource->client(), &org_kde_kwin_blur_interface, resource->version(), id);
61 if (!blur_resource) {
62 wl_client_post_no_memory(resource->client());
63 return;
64 }
65 auto blur = new BlurInterface(blur_resource);
67 surfacePrivate->setBlur(blur);
68}
69
71 : QObject(parent)
72 , d(new BlurManagerInterfacePrivate(this, display))
73{
74}
75
79
81{
82 d->globalRemove();
83}
84
85class BlurInterfacePrivate : public QtWaylandServer::org_kde_kwin_blur
86{
87public:
88 BlurInterfacePrivate(BlurInterface *q, wl_resource *resource);
91
93
94protected:
95 void org_kde_kwin_blur_destroy_resource(Resource *resource) override;
96 void org_kde_kwin_blur_commit(Resource *resource) override;
97 void org_kde_kwin_blur_set_region(Resource *resource, wl_resource *region) override;
98 void org_kde_kwin_blur_release(Resource *resource) override;
99};
100
105
106void BlurInterfacePrivate::org_kde_kwin_blur_set_region(Resource *resource, wl_resource *region)
107{
109 if (r) {
110 pendingRegion = r->region();
111 } else {
112 pendingRegion = QRegion();
113 }
114}
115
117{
118 wl_resource_destroy(resource->handle);
119}
120
122{
123 delete q;
124}
125
127 : QtWaylandServer::org_kde_kwin_blur(resource)
128 , q(_q)
129{
130}
131
132BlurInterface::BlurInterface(wl_resource *resource)
133 : QObject()
134 , d(new BlurInterfacePrivate(this, resource))
135{
136}
137
139
141{
142 return d->currentRegion;
143}
144
145}
146
147#include "moc_blur.cpp"
Represents the Resource for the org_kde_kwin_blur interface.
Definition blur.h:59
QRegion region()
Definition blur.cpp:140
~BlurInterface() override
BlurInterfacePrivate(BlurInterface *q, wl_resource *resource)
Definition blur.cpp:126
void org_kde_kwin_blur_release(Resource *resource) override
Definition blur.cpp:116
BlurInterface * q
Definition blur.cpp:92
void org_kde_kwin_blur_destroy_resource(Resource *resource) override
Definition blur.cpp:121
void org_kde_kwin_blur_commit(Resource *resource) override
Definition blur.cpp:101
void org_kde_kwin_blur_set_region(Resource *resource, wl_resource *region) override
Definition blur.cpp:106
Represents the Global for org_kde_kwin_blur_manager interface.
Definition blur.h:32
BlurManagerInterface(Display *display, QObject *parent=nullptr)
Definition blur.cpp:70
~BlurManagerInterface() override
Definition blur.cpp:76
void org_kde_kwin_blur_manager_unset(Resource *resource, wl_resource *surface) override
Definition blur.cpp:43
void org_kde_kwin_blur_manager_destroy_global() override
Definition blur.cpp:38
void org_kde_kwin_blur_manager_create(Resource *resource, uint32_t id, wl_resource *surface) override
Definition blur.cpp:53
BlurManagerInterface * q
Definition blur.cpp:24
BlurManagerInterfacePrivate(BlurManagerInterface *q, Display *d)
Definition blur.cpp:32
Class holding the Wayland server display loop.
Definition display.h:34
static RegionInterface * get(wl_resource *native)
Definition region.cpp:42
QRegion region() const
Definition region.cpp:37
Resource representing a wl_surface.
Definition surface.h:80
static SurfaceInterface * get(wl_resource *native)
Definition surface.cpp:819
void setBlur(const QPointer< BlurInterface > &blur)
Definition surface.cpp:183
static SurfaceInterfacePrivate * get(SurfaceInterface *surface)
Definition surface_p.h:99