35e82631b6
The new application API window_add_subsurface() will create a plain widget that is on a new sub-surface. The sub-surface position is taken from the surface's root widget allocation. This way widget allocations are always in the main surface (i.e. window) coordinates. However, Cairo drawing coordinates will now be different to widget coordinates for sub-surfaces. Cairo coordinates are fixed by applying a translation in widget_cairo_create(), so that widget drawing code can simply use the widget allocation as before. Sub-surfaces are hooked up into resize, window flush, redraw, and find_widget. Window maintains a list of sub-surfaces in top-first order. Add a client settable default commit mode, and toggle the mode when resizing to guarantee in-sync updates of a window and its sub-surfaces. Changes in v3: - replaced set_commit_mode with set_sync and set_desync Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>