From b20a74a22cefb4809f04e44958771c6d3509e49a Mon Sep 17 00:00:00 2001 From: Dave Date: Tue, 9 Apr 2019 02:27:56 -0400 Subject: [PATCH] elan: Work-around sensors returning incorrect dimensions The dimensions some sensors return is the maximum zero-based index rather than the number of pixels. Assuming every sensor has an even number of pixels is safe. --- libfprint/drivers/elan.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libfprint/drivers/elan.c b/libfprint/drivers/elan.c index ed474b05..3216bf16 100644 --- a/libfprint/drivers/elan.c +++ b/libfprint/drivers/elan.c @@ -755,6 +755,14 @@ static void activate_run_state(fpi_ssm *ssm, struct fp_dev *_dev, void *user_dat elandev->frame_height = elandev->raw_frame_height = elandev->last_read[0]; } + /* Work-around sensors returning the sizes as zero-based index + * rather than the number of pixels. */ + if ((elandev->frame_width % 2 == 1) && + (elandev->frame_height % 2 == 1)) { + elandev->frame_width++; + elandev->frame_height++; + elandev->raw_frame_height = elandev->frame_height; + } if (elandev->frame_height > ELAN_MAX_FRAME_HEIGHT) elandev->frame_height = ELAN_MAX_FRAME_HEIGHT; fp_dbg("sensor dimensions, WxH: %dx%d", elandev->frame_width,