diff options
author | Michael Smith <msmith@cbnco.com> | 2010-11-15 14:33:52 -0500 |
---|---|---|
committer | Michael Smith <msmith@cbnco.com> | 2010-11-15 14:35:25 -0500 |
commit | d9997db446c3e3f135e6f14794cea118d0b160a4 (patch) | |
tree | 0d2ad8a14535c9cc98f4ace43a106cfde42b8f36 | |
parent | e384e345cdf165e128d035a4315ecff028c334c2 (diff) | |
download | openembedded-d9997db446c3e3f135e6f14794cea118d0b160a4.tar.gz |
xf86-input-elographics: allow limiting the touchable area of the display
Add ScreenWidth and ScreenHeight configuration options to override
the screen size.
see also: https://bugs.freedesktop.org/show_bug.cgi?id=31397
Signed-off-by: Michael Smith <msmith@cbnco.com>
-rw-r--r-- | recipes/xorg-driver/xf86-input-elographics-1.2.4/elo-adjustable-screen-size.patch | 83 | ||||
-rw-r--r-- | recipes/xorg-driver/xf86-input-elographics_1.2.4.bb | 4 |
2 files changed, 86 insertions, 1 deletions
diff --git a/recipes/xorg-driver/xf86-input-elographics-1.2.4/elo-adjustable-screen-size.patch b/recipes/xorg-driver/xf86-input-elographics-1.2.4/elo-adjustable-screen-size.patch new file mode 100644 index 0000000000..c8d56cbb17 --- /dev/null +++ b/recipes/xorg-driver/xf86-input-elographics-1.2.4/elo-adjustable-screen-size.patch @@ -0,0 +1,83 @@ +upstream: https://bugs.freedesktop.org/show_bug.cgi?id=31397 + +Allow limiting the "touchable" area of the display. + +The intel driver only allows for one X screen in dual-head mode, and +elographics normally uses the size of the entire screen to calculate +touch event locations. + +This patch adds ScreenWidth and ScreenHeight configuration options to +override the screen size, and ScreenXOffset and ScreenYOffset in case +the touchscreen covers part of the screen that doesn't begin at (0,0). + + +--- xf86-input-elographics-1.2.3/src/xf86Elo.c.orig 2008-10-13 19:52:10.000000000 -0400 ++++ xf86-input-elographics-1.2.3/src/xf86Elo.c 2009-07-14 01:50:21.000000000 -0400 +@@ -196,6 +196,8 @@ + int screen_no; /* Screen associated with the device */ + int screen_width; /* Width of the associated X screen */ + int screen_height; /* Height of the screen */ ++ int screen_x_offset; /* X offset within the screen */ ++ int screen_y_offset; /* Y offset within the screen */ + Bool inited; /* The controller has already been configured ? */ + Bool is_a_2310; /* Set if the smartset is a 2310. */ + int checksum; /* Current checksum of data in assembly buffer */ +@@ -355,9 +357,11 @@ + input_x = v0; + input_y = v1; + } +- *x = (priv->screen_width * (input_x - priv->min_x)) / width; ++ *x = (priv->screen_width * (input_x - priv->min_x)) / width ++ + priv->screen_x_offset; + *y = (priv->screen_height - +- (priv->screen_height * (input_y - priv->min_y)) / height); ++ (priv->screen_height * (input_y - priv->min_y)) / height) ++ + priv->screen_y_offset; + + /* + * MHALAS: Based on the description in xf86XInputSetScreen +@@ -791,8 +795,14 @@ + priv->screen_no < 0) { + priv->screen_no = 0; + } +- priv->screen_width = screenInfo.screens[priv->screen_no]->width; +- priv->screen_height = screenInfo.screens[priv->screen_no]->height; ++ if (priv->screen_width == -1) { ++ priv->screen_width = screenInfo.screens[priv->screen_no]->width; ++ } ++ if (priv->screen_height == -1) { ++ priv->screen_height = screenInfo.screens[priv->screen_no]->height; ++ } ++ xf86Msg(X_CONFIG, "Elographics screen dimensions: %dx%d\n", ++ priv->screen_width, priv->screen_height); + + /* + * Device reports button press for up to 1 button. +@@ -996,6 +1006,8 @@ + priv->screen_no = 0; + priv->screen_width = -1; + priv->screen_height = -1; ++ priv->screen_x_offset = 0; ++ priv->screen_y_offset = 0; + priv->inited = 0; + priv->is_a_2310 = 0; + priv->checksum = ELO_INIT_CHECKSUM; +@@ -1104,8 +1116,18 @@ + + local->name = xf86SetStrOption(local->options, "DeviceName", XI_TOUCHSCREEN); + xf86Msg(X_CONFIG, "Elographics X device name: %s\n", local->name); ++ + priv->screen_no = xf86SetIntOption(local->options, "ScreenNo", 0); + xf86Msg(X_CONFIG, "Elographics associated screen: %d\n", priv->screen_no); ++ ++ priv->screen_width = xf86SetIntOption(local->options, "ScreenWidth", -1); ++ priv->screen_height = xf86SetIntOption(local->options, "ScreenHeight", -1); ++ ++ priv->screen_x_offset = xf86SetIntOption(local->options, "ScreenXOffset", 0); ++ priv->screen_y_offset = xf86SetIntOption(local->options, "ScreenYOffset", 0); ++ xf86Msg(X_CONFIG, "Elographics screen offset: (%d,%d)\n", ++ priv->screen_x_offset, priv->screen_y_offset); ++ + priv->untouch_delay = xf86SetIntOption(local->options, "UntouchDelay", ELO_UNTOUCH_DELAY); + xf86Msg(X_CONFIG, "Elographics untouch delay: %d ms\n", priv->untouch_delay*10); + priv->report_delay = xf86SetIntOption(local->options, "ReportDelay", ELO_REPORT_DELAY); diff --git a/recipes/xorg-driver/xf86-input-elographics_1.2.4.bb b/recipes/xorg-driver/xf86-input-elographics_1.2.4.bb index 99505c5ecc..14a6585eb3 100644 --- a/recipes/xorg-driver/xf86-input-elographics_1.2.4.bb +++ b/recipes/xorg-driver/xf86-input-elographics_1.2.4.bb @@ -1,7 +1,9 @@ require xorg-driver-input.inc DESCRIPTION = "X.Org X server -- ELOGraphics input driver" PE = "2" -PR = "${INC_PR}.0" +PR = "${INC_PR}.1" + +SRC_URI += "file://elo-adjustable-screen-size.patch" SRC_URI[archive.md5sum] = "c4dbc216b2ddfcec93ae74ca00fae95a" SRC_URI[archive.sha256sum] = "dfede47c14c40e51294c84bf8f9bec5f5e0b17c80f370ae2ac6bddad79f9e66b" |