[PATCH weston 1/3] clients: Drop deadlock circumvention hack now that we don't need it
Jonas Ådahl
jadahl at gmail.com
Mon Jan 26 02:19:05 PST 2015
mesa supports EGLSwapInterval 0 now, so lets remove this hack. As a
bonus we don't conflict with the XDG shell protocol that doesn't allow
committing a null-buffer, which was a side effect of this hack.
Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
---
clients/window.c | 32 --------------------------------
1 file changed, 32 deletions(-)
diff --git a/clients/window.c b/clients/window.c
index c5082ba..b45b499 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -3802,36 +3802,6 @@ surface_resize(struct surface *surface)
}
static void
-hack_prevent_EGL_sub_surface_deadlock(struct window *window)
-{
- /*
- * This hack should be removed, when EGL respects
- * eglSwapInterval(0).
- *
- * If this window has sub-surfaces, especially a free-running
- * EGL-widget, we need to post the parent surface once with
- * all the old state to guarantee, that the EGL-widget will
- * receive its frame callback soon. Otherwise, a forced call
- * to eglSwapBuffers may end up blocking, waiting for a frame
- * event that will never come, because we will commit the parent
- * surface with all new state only after eglSwapBuffers returns.
- *
- * This assumes, that:
- * 1. When the EGL widget's resize hook is called, it pauses.
- * 2. When the EGL widget's redraw hook is called, it forces a
- * repaint and a call to eglSwapBuffers(), and maybe resumes.
- * In a single threaded application condition 1 is a no-op.
- *
- * XXX: This should actually be after the surface_resize() calls,
- * but cannot, because then it would commit the incomplete state
- * accumulated from the widget resize hooks.
- */
- if (window->subsurface_list.next != &window->main_surface->link ||
- window->subsurface_list.prev != &window->main_surface->link)
- wl_surface_commit(window->main_surface->surface);
-}
-
-static void
window_do_resize(struct window *window)
{
struct surface *surface;
@@ -3873,8 +3843,6 @@ idle_resize(struct window *window)
window->pending_allocation.width,
window->pending_allocation.height);
- hack_prevent_EGL_sub_surface_deadlock(window);
-
window_do_resize(window);
}
--
2.1.0
More information about the wayland-devel
mailing list