diff --git a/libfprint/fpi-usb-transfer.c b/libfprint/fpi-usb-transfer.c index 784aa59d..ac4f60ca 100644 --- a/libfprint/fpi-usb-transfer.c +++ b/libfprint/fpi-usb-transfer.c @@ -354,9 +354,10 @@ transfer_finish_cb (GObject *source_object, GAsyncResult *res, gpointer user_dat fpi_usb_transfer_unref (transfer); } -static gboolean -transfer_cancel_cb (FpiUsbTransfer *transfer) +static void +transfer_cancel_cb (FpDevice *device, gpointer user_data) { + FpiUsbTransfer *transfer = user_data; GError *error; FpiUsbTransferCallback callback; @@ -369,8 +370,6 @@ transfer_cancel_cb (FpiUsbTransfer *transfer) callback (transfer, transfer->device, transfer->user_data, error); fpi_usb_transfer_unref (transfer); - - return G_SOURCE_REMOVE; } /** @@ -413,7 +412,8 @@ fpi_usb_transfer_submit (FpiUsbTransfer *transfer, */ if (cancellable && g_cancellable_is_cancelled (cancellable)) { - g_idle_add ((GSourceFunc) transfer_cancel_cb, transfer); + fpi_device_add_timeout (transfer->device, 0, + transfer_cancel_cb, transfer, NULL); return; }