diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 56edfd70b..b1cd0063b 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -76,7 +76,6 @@ enum PROP_PANEL_ORIENTATION_MANAGED, PROP_HAS_BUILTIN_PANEL, PROP_NIGHT_LIGHT_SUPPORTED, - PROP_EXPERIMENTAL_HDR, PROP_LAST }; @@ -118,7 +117,6 @@ typedef struct _MetaMonitorManagerPrivate gboolean has_builtin_panel; gboolean night_light_supported; - char *experimental_hdr; guint reload_monitor_manager_id; guint switch_config_handle_id; @@ -535,14 +533,15 @@ set_color_space_and_hdr_metadata (MetaMonitorManager *manager, static void ensure_hdr_settings (MetaMonitorManager *manager) { - MetaMonitorManagerPrivate *priv = - meta_monitor_manager_get_instance_private (manager); + MetaBackend *backend = manager->backend; + MetaContext *context = meta_backend_get_context (backend); + MetaDebugControl *debug_control = meta_context_get_debug_control (context); MetaOutputColorspace color_space; MetaOutputHdrMetadata hdr_metadata; GList *l; set_color_space_and_hdr_metadata (manager, - g_strcmp0 (priv->experimental_hdr, "on") == 0, + meta_debug_control_is_hdr_enabled (debug_control), &color_space, &hdr_metadata); @@ -1361,9 +1360,10 @@ on_started (MetaContext *context, { MetaDebugControl *debug_control = meta_context_get_debug_control (context); - g_signal_connect (monitor_manager, "notify::experimental-hdr", - G_CALLBACK (meta_monitor_manager_reconfigure), - NULL); + g_signal_connect_data (debug_control, "notify::enable-hdr", + G_CALLBACK (meta_monitor_manager_reconfigure), + monitor_manager, NULL, + G_CONNECT_SWAPPED | G_CONNECT_AFTER); g_signal_connect_data (debug_control, "notify::force-linear-blending", G_CALLBACK (meta_monitor_manager_reconfigure), monitor_manager, NULL, @@ -1374,17 +1374,12 @@ static void meta_monitor_manager_constructed (GObject *object) { MetaMonitorManager *manager = META_MONITOR_MANAGER (object); - MetaMonitorManagerPrivate *priv = - meta_monitor_manager_get_instance_private (manager); MetaBackend *backend = manager->backend; MetaContext *context = meta_backend_get_context (backend); MetaSettings *settings = meta_backend_get_settings (backend); manager->display_config = meta_dbus_display_config_skeleton_new (); - if (g_strcmp0 (getenv ("MUTTER_DEBUG_ENABLE_HDR"), "1") == 0) - priv->experimental_hdr = g_strdup ("on"); - g_signal_connect_object (settings, "experimental-features-changed", G_CALLBACK (experimental_features_changed), @@ -1433,7 +1428,6 @@ meta_monitor_manager_finalize (GObject *object) MetaMonitorManagerPrivate *priv = meta_monitor_manager_get_instance_private (manager); - g_clear_pointer (&priv->experimental_hdr, g_free); g_list_free_full (manager->logical_monitors, g_object_unref); g_warn_if_fail (!priv->virtual_monitors); @@ -1475,18 +1469,12 @@ meta_monitor_manager_set_property (GObject *object, GParamSpec *pspec) { MetaMonitorManager *manager = META_MONITOR_MANAGER (object); - MetaMonitorManagerPrivate *priv = - meta_monitor_manager_get_instance_private (manager); switch (prop_id) { case PROP_BACKEND: manager->backend = g_value_get_object (value); break; - case PROP_EXPERIMENTAL_HDR: - g_clear_pointer (&priv->experimental_hdr, g_free); - priv->experimental_hdr = g_value_dup_string (value); - break; case PROP_PANEL_ORIENTATION_MANAGED: case PROP_HAS_BUILTIN_PANEL: case PROP_NIGHT_LIGHT_SUPPORTED: @@ -1519,9 +1507,6 @@ meta_monitor_manager_get_property (GObject *object, case PROP_NIGHT_LIGHT_SUPPORTED: g_value_set_boolean (value, priv->night_light_supported); break; - case PROP_EXPERIMENTAL_HDR: - g_value_set_string (value, priv->experimental_hdr); - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -1617,12 +1602,6 @@ meta_monitor_manager_class_init (MetaMonitorManagerClass *klass) G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); - obj_props[PROP_EXPERIMENTAL_HDR] = - g_param_spec_string ("experimental-hdr", NULL, NULL, - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - g_object_class_install_properties (object_class, PROP_LAST, obj_props); } diff --git a/src/core/meta-debug-control.c b/src/core/meta-debug-control.c index 42e1bec8f..72155e008 100644 --- a/src/core/meta-debug-control.c +++ b/src/core/meta-debug-control.c @@ -84,72 +84,6 @@ on_bus_acquired (GDBusConnection *connection, } } -static void -on_enable_hdr_changed (MetaDebugControl *debug_control, - GParamSpec *pspec) -{ - MetaDBusDebugControl *dbus_debug_control = - META_DBUS_DEBUG_CONTROL (debug_control); - MetaBackend *backend = meta_context_get_backend (debug_control->context); - MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (backend); - gboolean enable; - - enable = meta_dbus_debug_control_get_enable_hdr (dbus_debug_control); - g_object_set (G_OBJECT (monitor_manager), - "experimental-hdr", enable ? "on" : "off", - NULL); -} - -static void -on_experimental_hdr_changed (MetaMonitorManager *monitor_manager, - GParamSpec *pspec, - MetaDebugControl *debug_control) -{ - MetaDBusDebugControl *dbus_debug_control = - META_DBUS_DEBUG_CONTROL (debug_control); - g_autofree char *experimental_hdr = NULL; - gboolean enable; - - g_object_get (G_OBJECT (monitor_manager), - "experimental-hdr", &experimental_hdr, - NULL); - - enable = g_strcmp0 (experimental_hdr, "on") == 0; - if (enable == meta_dbus_debug_control_get_enable_hdr (dbus_debug_control)) - return; - - meta_dbus_debug_control_set_enable_hdr (META_DBUS_DEBUG_CONTROL (debug_control), - g_strcmp0 (experimental_hdr, "on") == 0); -} - -static void -on_context_started (MetaContext *context, - MetaDebugControl *debug_control) -{ - MetaBackend *backend = meta_context_get_backend (context); - MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (backend); - - g_signal_connect (monitor_manager, "notify::experimental-hdr", - G_CALLBACK (on_experimental_hdr_changed), - debug_control); -} - -static void -meta_debug_control_constructed (GObject *object) -{ - MetaDebugControl *debug_control = META_DEBUG_CONTROL (object); - - g_signal_connect_object (debug_control->context, "started", - G_CALLBACK (on_context_started), debug_control, - G_CONNECT_DEFAULT); - - g_signal_connect_object (debug_control, "notify::enable-hdr", - G_CALLBACK (on_enable_hdr_changed), debug_control, - G_CONNECT_DEFAULT); - - G_OBJECT_CLASS (meta_debug_control_parent_class)->constructed (object); -} - static void meta_debug_control_dispose (GObject *object) { @@ -203,7 +137,6 @@ meta_debug_control_class_init (MetaDebugControlClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->constructed = meta_debug_control_constructed; object_class->dispose = meta_debug_control_dispose; object_class->set_property = meta_debug_control_set_property; object_class->get_property = meta_debug_control_get_property; @@ -221,8 +154,15 @@ meta_debug_control_init (MetaDebugControl *debug_control) { MetaDBusDebugControl *dbus_debug_control = META_DBUS_DEBUG_CONTROL (debug_control); + gboolean enable_hdr, force_linear_blending; - meta_dbus_debug_control_set_force_linear_blending (dbus_debug_control, FALSE); + enable_hdr = g_strcmp0 (getenv ("MUTTER_DEBUG_ENABLE_HDR"), "1") == 0; + meta_dbus_debug_control_set_enable_hdr (dbus_debug_control, enable_hdr); + + force_linear_blending = + g_strcmp0 (getenv ("MUTTER_DEBUG_FORCE_LINEAR_BLENDING"), "1") == 0; + meta_dbus_debug_control_set_force_linear_blending (dbus_debug_control, + force_linear_blending); } gboolean @@ -234,6 +174,15 @@ meta_debug_control_is_linear_blending_forced (MetaDebugControl *debug_control) return meta_dbus_debug_control_get_force_linear_blending (dbus_debug_control); } +gboolean +meta_debug_control_is_hdr_enabled (MetaDebugControl *debug_control) +{ + MetaDBusDebugControl *dbus_debug_control = + META_DBUS_DEBUG_CONTROL (debug_control); + + return meta_dbus_debug_control_get_enable_hdr (dbus_debug_control); +} + void meta_debug_control_export (MetaDebugControl *debug_control) { diff --git a/src/core/meta-debug-control.h b/src/core/meta-debug-control.h index 640f39537..2c8c93133 100644 --- a/src/core/meta-debug-control.h +++ b/src/core/meta-debug-control.h @@ -30,4 +30,6 @@ G_DECLARE_FINAL_TYPE (MetaDebugControl, gboolean meta_debug_control_is_linear_blending_forced (MetaDebugControl *debug_control); +gboolean meta_debug_control_is_hdr_enabled (MetaDebugControl *debug_control); + void meta_debug_control_export (MetaDebugControl *debug_control);