summaryrefslogtreecommitdiff
path: root/src/backends/meta-monitor-manager.c
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2022-08-01 23:05:28 +0200
committerJonas Ådahl <jadahl@gmail.com>2022-09-01 17:52:01 +0200
commit9dda79b281cce6edc5640f02bd3b5d91124642ed (patch)
tree86321cac7aaef154e9b82d1008afcbd44bc95fba /src/backends/meta-monitor-manager.c
parent0a0fb2fda951a301e2ee3c688dd9934cf761dd87 (diff)
downloadmutter-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.c53
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);
-}