summaryrefslogtreecommitdiff
path: root/src/backends/native/meta-renderer-native.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/native/meta-renderer-native.c')
-rw-r--r--src/backends/native/meta-renderer-native.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 8258da37d..086e8e43c 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -1703,6 +1703,9 @@ retry_page_flips (gpointer user_data)
}
else
{
+ MetaBackend *backend = backend_from_renderer_native (renderer_native);
+
+ meta_backend_thaw_updates (backend);
g_clear_pointer (&onscreen_native->retry_page_flips_source,
g_source_unref);
return G_SOURCE_REMOVE;
@@ -1743,6 +1746,8 @@ schedule_retry_page_flip (MetaOnscreenNative *onscreen_native,
if (!onscreen_native->retry_page_flips_source)
{
+ MetaBackend *backend =
+ backend_from_renderer_native (onscreen_native->renderer_native);
GSource *source;
source = g_source_new (&retry_page_flips_source_funcs, sizeof (GSource));
@@ -1751,6 +1756,7 @@ schedule_retry_page_flip (MetaOnscreenNative *onscreen_native,
g_source_attach (source, NULL);
onscreen_native->retry_page_flips_source = source;
+ meta_backend_freeze_updates (backend);
}
else
{
@@ -3048,8 +3054,15 @@ meta_renderer_native_release_onscreen (CoglOnscreen *onscreen)
g_list_free_full (onscreen_native->pending_page_flip_retries,
(GDestroyNotify) retry_page_flip_data_free);
- g_clear_pointer (&onscreen_native->retry_page_flips_source,
- g_source_destroy);
+ if (onscreen_native->retry_page_flips_source)
+ {
+ MetaBackend *backend =
+ backend_from_renderer_native (onscreen_native->renderer_native);
+
+ meta_backend_thaw_updates (backend);
+ g_clear_pointer (&onscreen_native->retry_page_flips_source,
+ g_source_destroy);
+ }
if (onscreen_egl->egl_surface != EGL_NO_SURFACE)
{