From c22816393cb0bb52ca655c3e989271fc85a0452d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 1 Jul 2024 15:36:55 +0200 Subject: [PATCH] monitor: Add backlight abstraction This allows higher levels to deal with backlight on a monitor bases, instead of having to deal with the fact that some monitors might have multiple outputs. Part-of: --- src/backends/meta-monitor.c | 58 +++++++++++++++++++++++++++++++++++++ src/backends/meta-monitor.h | 10 +++++++ 2 files changed, 68 insertions(+) diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c index ea38aec21..b7efabda2 100644 --- a/src/backends/meta-monitor.c +++ b/src/backends/meta-monitor.c @@ -2401,3 +2401,61 @@ out: *out_refresh_rate = refresh_rate; return TRUE; } + +gboolean +meta_monitor_get_backlight_info (MetaMonitor *monitor, + int *backlight_min, + int *backlight_max) +{ + MetaOutput *main_output; + int value; + + main_output = meta_monitor_get_main_output (monitor); + value = meta_output_get_backlight (main_output); + if (value >= 0) + { + const MetaOutputInfo *output_info = meta_output_get_info (main_output); + if (backlight_min) + *backlight_min = output_info->backlight_min; + if (backlight_max) + *backlight_max = output_info->backlight_max; + return TRUE; + } + else + { + return FALSE; + } +} + +void +meta_monitor_set_backlight (MetaMonitor *monitor, + int value) +{ + MetaMonitorPrivate *priv = meta_monitor_get_instance_private (monitor); + GList *l; + + for (l = priv->outputs; l; l = l->next) + { + MetaOutput *output = l->data; + + meta_output_set_backlight (output, value); + } +} + +gboolean +meta_monitor_get_backlight (MetaMonitor *monitor, + int *value) +{ + if (meta_monitor_get_backlight_info (monitor, NULL, NULL)) + { + MetaOutput *main_output; + + main_output = meta_monitor_get_main_output (monitor); + *value = meta_output_get_backlight (main_output); + return TRUE; + } + else + { + return FALSE; + } +} diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h index 69e91ef55..e2a99cec0 100644 --- a/src/backends/meta-monitor.h +++ b/src/backends/meta-monitor.h @@ -335,3 +335,13 @@ gboolean meta_parse_monitor_mode (const char *string, int *out_height, float *out_refresh_rate, float fallback_refresh_rate); + +gboolean meta_monitor_get_backlight_info (MetaMonitor *monitor, + int *backlight_min, + int *backlight_max); + +void meta_monitor_set_backlight (MetaMonitor *monitor, + int value); + +gboolean meta_monitor_get_backlight (MetaMonitor *monitor, + int *value);