Use scanner for screenshooter protocol
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 14 Sep 2010 19:53:32 +0000 (15:53 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 14 Sep 2010 19:54:02 +0000 (15:54 -0400)
compositor/Makefile
compositor/screenshooter.c
compositor/screenshooter.xml [new file with mode: 0644]

index a17d414..f31c9ee 100644 (file)
@@ -10,8 +10,17 @@ compositor :                                 \
        compositor-drm.o                        \
        compositor-x11.o                        \
        screenshooter.o                         \
+       screenshooter-protocol.o                \
        drm.o
 
+screenshooter.c : screenshooter-server-protocol.h
+
+screenshooter-protocol.c : screenshooter.xml
+       ../wayland/scanner code < $< > $@
+
+screenshooter-server-protocol.h : screenshooter.xml
+       ../wayland/scanner server-header < $< > $@
+
 clean :
        rm -f compositor *.o .*.deps
 
index aa7788e..c1716ec 100644 (file)
 #include <gdk-pixbuf/gdk-pixbuf.h>
 
 #include "compositor.h"
+#include "screenshooter-server-protocol.h"
 
-struct screenshooter {
+struct wl_screenshooter {
        struct wl_object base;
        struct wlsc_compositor *ec;
 };
 
-struct screenshooter_interface {
-       void (*shoot)(struct wl_client *client, struct screenshooter *shooter);
-};
-
 static void
-screenshooter_shoot(struct wl_client *client, struct screenshooter *shooter)
+screenshooter_shoot(struct wl_client *client, struct wl_screenshooter *shooter)
 {
        struct wlsc_compositor *ec = shooter->ec;
        struct wlsc_output *output;
@@ -70,30 +67,20 @@ screenshooter_shoot(struct wl_client *client, struct screenshooter *shooter)
        }
 }
 
-static const struct wl_message screenshooter_methods[] = {
-       { "shoot", "", NULL }
-};
-
-static const struct wl_interface screenshooter_interface = {
-       "screenshooter", 1,
-       ARRAY_LENGTH(screenshooter_methods),
-       screenshooter_methods,
-};
-
-struct screenshooter_interface screenshooter_implementation = {
+struct wl_screenshooter_interface screenshooter_implementation = {
        screenshooter_shoot
 };
 
 void
 screenshooter_create(struct wlsc_compositor *ec)
 {
-       struct screenshooter *shooter;
+       struct wl_screenshooter *shooter;
 
        shooter = malloc(sizeof *shooter);
        if (shooter == NULL)
                return;
 
-       shooter->base.interface = &screenshooter_interface;
+       shooter->base.interface = &wl_screenshooter_interface;
        shooter->base.implementation =
                (void(**)(void)) &screenshooter_implementation;
        shooter->ec = ec;
diff --git a/compositor/screenshooter.xml b/compositor/screenshooter.xml
new file mode 100644 (file)
index 0000000..f8d993d
--- /dev/null
@@ -0,0 +1,7 @@
+<protocol name="screenshooter">
+
+  <interface name="screenshooter" version="1">
+    <request name="shoot"/>
+  </interface>
+
+</protocol>