pixman-renderer: Don't unreference NULL hw_buffer image
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Fri, 25 Jan 2013 13:13:06 +0000 (15:13 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Sun, 27 Jan 2013 19:33:08 +0000 (14:33 -0500)
If the buffer for an output was never set, or was reset to NULL at some
point, destroying the renderer output private would cause a crash.

src/compositor.c
src/pixman-renderer.c

index cd11f6b..a2e95c9 100644 (file)
@@ -3207,6 +3207,7 @@ usage(int error_code)
                "  --connector=ID\tBring up only this connector\n"
                "  --seat=SEAT\t\tThe seat that weston should run on\n"
                "  --tty=TTY\t\tThe tty to use\n"
+               "  --use-pixman\t\tUse the pixman (CPU) renderer\n"
                "  --current-mode\tPrefer current KMS mode over EDID preferred mode\n\n");
 
        fprintf(stderr,
index 77ae99e..8d95197 100644 (file)
@@ -507,7 +507,9 @@ pixman_renderer_output_destroy(struct weston_output *output)
        struct pixman_output_state *po = get_output_state(output);
 
        pixman_image_unref(po->shadow_image);
-       pixman_image_unref(po->hw_buffer);
+
+       if (po->hw_buffer)
+               pixman_image_unref(po->hw_buffer);
 
        po->shadow_image = NULL;
        po->hw_buffer = NULL;