simple-touch: respond to ping protocol
authorPekka Paalanen <ppaalanen@gmail.com>
Tue, 31 Jul 2012 10:21:10 +0000 (13:21 +0300)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 1 Aug 2012 02:27:23 +0000 (22:27 -0400)
Without this, it won't get any input anymore.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
clients/simple-touch.c

index 517a956..b438ffa 100644 (file)
@@ -200,6 +200,30 @@ static const struct wl_seat_listener seat_listener = {
 };
 
 static void
+handle_ping(void *data, struct wl_shell_surface *shell_surface,
+           uint32_t serial)
+{
+       wl_shell_surface_pong(shell_surface, serial);
+}
+
+static void
+handle_configure(void *data, struct wl_shell_surface *shell_surface,
+                uint32_t edges, int32_t width, int32_t height)
+{
+}
+
+static void
+handle_popup_done(void *data, struct wl_shell_surface *shell_surface)
+{
+}
+
+static const struct wl_shell_surface_listener shell_surface_listener = {
+       handle_ping,
+       handle_configure,
+       handle_popup_done
+};
+
+static void
 handle_global(struct wl_display *display, uint32_t id,
              const char *interface, uint32_t version, void *data)
 {
@@ -258,7 +282,12 @@ touch_create(int width, int height)
                                                          touch->surface);
        create_shm_buffer(touch);
 
-       wl_shell_surface_set_toplevel(touch->shell_surface);
+       if (touch->shell_surface) {
+               wl_shell_surface_add_listener(touch->shell_surface,
+                                             &shell_surface_listener, touch);
+               wl_shell_surface_set_toplevel(touch->shell_surface);
+       }
+
        wl_surface_set_user_data(touch->surface, touch);
 
        memset(touch->data, 64, width * height * 4);