summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-11-07 10:48:17 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-11-07 10:48:17 +1000
commit3077703a5762cd8d47702c5c1f1ad25efc471c76 (patch)
treeb4bcfbe2bce1551b3e132a1cf0bc5f33e536a28d
parent60021af70471857ca7418a116b838120019ef65d (diff)
Add a few cairo_save/restore to avoid colour mixups
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--multitouch.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/multitouch.c b/multitouch.c
index 1e44c86..583fc7e 100644
--- a/multitouch.c
+++ b/multitouch.c
@@ -246,9 +246,11 @@ static void paint_touch_begin(struct multitouch *mt, XIDeviceEvent *event)
t->y = event->event_y;
t->state = TSTATE_BEGIN;
+ cairo_save(mt->cr);
cairo_set_source_rgb(mt->cr, 0, 0, 0);
cairo_arc(mt->cr, t->x, t->y, radius, 0, 2 * M_PI);
cairo_stroke(mt->cr);
+ cairo_restore(mt->cr);
expose(mt, t->x - radius, t->y - radius, t->x + radius, t->y + radius);
}
@@ -268,9 +270,12 @@ static void paint_touch_update(struct multitouch *mt, XIDeviceEvent *event)
{
struct touchpoint *t = find_touch(mt, event->detail);
+ cairo_save(mt->cr);
+ cairo_set_source_rgb(mt->cr, 0, 0, 0);
cairo_move_to(mt->cr, t->x, t->y);
cairo_line_to(mt->cr, event->event_x, event->event_y);
cairo_stroke(mt->cr);
+ cairo_restore(mt->cr);
expose(mt, t->x, t->y, event->event_x, event->event_y);
t->x = event->event_x;
@@ -287,8 +292,11 @@ static void paint_touch_end(struct multitouch *mt, XIDeviceEvent *event)
t->y = event->event_y;
t->state = TSTATE_END;
+ cairo_save(mt->cr);
+ cairo_set_source_rgb(mt->cr, 0, 0, 0);
cairo_rectangle(mt->cr, t->x - rsize/2, t->y - rsize/2, rsize, rsize);
cairo_stroke(mt->cr);
+ cairo_restore(mt->cr);
expose(mt, t->x - rsize/2, t->y - rsize/2, t->x + rsize/2, t->y + rsize/2);
}
@@ -361,6 +369,7 @@ static void paint_event(struct multitouch *mt, XIDeviceEvent *event)
}
}
+
static int init_cairo(struct multitouch *mt)
{
cairo_surface_t *surface;