summaryrefslogtreecommitdiff
path: root/remoting
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-08-27 14:14:27 +0300
committerMarius Vlad <marius.vlad@collabora.com>2020-08-27 14:14:27 +0300
commite0b937af2893f13de9d17cc4385f759962bb613e (patch)
treead3a2318e3d74f25abcb46f2187f474bec356ff7 /remoting
parent2ac73a8b535f1a5d5c024935d37ad8eb06db6d2e (diff)
downloadweston-e0b937af2893f13de9d17cc4385f759962bb613e.tar.gz
remoting: Add DPMS support in remoting pluging
Just like pipewire, add DPMS support in remoting plug-in. Mechanical change mimicking a24a326bb19ec5. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Diffstat (limited to 'remoting')
-rw-r--r--remoting/remoting-plugin.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/remoting/remoting-plugin.c b/remoting/remoting-plugin.c
index 0928a6b1..85b6bcfd 100644
--- a/remoting/remoting-plugin.c
+++ b/remoting/remoting-plugin.c
@@ -119,6 +119,7 @@ struct remoted_output {
struct remoted_gstpipe gstpipe;
GstClockTime start_time;
int retry_count;
+ enum dpms_enum dpms;
};
struct mem_free_cb_data {
@@ -477,8 +478,12 @@ remoting_output_finish_frame_handler(void *data)
api->finish_frame(output->output, &now, 0);
}
- msec = millihz_to_nsec(output->output->current_mode->refresh) / 1000000;
- wl_event_source_timer_update(output->finish_frame_timer, msec);
+ if (output->dpms == WESTON_DPMS_ON) {
+ msec = millihz_to_nsec(output->output->current_mode->refresh) / 1000000;
+ wl_event_source_timer_update(output->finish_frame_timer, msec);
+ } else {
+ wl_event_source_timer_update(output->finish_frame_timer, 0);
+ }
return 0;
}
@@ -666,6 +671,18 @@ remoting_output_start_repaint_loop(struct weston_output *output)
return 0;
}
+static void
+remoting_output_set_dpms(struct weston_output *base_output, enum dpms_enum level)
+{
+ struct remoted_output *output = lookup_remoted_output(base_output);
+
+ if (output->dpms == level)
+ return;
+
+ output->dpms = level;
+ remoting_output_finish_frame_handler(output);
+}
+
static int
remoting_output_enable(struct weston_output *output)
{
@@ -684,6 +701,7 @@ remoting_output_enable(struct weston_output *output)
remoted_output->saved_start_repaint_loop = output->start_repaint_loop;
output->start_repaint_loop = remoting_output_start_repaint_loop;
+ output->set_dpms = remoting_output_set_dpms;
ret = remoting_gst_pipeline_init(remoted_output);
if (ret < 0) {
@@ -697,6 +715,7 @@ remoting_output_enable(struct weston_output *output)
remoting_output_finish_frame_handler,
remoted_output);
+ remoted_output->dpms = WESTON_DPMS_ON;
return 0;
}