diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2022-08-01 23:05:28 +0200 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2022-09-01 17:52:01 +0200 |
commit | 9dda79b281cce6edc5640f02bd3b5d91124642ed (patch) | |
tree | 86321cac7aaef154e9b82d1008afcbd44bc95fba /src/backends/meta-monitor-manager.c | |
parent | 0a0fb2fda951a301e2ee3c688dd9934cf761dd87 (diff) | |
download | mutter-9dda79b281cce6edc5640f02bd3b5d91124642ed.tar.gz |
monitor-manager: Move gamma LUT manipulation API to MetaCrtc
In practice, for KMS backend CRTC's, we cache the gamma in the monitor
manager instance, so that anyone asking gets the pending or up to date
value, instead of the potentially not up to date value if one queries
after gamma was scheduled to be updated, and before it was actually
updated.
While this is true, lets still move the API to the MetaCrtc type; the
backend specific implementation can still look up cached values from the
MetaMonitorManager, but for users, it becomes less cumbersome to not
have to go via the monitor manager.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2165>
Diffstat (limited to 'src/backends/meta-monitor-manager.c')
-rw-r--r-- | src/backends/meta-monitor-manager.c | 53 |
1 files changed, 3 insertions, 50 deletions
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 87026ca31..32a83beed 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -1152,33 +1152,6 @@ update_has_builtin_panel (MetaMonitorManager *manager) obj_props[PROP_HAS_BUILTIN_PANEL]); } -void -meta_monitor_manager_get_crtc_gamma (MetaMonitorManager *manager, - MetaCrtc *crtc, - size_t *size, - unsigned short **red, - unsigned short **green, - unsigned short **blue) -{ - MetaMonitorManagerClass *klass = META_MONITOR_MANAGER_GET_CLASS (manager); - - if (klass->get_crtc_gamma) - { - klass->get_crtc_gamma (manager, crtc, size, red, green, blue); - } - else - { - if (size) - *size = 0; - if (red) - *red = NULL; - if (green) - *green = NULL; - if (blue) - *blue = NULL; - } -} - static void update_night_light_supported (MetaMonitorManager *manager) { @@ -1198,9 +1171,7 @@ update_night_light_supported (MetaMonitorManager *manager) MetaCrtc *crtc = l_crtc->data; size_t gamma_lut_size; - meta_monitor_manager_get_crtc_gamma (manager, crtc, - &gamma_lut_size, - NULL, NULL, NULL); + meta_crtc_get_gamma_lut (crtc, &gamma_lut_size, NULL, NULL, NULL); if (gamma_lut_size > 0) { night_light_supported = TRUE; @@ -2918,8 +2889,7 @@ meta_monitor_manager_handle_get_crtc_gamma (MetaDBusDisplayConfig *skeleton, crtc = g_list_nth_data (combined_crtcs, crtc_id); g_list_free (combined_crtcs); - meta_monitor_manager_get_crtc_gamma (manager, crtc, - &size, &red, &green, &blue); + meta_crtc_get_gamma_lut (crtc, &size, &red, &green, &blue); red_bytes = g_bytes_new_take (red, size * sizeof (unsigned short)); green_bytes = g_bytes_new_take (green, size * sizeof (unsigned short)); @@ -2949,7 +2919,6 @@ meta_monitor_manager_handle_set_crtc_gamma (MetaDBusDisplayConfig *skeleton, GVariant *blue_v, MetaMonitorManager *manager) { - MetaMonitorManagerClass *klass; GList *combined_crtcs; MetaCrtc *crtc; gsize size, dummy; @@ -2989,9 +2958,7 @@ meta_monitor_manager_handle_set_crtc_gamma (MetaDBusDisplayConfig *skeleton, green = (unsigned short*) g_bytes_get_data (green_bytes, &dummy); blue = (unsigned short*) g_bytes_get_data (blue_bytes, &dummy); - klass = META_MONITOR_MANAGER_GET_CLASS (manager); - if (klass->set_crtc_gamma) - klass->set_crtc_gamma (manager, crtc, size, red, green, blue); + meta_crtc_set_gamma_lut (crtc, size, red, green, blue); meta_dbus_display_config_complete_set_crtc_gamma (skeleton, invocation); g_bytes_unref (red_bytes); @@ -3953,17 +3920,3 @@ meta_monitor_manager_get_virtual_monitors (MetaMonitorManager *manager) return priv->virtual_monitors; } - -void -meta_monitor_manager_set_crtc_gamma (MetaMonitorManager *manager, - MetaCrtc *crtc, - size_t size, - unsigned short *red, - unsigned short *green, - unsigned short *blue) -{ - MetaMonitorManagerClass *manager_class = - META_MONITOR_MANAGER_GET_CLASS (manager); - - manager_class->set_crtc_gamma (manager, crtc, size, red, green, blue); -} |