summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2021-07-26 19:45:02 +0200
committerBenjamin Berg <bberg@redhat.com>2021-07-26 20:05:12 +0200
commit4cdca4da247b101e01d3c6266c4b2b3ba946c6f5 (patch)
treee6474d1ecd45bfc05ad552722546f191f5c91c62
parenta68fce0f2caac09b9de2562b1c34efe37b273e91 (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.c8
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))
{