testdisplay: Map the fb inside paint_color_key()
authorDamien Lespiau <damien.lespiau@intel.com>
Wed, 4 Sep 2013 11:12:37 +0000 (12:12 +0100)
committerDamien Lespiau <damien.lespiau@intel.com>
Mon, 30 Sep 2013 17:04:21 +0000 (18:04 +0100)
So the code for this is self-contained. This goes along the way of
reducing the number of global variables in testdisplay.

Take the opportunity to unmap the fb after use as well.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
tests/testdisplay.c

index c3a0d04..3d696a0 100644 (file)
@@ -82,7 +82,6 @@ unsigned int plane_crtc_id;
 unsigned int plane_id;
 int plane_width, plane_height;
 static const uint32_t SPRITE_COLOR_KEY = 0x00aaaaaa;
-uint32_t *fb_ptr;
 
 /*
  * Mode setting with the kernel interfaces is a bit of a chore.
@@ -213,6 +212,11 @@ static void
 paint_color_key(struct kmstest_fb *fb_info)
 {
        int i, j;
+       uint32_t *fb_ptr;
+
+       fb_ptr = gem_mmap(drm_fd, fb_info->gem_handle,
+                         fb_info->size, PROT_READ | PROT_WRITE);
+       igt_assert(fb_ptr);
 
        for (i = crtc_y; i < crtc_y + crtc_h; i++)
                for (j = crtc_x; j < crtc_x + crtc_w; j++) {
@@ -221,6 +225,8 @@ paint_color_key(struct kmstest_fb *fb_info)
                        offset = (i * fb_info->stride / 4) + j;
                        fb_ptr[offset] = SPRITE_COLOR_KEY;
                }
+
+       munmap(fb_ptr, fb_info->size);
 }
 
 static void paint_image(cairo_t *cr, const char *file)
@@ -358,10 +364,6 @@ set_mode(struct connector *c)
                fb_id = kmstest_create_fb(drm_fd, width, height, bpp, depth,
                                          enable_tiling, &fb_info);
                paint_output_info(c, &fb_info);
-
-               fb_ptr = gem_mmap(drm_fd, fb_info.gem_handle,
-                                 fb_info.size, PROT_READ | PROT_WRITE);
-               igt_assert(fb_ptr);
                paint_color_key(&fb_info);
 
                gem_close(drm_fd, fb_info.gem_handle);