That's a good clean up.

Cheers,
Ander

On 03/07/2014 10:27 AM, Xiong Zhang wrote:
Signed-off-by: Xiong Zhang <xiong.y.zh...@intel.com>
---
  src/compositor-drm.c | 45 +++++++++++++++++++++++----------------------
  1 file changed, 23 insertions(+), 22 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 78292a6..dd1c251 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -593,6 +593,26 @@ drm_output_set_gamma(struct weston_output *output_base,
  }

  static int
+drm_output_set_mode(struct drm_output *output, uint32_t fb_id)
+{
+       struct drm_compositor *compositor =
+               (struct drm_compositor *)output->base.compositor;
+       struct drm_mode *mode;
+       int ret = 0;
+
+       mode = container_of(output->base.current_mode,
+                           struct drm_mode, base);
+       ret = drmModeSetCrtc(compositor->drm.fd, output->crtc_id,
+                            fb_id, 0, 0,
+                            &output->connector_id, 1,
+                            &mode->mode_info);
+       if (ret)
+               weston_log("set mode failed: %m\n");
+
+       return ret;
+}
+
+static int
  drm_output_repaint(struct weston_output *output_base,
                   pixman_region32_t *damage)
  {
@@ -600,7 +620,6 @@ drm_output_repaint(struct weston_output *output_base,
        struct drm_compositor *compositor =
                (struct drm_compositor *) output->base.compositor;
        struct drm_sprite *s;
-       struct drm_mode *mode;
        int ret = 0;

        if (output->destroy_pending)
@@ -611,17 +630,11 @@ drm_output_repaint(struct weston_output *output_base,
        if (!output->next)
                return -1;

-       mode = container_of(output->base.current_mode, struct drm_mode, base);
        if (!output->current ||
            output->current->stride != output->next->stride) {
-               ret = drmModeSetCrtc(compositor->drm.fd, output->crtc_id,
-                                    output->next->fb_id, 0, 0,
-                                    &output->connector_id, 1,
-                                    &mode->mode_info);
-               if (ret) {
-                       weston_log("set mode failed: %m\n");
+               if (drm_output_set_mode(output, output->next->fb_id))
                        goto err_pageflip;
-               }
+
                output_base->set_dpms(output_base, WESTON_DPMS_ON);
        }

@@ -2355,8 +2368,6 @@ static void
  drm_compositor_set_modes(struct drm_compositor *compositor)
  {
        struct drm_output *output;
-       struct drm_mode *drm_mode;
-       int ret;

        wl_list_for_each(output, &compositor->base.output_list, base.link) {
                if (!output->current) {
@@ -2369,17 +2380,7 @@ drm_compositor_set_modes(struct drm_compositor 
*compositor)
                        continue;
                }

-               drm_mode = (struct drm_mode *) output->base.current_mode;
-               ret = drmModeSetCrtc(compositor->drm.fd, output->crtc_id,
-                                    output->current->fb_id, 0, 0,
-                                    &output->connector_id, 1,
-                                    &drm_mode->mode_info);
-               if (ret < 0) {
-                       weston_log(
-                               "failed to set mode %dx%d for output at %d,%d: 
%m\n",
-                               drm_mode->base.width, drm_mode->base.height,
-                               output->base.x, output->base.y);
-               }
+               drm_output_set_mode(output, output->current->fb_id);
        }
  }



_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to