e9297f8e7e
Mesa's eglSwapBuffers() waits for the frame event from the previous swapBuffers, before it returns. Apparently eglSwapInterval(), which should be able to disable the wait, is unimplemented for now. When a sub-surface contains an EGL widget, and the commit mode is synchronized, the frame events will not be delivered to EGL until the parent surface gets committed. Therefore rendering the EGL widget twice would lead to a deadlock. When the window is being resized, we need to force a repaint of the EGL widget, too, to make the whole window consistent. For that, we need to make sure the frame event from the previous eglSwapBuffers() actually arrives. This patch adds an extra wl_surface.commit(parent), when the window is being resized, which should guarantee, that the previous eglSwapBuffers gets its event. To properly handle an EGL widget in a sub-surface, running in its own thread, the EGL widget's automatic updates should be paused before sending the extra wl_surface.commit(parent). A natural place for the pause would be in the widget's resize hook. However, wl_surface.commit cannot be called right after resize hooks, because it would commit new, incomplete surface state. Therefore this patch is not enough for threaded toytoolkit applications. Luckily those do not exist yet. When eglSwapInterval() gets implemented, this patch should be reverted. Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com> |
||
---|---|---|
clients | ||
data | ||
man | ||
protocol | ||
shared | ||
src | ||
tests | ||
wcap | ||
.gitignore | ||
autogen.sh | ||
configure.ac | ||
COPYING | ||
Makefile.am | ||
notes.txt | ||
README | ||
weston.ini |
Weston Weston is the reference implementation of a Wayland compositor, and a useful compositor in its own right. Weston has various backends that lets it run on Linux kernel modesetting and evdev input as well as under X11. Weston ships with a few example clients, from simple clients that demonstrate certain aspects of the protocol to more complete clients and a simplistic toolkit. There is also a quite capable terminal emulator (weston-terminal) and an toy/example desktop shell. Finally, weston also provides integration with the Xorg server and can pull X clients into the Wayland desktop and act as a X window manager. Refer to http://wayland.freedesktop.org/building.html for buiding weston and its dependencies.