commit 3461ee5
Michael Forney
·
2013-12-07 04:42:27 +0000 UTC
parent 87e5e78
Style
1 files changed,
+24,
-24
+24,
-24
1@@ -132,38 +132,38 @@ static void perform_update(void * data)
2 {
3 struct swc_compositor * compositor = data;
4 struct swc_output * output;
5+ pixman_region32_t damage;
6 uint32_t updates = compositor->scheduled_updates
7- & ~compositor->pending_flips;
8+ & ~compositor->pending_flips;
9
10- if (updates)
11- {
12- pixman_region32_t damage;
13+ if (!updates)
14+ return;
15
16- printf("performing update\n");
17- calculate_damage(compositor);
18- pixman_region32_init(&damage);
19+ DEBUG("Performing update\n");
20
21- wl_list_for_each(output, &compositor->outputs, link)
22- {
23- if (compositor->scheduled_updates & SWC_OUTPUT_MASK(output))
24- {
25- update_output_damage(output, &compositor->damage);
26+ calculate_damage(compositor);
27+ pixman_region32_init(&damage);
28
29- if (!(compositor->pending_flips & SWC_OUTPUT_MASK(output)))
30- {
31- flush_output_damage(output, &damage);
32- repaint_output(compositor, output, &damage);
33- }
34- }
35- }
36+ wl_list_for_each(output, &compositor->outputs, link)
37+ {
38+ if (!(compositor->scheduled_updates & SWC_OUTPUT_MASK(output)))
39+ continue;
40+
41+ update_output_damage(output, &compositor->damage);
42+
43+ /* Don't repaint the output if it is waiting for a page flip. */
44+ if (compositor->pending_flips & SWC_OUTPUT_MASK(output))
45+ continue;
46
47- pixman_region32_fini(&damage);
48- /* XXX: Should assert that all damage was covered by some output */
49- pixman_region32_clear(&compositor->damage);
50- compositor->pending_flips |= updates;
51- compositor->scheduled_updates &= ~updates;
52+ flush_output_damage(output, &damage);
53+ repaint_output(compositor, output, &damage);
54 }
55
56+ pixman_region32_fini(&damage);
57+ /* XXX: Should assert that all damage was covered by some output */
58+ pixman_region32_clear(&compositor->damage);
59+ compositor->pending_flips |= updates;
60+ compositor->scheduled_updates &= ~updates;
61 }
62
63 static void handle_focus(struct swc_pointer * pointer)