7 #include "dpms_interface_p.h"
8 #include "output_interface.h"
14 const quint32 DpmsManagerInterface::Private::s_version = 1;
17 const struct org_kde_kwin_dpms_manager_interface DpmsManagerInterface::Private::s_interface = {getDpmsCallback};
20 DpmsManagerInterface::Private::Private(DpmsManagerInterface *qptr, Display *d)
21 : Global::Private(d, &org_kde_kwin_dpms_manager_interface, s_version)
26 void DpmsManagerInterface::Private::bind(wl_client *client, uint32_t version, uint32_t
id)
28 auto c = display->getConnection(client);
29 wl_resource *dpms = c->createResource(&org_kde_kwin_dpms_manager_interface, qMin(version, s_version),
id);
31 wl_client_post_no_memory(client);
34 wl_resource_set_implementation(dpms, &s_interface,
this,
nullptr);
37 void DpmsManagerInterface::Private::getDpmsCallback(wl_client *client, wl_resource *resource, uint32_t
id, wl_resource *output)
39 auto p = Private::cast(resource);
40 auto c = p->display->getConnection(client);
42 DpmsInterface *dpms =
new DpmsInterface(o, resource, p->q);
43 dpms->create(c, wl_resource_get_version(resource),
id);
44 if (!dpms->resource()) {
45 wl_resource_post_no_memory(resource);
48 dpms->sendSupported();
53 DpmsManagerInterface::DpmsManagerInterface(Display *display,
QObject *parent)
54 : Global(new Private(this, display), parent)
58 DpmsManagerInterface::~DpmsManagerInterface() =
default;
61 const struct org_kde_kwin_dpms_interface DpmsInterface::Private::s_interface = {setCallback, resourceDestroyedCallback};
64 DpmsInterface::Private::Private(DpmsInterface *q, DpmsManagerInterface *g, wl_resource *parentResource, OutputInterface *outputInterface)
65 :
Resource::Private(q, g, parentResource, &org_kde_kwin_dpms_interface, &s_interface)
66 , output(outputInterface)
70 void DpmsInterface::Private::setCallback(wl_client *client, wl_resource *resource, uint32_t mode)
73 OutputInterface::DpmsMode dpmsMode;
75 case ORG_KDE_KWIN_DPMS_MODE_ON:
76 dpmsMode = OutputInterface::DpmsMode::On;
78 case ORG_KDE_KWIN_DPMS_MODE_STANDBY:
79 dpmsMode = OutputInterface::DpmsMode::Standby;
81 case ORG_KDE_KWIN_DPMS_MODE_SUSPEND:
82 dpmsMode = OutputInterface::DpmsMode::Suspend;
84 case ORG_KDE_KWIN_DPMS_MODE_OFF:
85 dpmsMode = OutputInterface::DpmsMode::Off;
90 Q_EMIT cast<Private>(resource)->output->dpmsModeRequested(dpmsMode);
93 DpmsInterface::DpmsInterface(OutputInterface *output, wl_resource *parentResource, DpmsManagerInterface *manager)
94 :
Resource(new Private(this, manager, parentResource, output))
96 connect(
output, &OutputInterface::dpmsSupportedChanged,
this, [
this] {
100 connect(
output, &OutputInterface::dpmsModeChanged,
this, [
this] {
106 DpmsInterface::~DpmsInterface() =
default;
108 void DpmsInterface::sendSupported()
111 org_kde_kwin_dpms_send_supported(d->resource, d->output->isDpmsSupported() ? 1 : 0);
114 void DpmsInterface::sendMode()
117 const auto mode = d->output->dpmsMode();
118 org_kde_kwin_dpms_mode wlMode;
120 case OutputInterface::DpmsMode::On:
121 wlMode = ORG_KDE_KWIN_DPMS_MODE_ON;
123 case OutputInterface::DpmsMode::Standby:
124 wlMode = ORG_KDE_KWIN_DPMS_MODE_STANDBY;
126 case OutputInterface::DpmsMode::Suspend:
127 wlMode = ORG_KDE_KWIN_DPMS_MODE_SUSPEND;
129 case OutputInterface::DpmsMode::Off:
130 wlMode = ORG_KDE_KWIN_DPMS_MODE_OFF;
135 org_kde_kwin_dpms_send_mode(d->resource, wlMode);
138 void DpmsInterface::sendDone()
141 org_kde_kwin_dpms_send_done(d->resource);
145 DpmsInterface::Private *DpmsInterface::d_func()
const
147 return reinterpret_cast<Private *
>(d.data());