server: Hand code all wl_display client stubs
authorKristian Høgsberg <krh@bitplanet.net>
Fri, 19 Aug 2011 17:40:28 +0000 (13:40 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Sat, 27 Aug 2011 16:06:11 +0000 (12:06 -0400)
src/scanner.c
src/wayland-client.c
src/wayland-client.h

index 7e4bac6..b114fbf 100644 (file)
@@ -343,20 +343,22 @@ emit_stubs(struct wl_list *message_list, struct interface *interface)
        struct arg *a, *ret;
        int has_destructor, has_destroy;
 
-       /* We provide a hand written constructor for the display object */
-       if (strcmp(interface->name, "wl_display") != 0)
-               printf("static inline struct %s *\n"
-                      "%s_create(struct wl_display *display, uint32_t id, uint32_t version)\n"
-                      "{\n"
-                      "\twl_display_bind(display, id, \"%s\", version);\n\n"
-                      "\treturn (struct %s *)\n"
-                      "\t\twl_proxy_create_for_id(display, &%s_interface, id);\n"
-                      "}\n\n",
-                      interface->name,
-                      interface->name,
-                      interface->name,
-                      interface->name,
-                      interface->name);
+       /* We provide a hand written functions for the display object */
+       if (strcmp(interface->name, "wl_display") == 0)
+               return;
+
+       printf("static inline struct %s *\n"
+              "%s_create(struct wl_display *display, uint32_t id, uint32_t version)\n"
+              "{\n"
+              "\twl_display_bind(display, id, \"%s\", version);\n\n"
+              "\treturn (struct %s *)\n"
+              "\t\twl_proxy_create_for_id(display, &%s_interface, id);\n"
+              "}\n\n",
+              interface->name,
+              interface->name,
+              interface->name,
+              interface->name,
+              interface->name);
 
        printf("static inline void\n"
               "%s_set_user_data(struct %s *%s, void *user_data)\n"
@@ -390,8 +392,7 @@ emit_stubs(struct wl_list *message_list, struct interface *interface)
                exit(EXIT_FAILURE);
        }
 
-       /* And we have a hand-written display destructor */
-       if (!has_destructor && strcmp(interface->name, "wl_display") != 0)
+       if (!has_destructor)
                printf("static inline void\n"
                       "%s_destroy(struct %s *%s)\n"
                       "{\n"
index a7b118b..ec62885 100644 (file)
@@ -525,6 +525,29 @@ wl_display_allocate_id(struct wl_display *display)
 }
 
 WL_EXPORT void
+wl_display_bind(struct wl_display *display,
+               uint32_t id, const char *interface, uint32_t version)
+{
+       wl_proxy_marshal(&display->proxy,
+                        WL_DISPLAY_BIND, id, interface, version);
+}
+
+WL_EXPORT struct wl_callback *
+wl_display_sync(struct wl_display *display)
+{
+       struct wl_proxy *proxy;
+
+       proxy = wl_proxy_create(&display->proxy, &wl_callback_interface);
+
+       if (!proxy)
+               return NULL;
+
+       wl_proxy_marshal(&display->proxy, WL_DISPLAY_SYNC, proxy);
+
+       return (struct wl_callback *) proxy;
+}
+
+WL_EXPORT void
 wl_proxy_set_user_data(struct wl_proxy *proxy, void *user_data)
 {
        proxy->user_data = user_data;
index b00b0ae..dc5aa5f 100644 (file)
@@ -44,6 +44,10 @@ int wl_proxy_add_listener(struct wl_proxy *proxy,
 void wl_proxy_set_user_data(struct wl_proxy *proxy, void *user_data);
 void *wl_proxy_get_user_data(struct wl_proxy *proxy);
 
+void wl_display_bind(struct wl_display *display,
+                    uint32_t id, const char *interface, uint32_t version);
+struct wl_callback *wl_display_sync(struct wl_display *display);
+
 #include "wayland-client-protocol.h"
 
 #define WL_DISPLAY_READABLE 0x01