diff options
author | Benjamin Berg <bberg@redhat.com> | 2021-07-26 19:45:02 +0200 |
---|---|---|
committer | Benjamin Berg <bberg@redhat.com> | 2021-07-26 20:05:12 +0200 |
commit | 4cdca4da247b101e01d3c6266c4b2b3ba946c6f5 (patch) | |
tree | e6474d1ecd45bfc05ad552722546f191f5c91c62 | |
parent | a68fce0f2caac09b9de2562b1c34efe37b273e91 (diff) |
virtual-device: Do not time out when waiting for SCAN command
The timeout is designed to continue commands automatically that are
common (e.g. opening the device). This doesn't really make sense for
scan commands, and removing the timeout enables test setups where user
interaction with the device may happen at arbitrary times.
One exception is device removal/unplug, in which case the timeout will
be added anyway.
-rw-r--r-- | libfprint/drivers/virtual-device.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libfprint/drivers/virtual-device.c b/libfprint/drivers/virtual-device.c index 1743692..a9efb39 100644 --- a/libfprint/drivers/virtual-device.c +++ b/libfprint/drivers/virtual-device.c @@ -150,6 +150,8 @@ process_cmds (FpDeviceVirtualDevice * self, char **scan_id, GError **error) { + gboolean removed; + if (g_cancellable_is_cancelled (self->cancellable) || (fpi_device_get_current_action (FP_DEVICE (self)) != FPI_DEVICE_ACTION_NONE && g_cancellable_is_cancelled (fpi_device_get_cancellable (FP_DEVICE (self))))) @@ -250,8 +252,11 @@ process_cmds (FpDeviceVirtualDevice * self, if (self->ignore_wait) return TRUE; + g_object_get (self, "removed", &removed, NULL); + g_assert (self->wait_command_id == 0); - self->wait_command_id = g_timeout_add (500, wait_for_command_timeout, self); + if (!scan || removed) + self->wait_command_id = g_timeout_add (500, wait_for_command_timeout, self); return FALSE; } @@ -304,6 +309,7 @@ recv_instruction_cb (GObject *source_object, else if (g_str_has_prefix (cmd, UNPLUG_CMD)) { fpi_device_remove (FP_DEVICE (self)); + maybe_continue_current_action (self); } else if (g_str_has_prefix (cmd, SET_ENROLL_STAGES_PREFIX)) { |