mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2025-11-15 07:38:12 +00:00
usb-transfer: Use fpi_device_add_timeout instead of g_idle_add
g_idle_add attaches to the default main context, but the rest of libfprint is using the thread local main context. Switch to use the internal fpi_device_add_timeout API for the workaround in order to not rely on the default main context.
This commit is contained in:
@@ -354,9 +354,10 @@ transfer_finish_cb (GObject *source_object, GAsyncResult *res, gpointer user_dat
|
|||||||
fpi_usb_transfer_unref (transfer);
|
fpi_usb_transfer_unref (transfer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static void
|
||||||
transfer_cancel_cb (FpiUsbTransfer *transfer)
|
transfer_cancel_cb (FpDevice *device, gpointer user_data)
|
||||||
{
|
{
|
||||||
|
FpiUsbTransfer *transfer = user_data;
|
||||||
GError *error;
|
GError *error;
|
||||||
FpiUsbTransferCallback callback;
|
FpiUsbTransferCallback callback;
|
||||||
|
|
||||||
@@ -369,8 +370,6 @@ transfer_cancel_cb (FpiUsbTransfer *transfer)
|
|||||||
callback (transfer, transfer->device, transfer->user_data, error);
|
callback (transfer, transfer->device, transfer->user_data, error);
|
||||||
|
|
||||||
fpi_usb_transfer_unref (transfer);
|
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))
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user