compositor: Clear cursor buffer in create_sprite_from_png()
diff --git a/compositor/compositor.c b/compositor/compositor.c
index faece3a..064735b 100644
--- a/compositor/compositor.c
+++ b/compositor/compositor.c
@@ -491,10 +491,9 @@
 create_sprite_from_png(struct wlsc_compositor *ec,
 		       const char *filename, uint32_t usage)
 {
-	uint32_t *pixels;
+	uint32_t *pixels, *pad;
 	struct wlsc_sprite *sprite;
 	int32_t width, height;
-	int32_t egl_img_width, egl_img_height;
 	uint32_t stride;
 
 	pixels = wlsc_load_image(filename, &width, &height, &stride);
@@ -512,14 +511,6 @@
 	sprite->height = height;
 	sprite->image = EGL_NO_IMAGE_KHR;
 
-	if (usage & SPRITE_USE_CURSOR && ec->create_cursor_image != NULL) {
-		egl_img_width = width;
-		egl_img_height = height;
-
-		sprite->image = ec->create_cursor_image(ec, &egl_img_width,
-							&egl_img_height);
-	}
-
 	glGenTextures(1, &sprite->texture);
 	glBindTexture(GL_TEXTURE_2D, sprite->texture);
 	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
@@ -527,13 +518,24 @@
 	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 
-	if (sprite->image != EGL_NO_IMAGE_KHR) {
+	if (usage & SPRITE_USE_CURSOR && ec->create_cursor_image != NULL) {
+		sprite->image = ec->create_cursor_image(ec, &sprite->width,
+							&sprite->height);
+
 		ec->image_target_texture_2d(GL_TEXTURE_2D, sprite->image);
+
+		if (sprite->width > width || sprite->height > height) {
+			pad = calloc(sprite->width * sprite->height,
+				     sizeof *pad);
+			glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,
+					sprite->width, sprite->height,
+					GL_BGRA_EXT, GL_UNSIGNED_BYTE, pad);
+			free(pad);
+		}
+
 		glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height,
 				GL_BGRA_EXT, GL_UNSIGNED_BYTE, pixels);
 
-		sprite->width = egl_img_width;
-		sprite->height = egl_img_height;
 	} else {
 		glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, width, height, 0,
 			     GL_BGRA_EXT, GL_UNSIGNED_BYTE, pixels);