From: Kristian Høgsberg Date: Mon, 11 Apr 2011 20:47:50 +0000 (-0400) Subject: Merge remote-tracking branch 'bnf/surface-frame-event' X-Git-Tag: 0.85.0~555 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=11e2828bdcf3ec4d59482a35fb510c51cc26acf6;p=platform%2Fupstream%2Fweston.git Merge remote-tracking branch 'bnf/surface-frame-event' Conflicts: compositor/compositor.c --- 11e2828bdcf3ec4d59482a35fb510c51cc26acf6 diff --cc compositor/compositor.c index f2c0a05,90fd51c..dc8e6f6 --- a/compositor/compositor.c +++ b/compositor/compositor.c @@@ -569,17 -560,28 +580,27 @@@ repaint(void *data { struct wlsc_compositor *ec = data; struct wlsc_output *output; + int repainted_all_outputs = 1; - if (!ec->repaint_needed) { - ec->repaint_on_timeout = 0; - return; - } + wl_list_for_each(output, &ec->output_list, link) { + if (!output->repaint_needed) + continue; + + if (!output->finished) { + repainted_all_outputs = 0; + continue; + } - wl_list_for_each(output, &ec->output_list, link) wlsc_output_repaint(output); + output->finished = 0; - output->present(output); - + output->repaint_needed = 0; ++ output->present(output); + } - ec->repaint_needed = 0; - ec->present(ec); + if (repainted_all_outputs) + ec->repaint_on_timeout = 0; + else + wl_event_source_timer_update(ec->timer_source, 1); } void diff --cc compositor/compositor.h index 865e527,6a392fc..32632f5 --- a/compositor/compositor.h +++ b/compositor/compositor.h @@@ -185,19 -186,10 +187,22 @@@ wlsc_output_finish_frame(struct wlsc_ou void wlsc_compositor_schedule_repaint(struct wlsc_compositor *compositor); +struct wlsc_binding; +typedef void (*wlsc_binding_handler_t)(struct wlsc_input_device *device, + uint32_t time, uint32_t key, + uint32_t state, void *data); +struct wlsc_binding * +wlsc_compositor_add_binding(struct wlsc_compositor *compositor, + uint32_t key, uint32_t modifier, + wlsc_binding_handler_t binding, void *data); +void +wlsc_binding_destroy(struct wlsc_binding *binding); + + void + wlsc_surface_assign_output(struct wlsc_surface *surface); + + void wlsc_surface_damage(struct wlsc_surface *surface); void