6 #include "slide_interface.h"
9 #include "resource_p.h"
10 #include "surface_interface.h"
11 #include "surface_interface_p.h"
13 #include <wayland-server.h>
14 #include <wayland-slide-server-protocol.h>
20 class SlideManagerInterface::Private :
public Global::Private
23 Private(SlideManagerInterface *q, Display *d);
26 void bind(wl_client *client, uint32_t version, uint32_t
id)
override;
27 void createSlide(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *surface);
29 static void unbind(wl_resource *resource);
30 static Private *cast(wl_resource *r)
32 return reinterpret_cast<Private *
>(wl_resource_get_user_data(r));
35 static void createCallback(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *surface);
36 static void unsetCallback(wl_client *client, wl_resource *resource, wl_resource *surface);
38 SlideManagerInterface *q;
39 static const struct org_kde_kwin_slide_manager_interface s_interface;
41 static const quint32 s_version;
44 const quint32 SlideManagerInterface::Private::s_version = 1;
47 const struct org_kde_kwin_slide_manager_interface SlideManagerInterface::Private::s_interface = {createCallback, unsetCallback};
50 void SlideManagerInterface::Private::createCallback(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *surface)
52 cast(resource)->createSlide(client, resource,
id, surface);
55 void SlideManagerInterface::Private::createSlide(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *surface)
62 SlideInterface *slide =
new SlideInterface(q, resource);
63 slide->create(display->getConnection(client), wl_resource_get_version(resource),
id);
64 if (!slide->resource()) {
65 wl_resource_post_no_memory(resource);
72 void SlideManagerInterface::Private::unsetCallback(wl_client *client, wl_resource *resource, wl_resource *surface)
80 SlideManagerInterface::Private::Private(SlideManagerInterface *q, Display *d)
81 : Global::Private(d, &org_kde_kwin_slide_manager_interface, s_version)
86 void SlideManagerInterface::Private::bind(wl_client *client, uint32_t version, uint32_t
id)
88 auto c = display->getConnection(client);
89 wl_resource *resource = c->createResource(&org_kde_kwin_slide_manager_interface, qMin(version, s_version),
id);
91 wl_client_post_no_memory(client);
94 wl_resource_set_implementation(resource, &s_interface,
this, unbind);
98 void SlideManagerInterface::Private::unbind(wl_resource *resource)
104 SlideManagerInterface::SlideManagerInterface(Display *display,
QObject *parent)
105 : Global(new Private(this, display), parent)
109 SlideManagerInterface::~SlideManagerInterface() =
default;
111 class SlideInterface::Private :
public Resource::Private
114 Private(SlideInterface *q, SlideManagerInterface *c, wl_resource *parentResource);
117 SlideInterface::Location pendingLocation;
118 SlideInterface::Location currentLocation;
119 uint32_t pendingOffset;
120 uint32_t currentOffset;
123 static void commitCallback(wl_client *client, wl_resource *resource);
124 static void setLocationCallback(wl_client *client, wl_resource *resource, uint32_t location);
125 static void setOffsetCallback(wl_client *client, wl_resource *resource, int32_t offset);
127 SlideInterface *q_func()
129 return reinterpret_cast<SlideInterface *
>(q);
132 static const struct org_kde_kwin_slide_interface s_interface;
136 const struct org_kde_kwin_slide_interface SlideInterface::Private::s_interface = {commitCallback,
139 resourceDestroyedCallback};
142 void SlideInterface::Private::commitCallback(wl_client *client, wl_resource *resource)
145 Private *p = cast<Private>(resource);
146 p->currentLocation = p->pendingLocation;
147 p->currentOffset = p->pendingOffset;
150 void SlideInterface::Private::setLocationCallback(wl_client *client, wl_resource *resource, uint32_t location)
153 Private *p = cast<Private>(resource);
154 p->pendingLocation = (SlideInterface::Location)location;
157 void SlideInterface::Private::setOffsetCallback(wl_client *client, wl_resource *resource, int32_t offset)
160 Private *p = cast<Private>(resource);
161 p->pendingOffset = offset;
164 SlideInterface::Private::Private(SlideInterface *q, SlideManagerInterface *c, wl_resource *parentResource)
165 :
Resource::Private(q, c, parentResource, &org_kde_kwin_slide_interface, &s_interface)
169 SlideInterface::Private::~Private() =
default;
171 SlideInterface::SlideInterface(SlideManagerInterface *parent, wl_resource *parentResource)
172 :
Resource(new Private(this, parent, parentResource))
176 SlideInterface::~SlideInterface() =
default;
181 return d->currentLocation;
184 qint32 SlideInterface::offset()
const
187 return d->currentOffset;
190 SlideInterface::Private *SlideInterface::d_func()
const
192 return reinterpret_cast<Private *
>(d.data());