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)