diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2018-07-12 16:21:55 +0200 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2018-11-09 11:16:30 +0100 |
commit | 25c53b2fb25d325a40cb12b2e38b2a895983f441 (patch) | |
tree | f604165cb3d62311c8d26797b3642680bb341cd4 /src | |
parent | 213ed80284898f8537e37678a9c437f1770f56aa (diff) | |
download | mutter-25c53b2fb25d325a40cb12b2e38b2a895983f441.tar.gz |
backend: Freeze frame clock when headless
Don't schedule redraws when being headless; there is nothing to draw so
don't attempt to draw. This also makes a flaky test become non-flaky, as
it previously spuriously got warnings due to windows being "painted"
when headless but lacking frame timings, as nothing was actually
painted.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/170
Diffstat (limited to 'src')
-rw-r--r-- | src/backends/meta-backend.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c index 375e9d298..709d4194c 100644 --- a/src/backends/meta-backend.c +++ b/src/backends/meta-backend.c @@ -123,6 +123,8 @@ struct _MetaBackendPrivate guint sleep_signal_id; GCancellable *cancellable; GDBusConnection *system_bus; + + gboolean was_headless; }; typedef struct _MetaBackendPrivate MetaBackendPrivate; @@ -223,6 +225,19 @@ meta_backend_monitors_changed (MetaBackend *backend) } meta_cursor_renderer_force_update (priv->cursor_renderer); + + if (meta_monitor_manager_is_headless (priv->monitor_manager) && + !priv->was_headless) + { + clutter_stage_freeze_updates (CLUTTER_STAGE (priv->stage)); + priv->was_headless = TRUE; + } + else if (!meta_monitor_manager_is_headless (priv->monitor_manager) && + priv->was_headless) + { + clutter_stage_thaw_updates (CLUTTER_STAGE (priv->stage)); + priv->was_headless = FALSE; + } } void |