[PATCH weston 1/3] eventdemo: do not print pointer frames alone

Pekka Paalanen ppaalanen at gmail.com
Tue May 10 14:11:39 UTC 2016


From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>

Print pointer frames only if any pointer related events are printed
first.

This avoids flooding the output with "pointer frame" just because of
motion.

Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
---
 clients/eventdemo.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/clients/eventdemo.c b/clients/eventdemo.c
index e323aa5..f1558d2 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)
-- 
2.7.3



More information about the wayland-devel mailing list