mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-04-14 11:44:16 +00:00
Stop caching the screen size for scaling.
Do be able to correctly scale absolute inputs, the actual screen size must be used as this changes when the screen resizes.
This commit is contained in:
@@ -172,7 +172,6 @@ typedef struct {
|
||||
int min[ABS_MAX];
|
||||
int max[ABS_MAX];
|
||||
int map[ABS_MAX];
|
||||
int scale[2];
|
||||
int screen; /* Screen number for this device. */
|
||||
Bool use_touch;
|
||||
Bool touch;
|
||||
|
||||
@@ -276,11 +276,14 @@ EvdevAxesAbsSynRep (InputInfoPtr pInfo)
|
||||
skip_xy = 1;
|
||||
} else if (state->mode == Absolute && state->abs->screen != -1 && state->abs->axes >= 2) {
|
||||
int conv_x, conv_y;
|
||||
int scale[2];
|
||||
|
||||
scale[0] = screenInfo.screens[state->abs->screen]->width;
|
||||
scale[1] = screenInfo.screens[state->abs->screen]->height;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
state->axes->v[i] = xf86ScaleAxis (state->abs->v[i],
|
||||
0, state->abs->scale[i],
|
||||
state->abs->min[i], state->abs->max[i]);
|
||||
0, scale[i], state->abs->min[i], state->abs->max[i]);
|
||||
|
||||
|
||||
EvdevConvert (pInfo, 0, 2, state->abs->v[0], state->abs->v[1],
|
||||
@@ -504,9 +507,6 @@ EvdevAxisAbsNew1(InputInfoPtr pInfo)
|
||||
if (k < screenInfo.numScreens && k >= 0) {
|
||||
state->abs->screen = k;
|
||||
xf86Msg(X_CONFIG, "%s: AbsoluteScreen: %d.\n", pInfo->name, k);
|
||||
|
||||
state->abs->scale[0] = screenInfo.screens[state->abs->screen]->width;
|
||||
state->abs->scale[1] = screenInfo.screens[state->abs->screen]->height;
|
||||
} else {
|
||||
if (k != -1)
|
||||
xf86Msg(X_CONFIG, "%s: AbsoluteScreen: %d is not a valid screen.\n", pInfo->name, k);
|
||||
|
||||
Reference in New Issue
Block a user