diff options
author | Benjamin Berg <bberg@redhat.com> | 2021-12-27 12:13:55 +0100 |
---|---|---|
committer | Benjamin Berg <bberg@redhat.com> | 2021-12-27 12:19:10 +0100 |
commit | 664126b431a952b00c83d8e2ac3797a9e3a6f9f3 (patch) | |
tree | 863d563c19d9302e4f8f580623eb48e90e0450db | |
parent | 7b1fe6ec197f9f86c46bd80854c22abfe1a5d6e2 (diff) |
elanspi: Do not allow image captures to be interruptedbenzea/elanspi-critical
Avoid unexpected state changes during image capture. This also means
that the old line handler does not need to check for cancellation.
-rw-r--r-- | libfprint/drivers/elanspi.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/libfprint/drivers/elanspi.c b/libfprint/drivers/elanspi.c index c3ddea9..899d49f 100644 --- a/libfprint/drivers/elanspi.c +++ b/libfprint/drivers/elanspi.c @@ -434,21 +434,9 @@ elanspi_capture_old_line_handler (FpiSpiTransfer *transfer, FpDevice *dev, gpoin self->old_data.line_ptr += 1; /* if there is still data, continue from check lineready */ if (self->old_data.line_ptr < self->sensor_height) - { - fpi_ssm_jump_to_state (transfer->ssm, ELANSPI_CAPTOLD_CHECK_LINEREADY); - } + fpi_ssm_jump_to_state (transfer->ssm, ELANSPI_CAPTOLD_CHECK_LINEREADY); else - { - /* check for cancellation */ - if (fpi_device_action_is_cancelled (dev)) - { - g_cancellable_set_error_if_cancelled (fpi_device_get_cancellable (dev), &error); - fpi_ssm_mark_failed (transfer->ssm, error); - return; - } - /* otherwise finish succesfully */ - fpi_ssm_mark_completed (transfer->ssm); - } + fpi_ssm_mark_completed (transfer->ssm); } static void @@ -607,6 +595,7 @@ elanspi_calibrate_old_handler (FpiSsm *ssm, FpDevice *dev) case ELANSPI_CALIBOLD_DACFINE_CAPTURE: chld = fpi_ssm_new (dev, elanspi_capture_old_handler, ELANSPI_CAPTOLD_NSTATES); fpi_ssm_silence_debug (chld); + fpi_ssm_set_critical (chld); fpi_ssm_start_subsm (ssm, chld); return; @@ -862,6 +851,7 @@ elanspi_calibrate_hv_handler (FpiSsm *ssm, FpDevice *dev) case ELANSPI_CALIBHV_CAPTURE: chld = fpi_ssm_new (dev, elanspi_capture_hv_handler, ELANSPI_CAPTHV_NSTATES); fpi_ssm_silence_debug (chld); + fpi_ssm_set_critical (chld); fpi_ssm_start_subsm (ssm, chld); return; @@ -1118,6 +1108,7 @@ do_sw_reset: else chld = fpi_ssm_new_full (dev, elanspi_calibrate_old_handler, ELANSPI_CALIBOLD_NSTATES, ELANSPI_CALIBOLD_PROTECT, "old calibrate"); fpi_ssm_silence_debug (chld); + fpi_ssm_set_critical (chld); fpi_ssm_start_subsm (ssm, chld); return; @@ -1127,6 +1118,7 @@ do_sw_reset: else chld = fpi_ssm_new (dev, elanspi_capture_old_handler, ELANSPI_CAPTOLD_NSTATES); fpi_ssm_silence_debug (chld); + fpi_ssm_set_critical (chld); fpi_ssm_start_subsm (ssm, chld); return; @@ -1500,6 +1492,7 @@ elanspi_fp_capture_ssm_handler (FpiSsm *ssm, FpDevice *dev) else chld = fpi_ssm_new (dev, elanspi_capture_old_handler, ELANSPI_CAPTOLD_NSTATES); fpi_ssm_silence_debug (chld); + fpi_ssm_set_critical (chld); fpi_ssm_start_subsm (ssm, chld); return; |