renderer/native: Steal the power save flip list before iterating over it
Because a single iteration might also grow the list again. This is now a partial revert of a5be92e03d3b8f74222c5d53ba1332cdeae69bcc. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441>
This commit is contained in:
parent
fccfaca9fc
commit
be7fc75878
@ -740,17 +740,24 @@ configure_disabled_crtcs (MetaKmsDevice *kms_device,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static gboolean
|
||||||
dummy_power_save_page_flip_cb (gpointer user_data)
|
dummy_power_save_page_flip_cb (gpointer user_data)
|
||||||
{
|
{
|
||||||
MetaRendererNative *renderer_native = user_data;
|
MetaRendererNative *renderer_native = user_data;
|
||||||
|
g_autolist (GObject) old_list = NULL;
|
||||||
|
|
||||||
g_list_foreach (renderer_native->power_save_page_flip_onscreens,
|
old_list = g_steal_pointer (&renderer_native->power_save_page_flip_onscreens);
|
||||||
|
|
||||||
|
g_list_foreach (old_list,
|
||||||
(GFunc) meta_onscreen_native_dummy_power_save_page_flip,
|
(GFunc) meta_onscreen_native_dummy_power_save_page_flip,
|
||||||
NULL);
|
NULL);
|
||||||
g_clear_list (&renderer_native->power_save_page_flip_onscreens,
|
|
||||||
g_object_unref);
|
if (renderer_native->power_save_page_flip_onscreens != NULL)
|
||||||
|
return G_SOURCE_CONTINUE;
|
||||||
|
|
||||||
renderer_native->power_save_page_flip_source_id = 0;
|
renderer_native->power_save_page_flip_source_id = 0;
|
||||||
|
|
||||||
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -765,9 +772,9 @@ meta_renderer_native_queue_power_save_page_flip (MetaRendererNative *renderer_na
|
|||||||
if (!renderer_native->power_save_page_flip_source_id)
|
if (!renderer_native->power_save_page_flip_source_id)
|
||||||
{
|
{
|
||||||
renderer_native->power_save_page_flip_source_id =
|
renderer_native->power_save_page_flip_source_id =
|
||||||
g_timeout_add_once (timeout_ms,
|
g_timeout_add (timeout_ms,
|
||||||
dummy_power_save_page_flip_cb,
|
dummy_power_save_page_flip_cb,
|
||||||
renderer_native);
|
renderer_native);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderer_native->power_save_page_flip_onscreens =
|
renderer_native->power_save_page_flip_onscreens =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user