compositor: Export functions and add weston_suface::force_configure for fullscreen

This will facilitate the implementation of fullscreen.

Signed-off-by: Alex Wu <zhiwen.wu@linux.intel.com>
diff --git a/src/compositor.c b/src/compositor.c
index b12c583..6a1bebd 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -212,6 +212,7 @@
 
 	surface->buffer = NULL;
 	surface->output = NULL;
+	surface->force_configure = 0;
 
 	pixman_region32_init(&surface->damage);
 	pixman_region32_init(&surface->opaque);
@@ -231,7 +232,7 @@
 	return surface;
 }
 
-static void
+WL_EXPORT void
 weston_surface_set_color(struct weston_surface *surface,
 		 GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
 {
@@ -639,6 +640,15 @@
 	free(surface);
 }
 
+WL_EXPORT void
+weston_surface_destroy(struct weston_surface *surface)
+{
+	/* Not a valid way to destroy a client surface */
+	assert(surface->surface.resource.client == NULL);
+
+	destroy_surface(&surface->surface.resource);
+}
+
 static void
 weston_buffer_attach(struct wl_buffer *buffer, struct wl_surface *surface)
 {
@@ -1132,7 +1142,7 @@
 
 	if (es->output == NULL) {
 		shell->map(shell, es, buffer->width, buffer->height, sx, sy);
-	} else if (sx != 0 || sy != 0 ||
+	} else if (es->force_configure || sx != 0 || sy != 0 ||
 		   es->geometry.width != buffer->width ||
 		   es->geometry.height != buffer->height) {
 		GLfloat from_x, from_y;
@@ -1144,6 +1154,7 @@
 				 es->geometry.x + to_x - from_x,
 				 es->geometry.y + to_y - from_y,
 				 buffer->width, buffer->height);
+		es->force_configure = 0;
 	}
 
 	weston_buffer_attach(buffer, &es->surface);