From e855c861acde634662957131bbfb367260f8daf0 Mon Sep 17 00:00:00 2001 From: Hector Martin Date: Sat, 10 Oct 2009 16:01:26 +0200 Subject: Disable polling in udev mode, use udev to signal device discovery --- daemon/usb-linux.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'daemon/usb-linux.c') diff --git a/daemon/usb-linux.c b/daemon/usb-linux.c index 0edc557..1f70f46 100644 --- a/daemon/usb-linux.c +++ b/daemon/usb-linux.c @@ -53,6 +53,7 @@ static struct collection device_list; static struct timeval next_dev_poll_time; static int devlist_failures; +static int device_polling; static void usb_disconnect(struct usb_device *dev) { @@ -214,7 +215,7 @@ static int start_rx(struct usb_device *dev) return 0; } -static int usb_discover(void) +int usb_discover(void) { int cnt, i, res; int valid_count = 0; @@ -393,10 +394,18 @@ void usb_get_fds(struct fdlist *list) free(usbfds); } +void usb_autodiscover(int enable) +{ + usbmuxd_log(LL_DEBUG, "usb polling enable: %d", enable); + device_polling = enable; +} + static int dev_poll_remain_ms(void) { int msecs; struct timeval tv; + if(!device_polling) + return 100000; // devices will never be polled if this is > 0 gettimeofday(&tv, NULL); msecs = (next_dev_poll_time.tv_sec - tv.tv_sec) * 1000; msecs += (next_dev_poll_time.tv_usec - tv.tv_usec) / 1000; @@ -493,6 +502,7 @@ int usb_init(void) usbmuxd_log(LL_DEBUG, "usb_init for linux / libusb 1.0"); devlist_failures = 0; + device_polling = 1; res = libusb_init(NULL); //libusb_set_debug(NULL, 3); if(res != 0) { -- cgit v1.1-32-gdbae