Ignore surface.map_toplevel() if already mapped
diff --git a/compositor/compositor.c b/compositor/compositor.c
index 29a1f52..2ba484f 100644
--- a/compositor/compositor.c
+++ b/compositor/compositor.c
@@ -130,6 +130,7 @@
 
 	wl_list_init(&surface->surface.destroy_listener_list);
 	wl_list_init(&surface->link);
+	surface->mapped = 0;
 
 	glGenTextures(1, &surface->texture);
 	glBindTexture(GL_TEXTURE_2D, surface->texture);
@@ -440,12 +441,16 @@
 {
 	struct wlsc_surface *es = (struct wlsc_surface *) surface;
 
+	if (es->mapped)
+		return;
+
 	es->x = 10 + random() % 400;
 	es->y = 10 + random() % 400;
 
 	wlsc_surface_update_matrix(es);
 	wl_list_insert(es->compositor->surface_list.prev, &es->link);
 	wlsc_compositor_schedule_repaint(es->compositor);
+	es->mapped = 1;
 }
 
 static void