diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h index e9858f3b6..4b5ef8c1f 100644 --- a/src/backends/meta-monitor-manager-private.h +++ b/src/backends/meta-monitor-manager-private.h @@ -125,7 +125,6 @@ struct _MetaMonitorManager int screen_height; GList *monitors; - GList *scale_override_monitors; GList *logical_monitors; MetaLogicalMonitor *primary_logical_monitor; @@ -378,9 +377,6 @@ gboolean meta_monitor_manager_is_scale_supported (MetaMonitorManager float meta_monitor_manager_get_maximum_crtc_scale (MetaMonitorManager *manager); -gboolean meta_monitor_manager_disable_scale_for_monitor (MetaMonitorManager *manager, - MetaLogicalMonitor *monitor); - MetaMonitorManagerCapability meta_monitor_manager_get_capabilities (MetaMonitorManager *manager); diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 725530cad..1976e2b95 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -561,9 +561,6 @@ meta_monitor_manager_calculate_monitor_mode_scale (MetaMonitorManager monitor, monitor_mode); - if (g_list_find (manager->scale_override_monitors, monitor)) - return ceilf (scale); - return scale; } @@ -678,8 +675,7 @@ static gboolean should_use_stored_config (MetaMonitorManager *manager) { return (manager->in_init || - (!manager->scale_override_monitors && - !meta_monitor_manager_has_hotplug_mode_update (manager))); + !meta_monitor_manager_has_hotplug_mode_update (manager)); } MetaMonitorsConfig * @@ -1537,41 +1533,6 @@ request_persistent_confirmation (MetaMonitorManager *manager) g_signal_emit (manager, signals[CONFIRM_DISPLAY_CHANGE], 0); } -gboolean -meta_monitor_manager_disable_scale_for_monitor (MetaMonitorManager *manager, - MetaLogicalMonitor *monitor) -{ - switch (manager->layout_mode) - { - case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL: - case META_LOGICAL_MONITOR_LAYOUT_MODE_GLOBAL_UI_LOGICAL: - break; - default: - return FALSE; - } - - if (monitor && fmodf (monitor->scale, 1.0) != 0.0f) - { - if (manager->scale_override_monitors) - { - g_clear_pointer (&manager->scale_override_monitors, g_list_free); - g_object_unref (meta_monitor_config_manager_pop_previous (manager->config_manager)); - } - - manager->scale_override_monitors = g_list_copy (monitor->monitors); - meta_monitor_manager_ensure_configured (manager); - return TRUE; - } - - if (manager->scale_override_monitors) - { - g_clear_pointer (&manager->scale_override_monitors, g_list_free); - restore_previous_config (manager); - } - - return FALSE; -} - #define META_DISPLAY_CONFIG_MODE_FLAGS_PREFERRED (1 << 0) #define META_DISPLAY_CONFIG_MODE_FLAGS_CURRENT (1 << 1) diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c index 8ad1d0069..c3c96a5a1 100644 --- a/src/compositor/meta-compositor-x11.c +++ b/src/compositor/meta-compositor-x11.c @@ -271,91 +271,20 @@ shape_cow_for_window (MetaCompositorX11 *compositor_x11, } } -static void -on_redirected_monitor_changed (MetaWindow *window, - int old_monitor, - MetaCompositorX11 *compositor_x11) -{ - MetaBackend *backend = meta_get_backend (); - MetaMonitorManager *monitor_manager = - meta_backend_get_monitor_manager (backend); - - if (old_monitor >= 0 && window->monitor && - window->monitor->number != old_monitor) - { - g_signal_handlers_block_by_func (window, - on_redirected_monitor_changed, - compositor_x11); - - if (!compositor_x11->randr_scale_disabled) - { - compositor_x11->randr_scale_disabled = - meta_monitor_manager_disable_scale_for_monitor (monitor_manager, - window->monitor); - } - - g_signal_handlers_unblock_by_func (window, - on_redirected_monitor_changed, - compositor_x11); - } - else - shape_cow_for_window (META_COMPOSITOR_X11 (compositor_x11), window); -} - -static MetaWindow * -get_unredirectable_window (MetaCompositorX11 *compositor_x11) -{ - MetaCompositor *compositor = META_COMPOSITOR (compositor_x11); - MetaWindowActor *window_actor; - MetaWindowActorX11 *window_actor_x11; - - window_actor = meta_compositor_get_top_window_actor (compositor); - if (!window_actor) - return NULL; - - window_actor_x11 = META_WINDOW_ACTOR_X11 (window_actor); - if (!meta_window_actor_x11_should_unredirect (window_actor_x11)) - return NULL; - - return meta_window_actor_get_meta_window (window_actor); -} - static void set_unredirected_window (MetaCompositorX11 *compositor_x11, MetaWindow *window) { - MetaBackend *backend; - MetaMonitorManager *monitor_manager; MetaWindow *prev_unredirected_window = compositor_x11->unredirected_window; if (prev_unredirected_window == window) - { - if (!window && compositor_x11->randr_scale_disabled && - !get_unredirectable_window (compositor_x11)) - { - backend = meta_get_backend (); - monitor_manager = meta_backend_get_monitor_manager (backend); - - compositor_x11->randr_scale_disabled = - meta_monitor_manager_disable_scale_for_monitor (monitor_manager, - NULL); - } - - return; - } - - backend = meta_get_backend (); - monitor_manager = meta_backend_get_monitor_manager (backend); + return; if (prev_unredirected_window) { MetaWindowActor *window_actor; MetaWindowActorX11 *window_actor_x11; - g_signal_handlers_disconnect_by_func (prev_unredirected_window, - on_redirected_monitor_changed, - compositor_x11); - window_actor = meta_window_actor_from_window (prev_unredirected_window); window_actor_x11 = META_WINDOW_ACTOR_X11 (window_actor); meta_window_actor_x11_set_unredirected (window_actor_x11, FALSE); @@ -369,17 +298,6 @@ set_unredirected_window (MetaCompositorX11 *compositor_x11, MetaWindowActor *window_actor; MetaWindowActorX11 *window_actor_x11; - if (!compositor_x11->randr_scale_disabled) - { - compositor_x11->randr_scale_disabled = - meta_monitor_manager_disable_scale_for_monitor (monitor_manager, - window->monitor); - } - - g_signal_connect_object (window, "monitor-changed", - G_CALLBACK (on_redirected_monitor_changed), - compositor_x11, 0); - window_actor = meta_window_actor_from_window (window); window_actor_x11 = META_WINDOW_ACTOR_X11 (window_actor); meta_window_actor_x11_set_unredirected (window_actor_x11, TRUE); @@ -391,11 +309,21 @@ maybe_unredirect_top_window (MetaCompositorX11 *compositor_x11) { MetaCompositor *compositor = META_COMPOSITOR (compositor_x11); MetaWindow *window_to_unredirect = NULL; + MetaWindowActor *window_actor; + MetaWindowActorX11 *window_actor_x11; if (meta_compositor_is_unredirect_inhibited (compositor)) goto out; - window_to_unredirect = get_unredirectable_window (compositor_x11); + window_actor = meta_compositor_get_top_window_actor (compositor); + if (!window_actor) + goto out; + + window_actor_x11 = META_WINDOW_ACTOR_X11 (window_actor); + if (!meta_window_actor_x11_should_unredirect (window_actor_x11)) + goto out; + + window_to_unredirect = meta_window_actor_get_meta_window (window_actor); out: set_unredirected_window (compositor_x11, window_to_unredirect);