---
 clients/clickdot.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/clients/clickdot.c b/clients/clickdot.c
index 7358656..b04db6b 100644
--- a/clients/clickdot.c
+++ b/clients/clickdot.c
@@ -52,7 +52,7 @@ struct clickdot {
                int32_t old_x, old_y;
        } line;
 
-       int reset;
+       int reset, clicked;
 };
 
 static void
@@ -153,7 +153,15 @@ redraw_handler(struct widget *widget, void *data)
        cairo_set_source_rgba(cr, 0, 0, 0, 0.8);
        cairo_fill(cr);
 
-       draw_line(clickdot, cr, &allocation);
+       if (clickdot->clicked)
+               draw_line(clickdot, cr, &allocation);
+       else if (clickdot->buffer) {
+               cairo_surface_destroy(clickdot->buffer);
+               clickdot->buffer =
+                       cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
+                                                  allocation.width,
+                                                  allocation.height);
+       }
 
        window_get_allocation(clickdot->window, &window);
        clickdot->dot.x = window.width * clickdot->dot.rw;
@@ -215,6 +223,10 @@ button_handler(struct widget *widget,
                input_get_position(input, &clickdot->dot.x, &clickdot->dot.y);
                clickdot->dot.rw = (float) clickdot->dot.x / allocation.width;
                clickdot->dot.rh = (float) clickdot->dot.y / allocation.height;
+               clickdot->clicked = 1;
+       } else {
+               clickdot->reset = 1;
+               clickdot->clicked = 0;
        }
 
        widget_schedule_redraw(widget);
-- 
1.7.11.7

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to