7 #include "outputmanagement_interface.h"
10 #include "outputconfiguration_interface.h"
12 #include "wayland-output-management-server-protocol.h"
13 #include <wayland-server.h>
21 class OutputManagementInterface::Private :
public Global::Private
27 void bind(wl_client *client, uint32_t version, uint32_t
id)
override;
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));
34 void createConfiguration(wl_client *client, wl_resource *resource, uint32_t
id);
36 static void createConfigurationCallback(wl_client *client, wl_resource *resource, uint32_t
id);
39 static const struct org_kde_kwin_outputmanagement_interface s_interface;
40 static const quint32 s_version;
45 const quint32 OutputManagementInterface::Private::s_version = 2;
47 const struct org_kde_kwin_outputmanagement_interface
OutputManagementInterface::Private::s_interface = {createConfigurationCallback};
49 OutputManagementInterface::OutputManagementInterface(Display *display,
QObject *parent)
50 : Global(new Private(this, display), parent)
54 OutputManagementInterface::~OutputManagementInterface()
58 void OutputManagementInterface::Private::createConfigurationCallback(wl_client *client, wl_resource *resource, uint32_t
id)
60 cast(resource)->createConfiguration(client, resource,
id);
63 void OutputManagementInterface::Private::createConfiguration(wl_client *client, wl_resource *resource, uint32_t
id)
66 config->create(display->getConnection(client), wl_resource_get_version(resource),
id);
68 wl_resource_post_no_memory(resource);
73 configurationInterfaces[resource] =
config;
75 configurationInterfaces.remove(resource);
80 : Global::Private(d, &org_kde_kwin_outputmanagement_interface, s_version)
85 void OutputManagementInterface::Private::bind(wl_client *client, uint32_t version, uint32_t
id)
87 auto c = display->getConnection(client);
88 wl_resource *resource = c->createResource(&org_kde_kwin_outputmanagement_interface, qMin(version, s_version),
id);
90 wl_client_post_no_memory(client);
93 wl_resource_set_implementation(resource, &s_interface,
this, unbind);
97 void OutputManagementInterface::Private::unbind(wl_resource *resource)