summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clients/eventdemo.c26
1 files changed, 26 insertions, 0 deletions
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 <stdio.h>
#include <stdlib.h>
+#include <stdbool.h>
#include <cairo.h>
@@ -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)