Skip to content
Snippets Groups Projects
Commit e80bdcda authored by Fabien Lahoudere's avatar Fabien Lahoudere Committed by Pekka Paalanen
Browse files

calibrator: Make mouse button optional


When calibrating touchscreen with weston-calibrator, you can use the mouse to
click on the cross which is recorded as a touch event. This event is used to
compute the final calibration of the touchscreen which results in invalid
touchscreen calibration and broken touchscreen behaviour.

In order to avoid to use the mouse in weston-calibrator, we disable mouse
operation by default and add a parameter "--enable-mouse" to enable it.

Signed-off-by: default avatarFabien Lahoudere <fabien.lahoudere@collabora.co.uk>
Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
parent c05ee89a
No related branches found
No related tags found
No related merge requests found
......@@ -24,12 +24,14 @@
#include "config.h"
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cairo.h>
#include <math.h>
#include <assert.h>
#include <getopt.h>
#include <linux/input.h>
#include <wayland-client.h>
......@@ -218,7 +220,7 @@ redraw_handler(struct widget *widget, void *data)
}
static struct calibrator *
calibrator_create(struct display *display)
calibrator_create(struct display *display, bool enable_button)
{
struct calibrator *calibrator;
......@@ -233,7 +235,8 @@ calibrator_create(struct display *display)
calibrator->current_test = ARRAY_LENGTH(test_ratios) - 1;
widget_set_button_handler(calibrator->widget, button_handler);
if (enable_button)
widget_set_button_handler(calibrator->widget, button_handler);
widget_set_touch_down_handler(calibrator->widget, touch_handler);
widget_set_redraw_handler(calibrator->widget, redraw_handler);
......@@ -250,13 +253,40 @@ calibrator_destroy(struct calibrator *calibrator)
free(calibrator);
}
static void
help(const char *name)
{
fprintf(stderr, "Usage: %s [args...]\n", name);
fprintf(stderr, " -m, --enable-mouse Enable mouse for testing the touchscreen\n");
fprintf(stderr, " -h, --help Display this help message\n");
}
int
main(int argc, char *argv[])
{
struct display *display;
struct calibrator *calibrator;
int c;
bool enable_mouse = 0;
struct option opts[] = {
{ "enable-mouse", no_argument, NULL, 'm' },
{ "help", no_argument, NULL, 'h' },
{ 0, 0, NULL, 0 }
};
while ((c = getopt_long(argc, argv, "mh", opts, NULL)) != -1) {
switch (c) {
case 'm':
enable_mouse = 1;
break;
case 'h':
help(argv[0]);
exit(EXIT_FAILURE);
default:
break;
}
}
display = display_create(&argc, argv);
if (display == NULL) {
......@@ -264,7 +294,7 @@ main(int argc, char *argv[])
return -1;
}
calibrator = calibrator_create(display);
calibrator = calibrator_create(display, enable_mouse);
if (!calibrator)
return -1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment