Merge remote-tracking branch 'bnf/surface-frame-event'
authorKristian Høgsberg <krh@bitplanet.net>
Mon, 11 Apr 2011 20:47:50 +0000 (16:47 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 11 Apr 2011 20:47:50 +0000 (16:47 -0400)
Conflicts:
compositor/compositor.c

1  2 
clients/gears.c
clients/resizor.c
clients/simple-client.c
clients/smoke.c
clients/window.c
clients/window.h
compositor/compositor-drm.c
compositor/compositor-x11.c
compositor/compositor.c
compositor/compositor.h

diff --cc clients/gears.c
Simple merge
Simple merge
Simple merge
diff --cc clients/smoke.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -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->present(output);
 -
+               output->finished = 0;
+               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
@@@ -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