diff --git a/clients/eventdemo.c b/clients/eventdemo.c index e323aa50..f1558d23 100644 --- a/clients/eventdemo.c +++ b/clients/eventdemo.c @@ -35,6 +35,7 @@ #include #include +#include #include @@ -93,6 +94,8 @@ struct eventdemo { struct display *display; int x, y, w, h; + + bool print_pointer_frame; }; /** @@ -223,11 +226,14 @@ static void button_handler(struct widget *widget, struct input *input, uint32_t time, uint32_t button, enum wl_pointer_button_state state, void *data) { + struct eventdemo *e = data; int32_t x, y; if (!log_button) return; + e->print_pointer_frame = true; + input_get_position(input, &x, &y); printf("button time: %d, button: %d, state: %s, x: %d, y: %d\n", time, button, @@ -249,9 +255,13 @@ static void axis_handler(struct widget *widget, struct input *input, uint32_t time, uint32_t axis, wl_fixed_t value, void *data) { + struct eventdemo *e = data; + if (!log_axis) return; + e->print_pointer_frame = true; + printf("axis time: %d, axis: %s, value: %f\n", time, axis == WL_POINTER_AXIS_VERTICAL_SCROLL ? "vertical" : @@ -262,7 +272,13 @@ axis_handler(struct widget *widget, struct input *input, uint32_t time, static void pointer_frame_handler(struct widget *widget, struct input *input, void *data) { + struct eventdemo *e = data; + + if (!e->print_pointer_frame) + return; + printf("pointer frame\n"); + e->print_pointer_frame = false; } static void @@ -270,6 +286,9 @@ axis_source_handler(struct widget *widget, struct input *input, uint32_t source, void *data) { const char *axis_source; + struct eventdemo *e = data; + + e->print_pointer_frame = true; switch (source) { case WL_POINTER_AXIS_SOURCE_WHEEL: @@ -294,6 +313,9 @@ axis_stop_handler(struct widget *widget, struct input *input, uint32_t time, uint32_t axis, void *data) { + struct eventdemo *e = data; + + e->print_pointer_frame = true; printf("axis stop time: %d, axis: %s\n", time, axis == WL_POINTER_AXIS_VERTICAL_SCROLL ? "vertical" : @@ -304,6 +326,9 @@ static void axis_discrete_handler(struct widget *widget, struct input *input, uint32_t axis, int32_t discrete, void *data) { + struct eventdemo *e = data; + + e->print_pointer_frame = true; printf("axis discrete axis: %d value: %d\n", axis, discrete); } @@ -328,6 +353,7 @@ motion_handler(struct widget *widget, struct input *input, uint32_t time, if (log_motion) { printf("motion time: %d, x: %f, y: %f\n", time, x, y); + e->print_pointer_frame = true; } if (x > e->x && x < e->x + e->w)