image: Fix reporting of retry on activation timeout
The image driver may still be deactivating when a new activation request comes in. This is because of a hack to do early reporting, which is technically not needed anymore. Fix the immediate issue by properly reporting the retry case. The proper fix is to only finish the previous operation after the device has been deactivated.
This commit is contained in:
parent
ec4fc9aec5
commit
32bdd8d5c4
1 changed files with 22 additions and 5 deletions
|
@ -62,17 +62,34 @@ static gboolean
|
||||||
pending_activation_timeout (gpointer user_data)
|
pending_activation_timeout (gpointer user_data)
|
||||||
{
|
{
|
||||||
FpImageDevice *self = FP_IMAGE_DEVICE (user_data);
|
FpImageDevice *self = FP_IMAGE_DEVICE (user_data);
|
||||||
|
FpDevice *device = FP_DEVICE (self);
|
||||||
FpImageDevicePrivate *priv = fp_image_device_get_instance_private (self);
|
FpImageDevicePrivate *priv = fp_image_device_get_instance_private (self);
|
||||||
|
FpiDeviceAction action = fpi_device_get_current_action (device);
|
||||||
|
GError *error;
|
||||||
|
|
||||||
priv->pending_activation_timeout_id = 0;
|
priv->pending_activation_timeout_id = 0;
|
||||||
|
|
||||||
if (priv->pending_activation_timeout_waiting_finger_off)
|
if (priv->pending_activation_timeout_waiting_finger_off)
|
||||||
fpi_device_action_error (FP_DEVICE (self),
|
error = fpi_device_retry_new_msg (FP_DEVICE_RETRY_REMOVE_FINGER,
|
||||||
fpi_device_retry_new_msg (FP_DEVICE_RETRY_REMOVE_FINGER,
|
"Remove finger before requesting another scan operation");
|
||||||
"Remove finger before requesting another scan operation"));
|
|
||||||
else
|
else
|
||||||
fpi_device_action_error (FP_DEVICE (self),
|
error = fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL);
|
||||||
fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL));
|
|
||||||
|
if (action == FPI_DEVICE_ACTION_VERIFY)
|
||||||
|
{
|
||||||
|
fpi_device_verify_report (device, FPI_MATCH_ERROR, NULL, error);
|
||||||
|
fpi_device_verify_complete (device, NULL);
|
||||||
|
}
|
||||||
|
else if (action == FPI_DEVICE_ACTION_IDENTIFY)
|
||||||
|
{
|
||||||
|
fpi_device_identify_report (device, NULL, NULL, error);
|
||||||
|
fpi_device_identify_complete (device, NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Can this happen for enroll? */
|
||||||
|
fpi_device_action_error (device, error);
|
||||||
|
}
|
||||||
|
|
||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue