tests: Add create_screenshot_surface()
authorBryce Harrington <bryce@osg.samsung.com>
Thu, 14 May 2015 19:50:00 +0000 (12:50 -0700)
committerBryce Harrington <bryce@osg.samsung.com>
Thu, 21 May 2015 22:06:26 +0000 (15:06 -0700)
Refactor out the screenshot shm buffer creation code.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
tests/internal-screenshot-test.c

index 5ae9b8bfbf6aa367b9e2b7262b30c93fda52dd45..451ccad7bb6e190586f093afb474951d294369fa 100644 (file)
@@ -61,6 +61,32 @@ write_surface_as_png(const struct surface* weston_surface, const char *fname) {
        return true;
 }
 
+/** create_screenshot_surface()
+ *
+ *  Allocates and initializes a weston test surface for use in
+ *  storing a screenshot of the client's output.  Establishes a
+ *  shm backed wl_buffer for retrieving screenshot image data
+ *  from the server, sized to match the client's output display.
+ *
+ *  @returns stack allocated surface image, which should be
+ *  free'd when done using it.
+ */
+static struct surface*
+create_screenshot_surface(struct client *client) {
+       struct surface* screenshot;
+       screenshot = xzalloc(sizeof *screenshot);
+       if (screenshot == NULL)
+               return NULL;
+       screenshot->wl_buffer = create_shm_buffer(client,                                                             
+                                                 client->output->width,                                              
+                                                 client->output->height,                                             
+                                                 &screenshot->data);                                                 
+       screenshot->height = client->output->height;                                                                  
+       screenshot->width = client->output->width;                                                                    
+
+       return screenshot;
+}
+
 TEST(internal_screenshot)
 {
        struct client *client;
@@ -81,17 +107,8 @@ TEST(internal_screenshot)
        printf("Client created\n");
 
        /* Create a surface to hold the screenshot */
-       screenshot = xzalloc(sizeof *screenshot);
+       screenshot = create_screenshot_surface(client);
        assert(screenshot);
-
-       /* Create and attach buffer to our surface */
-       screenshot->wl_buffer = create_shm_buffer(client,
-                                                 client->output->width,
-                                                 client->output->height,
-                                                 &screenshot->data);
-       screenshot->height = client->output->height;
-       screenshot->width = client->output->width;
-       assert(screenshot->wl_buffer);
        printf("Screenshot buffer created and attached to surface\n");
 
        /* Take a snapshot.  Result will be in screenshot->wl_buffer. */