swc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.nihaljere.xyz/swc
Log | Files | Refs | README | LICENSE

commit 2dbf406939d18b7c4b30487b59e5adb2bb56cf4f
parent 1dd10d5eb86206c298ec127f5c4d1f29efbc66f4
Author: Michael Forney <mforney@mforney.org>
Date:   Fri, 14 Jun 2013 04:39:46 -0700

Handle NULL buffers

Diffstat:
Mrenderer.c | 6++++++
Msurface.c | 19+++++++++++++++----
2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/renderer.c b/renderer.c @@ -61,6 +61,9 @@ static void repaint_surface_for_output(struct swc_renderer * renderer, { struct swc_buffer * back_buffer = swc_output_get_back_buffer(output); + if (!surface->state.buffer) + return; + if (wl_buffer_is_shm(surface->state.buffer)) { pixman_image_t * buffer_image; @@ -175,6 +178,9 @@ void swc_renderer_attach(struct swc_renderer * renderer, { struct gbm_bo * bo; + if (!buffer) + return; + /* SHM buffer */ if (wl_buffer_is_shm(buffer)) { diff --git a/surface.c b/surface.c @@ -31,16 +31,27 @@ static void attach(struct wl_client * client, struct wl_resource * resource, struct wl_resource * buffer_resource, int32_t x, int32_t y) { struct swc_surface * surface = resource->data; - struct wl_buffer * buffer = buffer_resource->data; printf("surface_attach\n"); - surface->pending.state.buffer = buffer; surface->pending.x = x; surface->pending.y = y; - surface->geometry.width = buffer->width; - surface->geometry.height = buffer->height; + if (buffer_resource) + { + struct wl_buffer * buffer = buffer_resource->data; + + surface->pending.state.buffer = buffer; + surface->geometry.width = buffer->width; + surface->geometry.height = buffer->height; + } + else + { + surface->pending.state.buffer = NULL; + + surface->geometry.width = 0; + surface->geometry.height = 0; + } } static void damage(struct wl_client * client, struct wl_resource * resource,