vfs301: Fix device pointer handling in callback

When porting the driver to the new libfprint 1.90.0 a mistake was made
where the device was not passed through user_data anymore but it was
still read from there. Stop using user_data in the callback to fix this.

See: #320
This commit is contained in:
Benjamin Berg 2020-10-23 18:42:55 +02:00
parent a748f4d30f
commit d3076039d0

View file

@ -509,30 +509,30 @@ vfs301_proto_process_event_cb (FpiUsbTransfer *transfer,
FpDevice *device, FpDevice *device,
gpointer user_data, GError *error) gpointer user_data, GError *error)
{ {
FpDeviceVfs301 *dev = user_data; FpDeviceVfs301 *self = FPI_DEVICE_VFS301 (device);
if (error) if (error)
{ {
g_warning ("Error receiving data: %s", error->message); g_warning ("Error receiving data: %s", error->message);
g_error_free (error); g_error_free (error);
dev->recv_progress = VFS301_FAILURE; self->recv_progress = VFS301_FAILURE;
return; return;
} }
else if (transfer->actual_length < transfer->length) else if (transfer->actual_length < transfer->length)
{ {
/* TODO: process the data anyway? */ /* TODO: process the data anyway? */
dev->recv_progress = VFS301_ENDED; self->recv_progress = VFS301_ENDED;
return; return;
} }
else else
{ {
FpiUsbTransfer *new; FpiUsbTransfer *new;
if (!vfs301_proto_process_data (dev, if (!vfs301_proto_process_data (self,
transfer->length == VFS301_FP_RECV_LEN_1, transfer->length == VFS301_FP_RECV_LEN_1,
transfer->buffer, transfer->buffer,
transfer->actual_length)) transfer->actual_length))
{ {
dev->recv_progress = VFS301_ENDED; self->recv_progress = VFS301_ENDED;
return; return;
} }