xcb_key_press_event_t *key_press, *key_release;
xcb_keymap_notify_event_t *keymap_notify;
xcb_focus_in_event_t *focus_in;
+ xcb_expose_event_t *expose;
xcb_atom_t atom;
uint32_t *k;
uint32_t i, set;
break;
case XCB_EXPOSE:
- /* FIXME: schedule output repaint */
- /* output = x11_compositor_find_output(c, expose->window); */
-
- weston_compositor_schedule_repaint(&c->base);
+ expose = (xcb_expose_event_t *) event;
+ output = x11_compositor_find_output(c, expose->window);
+ weston_output_schedule_repaint(&output->base);
break;
case XCB_ENTER_NOTIFY:
pixman_region32_union(&compositor->damage,
&compositor->damage, &output->region);
- weston_compositor_schedule_repaint(compositor);
+ weston_output_schedule_repaint(output);
}
static void
}
WL_EXPORT void
-weston_compositor_schedule_repaint(struct weston_compositor *compositor)
+weston_output_schedule_repaint(struct weston_output *output)
{
- struct weston_output *output;
+ struct weston_compositor *compositor = output->compositor;
struct wl_event_loop *loop;
if (compositor->state == WESTON_COMPOSITOR_SLEEPING)
return;
loop = wl_display_get_event_loop(compositor->wl_display);
- wl_list_for_each(output, &compositor->output_list, link) {
- output->repaint_needed = 1;
- if (output->repaint_scheduled)
- continue;
+ output->repaint_needed = 1;
+ if (output->repaint_scheduled)
+ return;
- wl_event_loop_add_idle(loop, idle_repaint, output);
- output->repaint_scheduled = 1;
- }
+ wl_event_loop_add_idle(loop, idle_repaint, output);
+ output->repaint_scheduled = 1;
if (compositor->input_loop_source) {
wl_event_source_remove(compositor->input_loop_source);
}
WL_EXPORT void
+weston_compositor_schedule_repaint(struct weston_compositor *compositor)
+{
+ struct weston_output *output;
+
+ wl_list_for_each(output, &compositor->output_list, link)
+ weston_output_schedule_repaint(output);
+}
+
+WL_EXPORT void
weston_compositor_fade(struct weston_compositor *compositor, float tint)
{
struct weston_output *output;