mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
scd: Only submit apdu_get_status when needed.
* scd/apdu.c (apdu_dev_list_finish): Return Boolean value if all device support INTERRUPT transfer. * scd/ccid-driver.c (ccid_dev_scan_finish): Likewise. * scd/app.c (app_new_register): Fix initial value of card_status. (select_application): Call update_fdset_for_usb. (scd_update_reader_status_file): Ditto. * scd/scdaemon.c (update_fdset_for_usb, need_tick): New. (handle_connections): Call handle_tick when select returns. Let select watch USB file descriptors, too. Call libusb_handle_events_timeout_completed for INTERRUPT transfer. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
9b06633c81
commit
881dcdfd84
7 changed files with 145 additions and 42 deletions
|
@ -1699,13 +1699,17 @@ ccid_dev_scan (int *idx_max_p, struct ccid_dev_table **t_p)
|
|||
return err;
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
ccid_dev_scan_finish (struct ccid_dev_table *tbl, int max)
|
||||
{
|
||||
int all_have_intr_endp = 1;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < max; i++)
|
||||
{
|
||||
if (tbl[i].ep_intr == -1)
|
||||
all_have_intr_endp = 0;
|
||||
|
||||
free (tbl[i].ifcdesc_extra);
|
||||
tbl[i].transport = 0;
|
||||
tbl[i].n = 0;
|
||||
|
@ -1719,6 +1723,8 @@ ccid_dev_scan_finish (struct ccid_dev_table *tbl, int max)
|
|||
}
|
||||
libusb_free_device_list (ccid_usb_dev_list, 1);
|
||||
ccid_usb_dev_list = NULL;
|
||||
|
||||
return all_have_intr_endp;
|
||||
}
|
||||
|
||||
unsigned int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue