summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-11-02 15:46:45 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-11-02 16:12:14 +1000
commitb270b0be46c6577824325cdf6a35e8ea01129c4f (patch)
treed0fd93b3ec61fa03d48cb5df29657b87cf81db6f
parent7bd59b13c193b538dc99ffa8dad05c7ffad2d217 (diff)
Hook up a basic cairo surface to the pixmap.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--multitouch.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/multitouch.c b/multitouch.c
index 981b81d..ec95eac 100644
--- a/multitouch.c
+++ b/multitouch.c
@@ -9,6 +9,9 @@
#include <signal.h>
#include <poll.h>
+#include <cairo.h>
+#include <cairo-xlib.h>
+
#include <X11/Xlib.h>
#include <X11/extensions/XInput.h>
#include <X11/extensions/XInput2.h>
@@ -25,6 +28,8 @@ struct multitouch {
int width;
int height;
+
+ cairo_t *cr;
};
static int error(const char *fmt, ...)
@@ -147,6 +152,29 @@ static void print_event(struct multitouch *mt, XIDeviceEvent* event)
msg("\ttouchid: %d\n", event->detail);
}
+static int init_cairo(struct multitouch *mt)
+{
+ cairo_surface_t *surface;
+ cairo_t *cr;
+
+ surface = cairo_xlib_surface_create_for_bitmap(mt->dpy, mt->pixmap,
+ mt->screen, mt->width, mt->height);
+ if (!surface)
+ return error("Failed to create cairo surface\n");
+
+ cr = cairo_create(surface);
+ if (!cr)
+ return error("Failed to create cairo context\n");
+
+ cairo_set_line_width(cr, 1);
+ cairo_set_source_rgb(cr, 0, 0, 0);
+ cairo_rectangle(cr, 0, 0, 1, 1);
+ cairo_fill(cr);
+
+ mt->cr = cr;
+
+ return EXIT_SUCCESS;
+}
static int main_loop(struct multitouch *mt)
{
@@ -189,6 +217,10 @@ int main(int argc, char **argv)
if (rc != EXIT_SUCCESS)
return rc;
+ rc = init_cairo(&mt);
+ if (rc != EXIT_SUCCESS)
+ return rc;
+
signal(SIGINT, sighandler);
main_loop(&mt);