[PATCH weston 1/2] compositor: Adds functions for backends to call around weston_surface_draw.
Zoxc
zoxc32 at gmail.com
Fri Sep 7 15:42:31 PDT 2012
---
src/compositor-android.c | 4 ++++
src/compositor-drm.c | 4 ++++
src/compositor-wayland.c | 4 ++++
src/compositor-x11.c | 4 ++++
src/compositor.c | 10 ++++++++++
src/compositor.h | 4 ++++
6 files changed, 30 insertions(+)
diff --git a/src/compositor-android.c b/src/compositor-android.c
index bfa2e95..ec05771 100644
--- a/src/compositor-android.c
+++ b/src/compositor-android.c
@@ -159,9 +159,13 @@ android_output_repaint(struct weston_output *base, pixman_region32_t *damage,
if (android_output_make_current(output) < 0)
return;
+ weston_output_repaint_start(&output->base, damage);
+
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
weston_surface_draw(surface, &output->base, damage);
+ weston_output_repaint_finish(&output->base, damage);
+
if (!flip)
return;
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index c6634a0..b01fcae 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -336,10 +336,14 @@ drm_output_render(struct drm_output *output, pixman_region32_t *damage, int flip
return;
}
+ weston_output_repaint_start(&output->base, damage);
+
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
if (surface->plane == &compositor->base.primary_plane)
weston_surface_draw(surface, &output->base, damage);
+ weston_output_repaint_finish(&output->base, damage);
+
if (!flip)
return;
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index 1f45def..705a4e6 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -345,9 +345,13 @@ wayland_output_repaint(struct weston_output *output_base,
return;
}
+ weston_output_repaint_start(output_base, damage);
+
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
weston_surface_draw(surface, &output->base, damage);
+ weston_output_repaint_finish(output_base, damage);
+
if (!flip)
return;
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index d5fa0c6..f95a827 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -336,9 +336,13 @@ x11_output_repaint(struct weston_output *output_base,
return;
}
+ weston_output_repaint_start(output_base, damage);
+
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
weston_surface_draw(surface, &output->base, damage);
+ weston_output_repaint_finish(output_base, damage);
+
if (!flip)
return;
diff --git a/src/compositor.c b/src/compositor.c
index 2b963f5..7013b4a 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1327,6 +1327,16 @@ weston_shader_uniforms(struct weston_shader *shader,
}
WL_EXPORT void
+weston_output_repaint_start(struct weston_output *output, pixman_region32_t *damage)
+{
+}
+
+WL_EXPORT void
+weston_output_repaint_finish(struct weston_output *output, pixman_region32_t *damage)
+{
+}
+
+WL_EXPORT void
weston_surface_draw(struct weston_surface *es, struct weston_output *output,
pixman_region32_t *damage) /* in global coordinates */
{
diff --git a/src/compositor.h b/src/compositor.h
index 38c2657..27505f4 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -548,6 +548,10 @@ weston_output_schedule_repaint(struct weston_output *output);
void
weston_output_damage(struct weston_output *output);
void
+weston_output_repaint_start(struct weston_output *output, pixman_region32_t *damage);
+void
+weston_output_repaint_finish(struct weston_output *output, pixman_region32_t *damage);
+void
weston_compositor_schedule_repaint(struct weston_compositor *compositor);
void
weston_compositor_fade(struct weston_compositor *compositor, float tint);
--
1.7.12
More information about the wayland-devel
mailing list