commit 2dbf406
Michael Forney
·
2013-06-14 11:39:46 +0000 UTC
parent 1dd10d5
Handle NULL buffers
2 files changed,
+21,
-4
+6,
-0
1@@ -61,6 +61,9 @@ static void repaint_surface_for_output(struct swc_renderer * renderer,
2 {
3 struct swc_buffer * back_buffer = swc_output_get_back_buffer(output);
4
5+ if (!surface->state.buffer)
6+ return;
7+
8 if (wl_buffer_is_shm(surface->state.buffer))
9 {
10 pixman_image_t * buffer_image;
11@@ -175,6 +178,9 @@ void swc_renderer_attach(struct swc_renderer * renderer,
12 {
13 struct gbm_bo * bo;
14
15+ if (!buffer)
16+ return;
17+
18 /* SHM buffer */
19 if (wl_buffer_is_shm(buffer))
20 {
+15,
-4
1@@ -31,16 +31,27 @@ static void attach(struct wl_client * client, struct wl_resource * resource,
2 struct wl_resource * buffer_resource, int32_t x, int32_t y)
3 {
4 struct swc_surface * surface = resource->data;
5- struct wl_buffer * buffer = buffer_resource->data;
6
7 printf("surface_attach\n");
8
9- surface->pending.state.buffer = buffer;
10 surface->pending.x = x;
11 surface->pending.y = y;
12
13- surface->geometry.width = buffer->width;
14- surface->geometry.height = buffer->height;
15+ if (buffer_resource)
16+ {
17+ struct wl_buffer * buffer = buffer_resource->data;
18+
19+ surface->pending.state.buffer = buffer;
20+ surface->geometry.width = buffer->width;
21+ surface->geometry.height = buffer->height;
22+ }
23+ else
24+ {
25+ surface->pending.state.buffer = NULL;
26+
27+ surface->geometry.width = 0;
28+ surface->geometry.height = 0;
29+ }
30 }
31
32 static void damage(struct wl_client * client, struct wl_resource * resource,