7 #include "blur_interface.h"
10 #include "region_interface.h"
11 #include "resource_p.h"
12 #include "surface_interface_p.h"
14 #include <wayland-blur-server-protocol.h>
15 #include <wayland-server.h>
21 class BlurManagerInterface::Private :
public Global::Private
24 Private(BlurManagerInterface *q, Display *d);
27 void bind(wl_client *client, uint32_t version, uint32_t
id)
override;
28 void createBlur(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *surface);
30 static void createCallback(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *surface);
31 static void unsetCallback(wl_client *client, wl_resource *resource, wl_resource *surface);
32 static void unbind(wl_resource *resource);
33 static Private *cast(wl_resource *r)
37 return static_cast<Private *
>(blurManager->d.data());
41 BlurManagerInterface *q;
42 static const struct org_kde_kwin_blur_manager_interface s_interface;
43 static const quint32 s_version;
46 const quint32 BlurManagerInterface::Private::s_version = 1;
49 const struct org_kde_kwin_blur_manager_interface BlurManagerInterface::Private::s_interface = {createCallback, unsetCallback};
52 BlurManagerInterface::Private::Private(BlurManagerInterface *q, Display *d)
53 : Global::Private(d, &org_kde_kwin_blur_manager_interface, s_version)
58 void BlurManagerInterface::Private::bind(wl_client *client, uint32_t version, uint32_t
id)
60 auto c = display->getConnection(client);
61 wl_resource *resource = c->createResource(&org_kde_kwin_blur_manager_interface, qMin(version, s_version),
id);
63 wl_client_post_no_memory(client);
67 wl_resource_set_implementation(resource, &s_interface, ref, unbind);
70 void BlurManagerInterface::Private::unbind(wl_resource *r)
75 void BlurManagerInterface::Private::createCallback(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *surface)
77 auto m = cast(resource);
81 m->createBlur(client, resource,
id, surface);
84 void BlurManagerInterface::Private::createBlur(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *surface)
91 BlurInterface *blur =
new BlurInterface(q, resource);
92 blur->create(display->getConnection(client), wl_resource_get_version(resource),
id);
93 if (!blur->resource()) {
94 wl_resource_post_no_memory(resource);
101 void BlurManagerInterface::Private::unsetCallback(wl_client *client, wl_resource *resource, wl_resource *surface)
112 BlurManagerInterface::BlurManagerInterface(Display *display,
QObject *parent)
113 : Global(new Private(this, display), parent)
117 BlurManagerInterface::~BlurManagerInterface() =
default;
119 class BlurInterface::Private :
public Resource::Private
122 Private(BlurInterface *q, BlurManagerInterface *c, wl_resource *parentResource);
131 BlurInterface *q_func()
133 return reinterpret_cast<BlurInterface *
>(q);
136 static void commitCallback(wl_client *client, wl_resource *resource);
137 static void setRegionCallback(wl_client *client, wl_resource *resource, wl_resource *region);
139 static const struct org_kde_kwin_blur_interface s_interface;
143 const struct org_kde_kwin_blur_interface BlurInterface::Private::s_interface = {commitCallback, setRegionCallback, resourceDestroyedCallback};
146 void BlurInterface::Private::commitCallback(wl_client *client, wl_resource *resource)
149 cast<Private>(resource)->commit();
152 void BlurInterface::Private::commit()
154 currentRegion = pendingRegion;
157 void BlurInterface::Private::setRegionCallback(wl_client *client, wl_resource *resource, wl_resource *region)
160 Private *p = cast<Private>(resource);
163 p->pendingRegion = r->region();
169 BlurInterface::Private::Private(BlurInterface *q, BlurManagerInterface *c, wl_resource *parentResource)
170 :
Resource::Private(q, c, parentResource, &org_kde_kwin_blur_interface, &s_interface)
174 BlurInterface::Private::~Private() =
default;
176 BlurInterface::BlurInterface(BlurManagerInterface *parent, wl_resource *parentResource)
177 :
Resource(new Private(this, parent, parentResource))
181 BlurInterface::~BlurInterface() =
default;
186 return d->currentRegion;
189 BlurInterface::Private *BlurInterface::d_func()
const
191 return reinterpret_cast<Private *
>(d.data());