window.c: Deal with visual changes
diff --git a/clients/simple-client.c b/clients/simple-client.c
index ee66e92..f2252ea 100644
--- a/clients/simple-client.c
+++ b/clients/simple-client.c
@@ -35,6 +35,7 @@
 
 struct display {
 	struct wl_display *display;
+	struct wl_visual *premultiplied_argb_visual;
 	struct wl_compositor *compositor;
 	struct {
 		EGLDisplay dpy;
@@ -195,7 +196,7 @@
 	EGLBoolean ret;
 
 	window->surface = wl_compositor_create_surface(display->compositor);
-	visual = wl_display_get_premultiplied_argb_visual(display->display);
+	visual = display->premultiplied_argb_visual;
 	window->native =
 		wl_egl_window_create(window->surface,
 				     window->geometry.width,
@@ -272,13 +273,35 @@
 }
 
 static void
+compositor_handle_visual(void *data,
+			 struct wl_compositor *compositor,
+			 uint32_t id, uint32_t token)
+{
+	struct display *d = data;
+
+	switch (token) {
+	case WL_COMPOSITOR_VISUAL_PREMULTIPLIED_ARGB32:
+		d->premultiplied_argb_visual =
+			wl_visual_create(d->display, id, 1);
+		break;
+	}
+}
+
+static const struct wl_compositor_listener compositor_listener = {
+	compositor_handle_visual,
+};
+
+static void
 display_handle_global(struct wl_display *display, uint32_t id,
 		      const char *interface, uint32_t version, void *data)
 {
 	struct display *d = data;
 
-	if (strcmp(interface, "wl_compositor") == 0)
+	if (strcmp(interface, "wl_compositor") == 0) {
 		d->compositor = wl_compositor_create(display, id, 1);
+		wl_compositor_add_listener(d->compositor,
+					   &compositor_listener, d);
+	}
 }
 
 static int