diff options
| author | 2009-10-10 16:01:26 +0200 | |
|---|---|---|
| committer | 2009-10-10 16:01:26 +0200 | |
| commit | e855c861acde634662957131bbfb367260f8daf0 (patch) | |
| tree | 4319250c5429d7ab20eccabc47b4b0893164986b /daemon/usb-linux.c | |
| parent | 94033a862cb907c24cb2aaed1d4f1fb75652bfcd (diff) | |
| download | usbmuxd-e855c861acde634662957131bbfb367260f8daf0.tar.gz usbmuxd-e855c861acde634662957131bbfb367260f8daf0.tar.bz2 | |
Disable polling in udev mode, use udev to signal device discovery
Diffstat (limited to 'daemon/usb-linux.c')
| -rw-r--r-- | daemon/usb-linux.c | 12 |
1 files changed, 11 insertions, 1 deletions
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; | |||
| 53 | static struct timeval next_dev_poll_time; | 53 | static struct timeval next_dev_poll_time; |
| 54 | 54 | ||
| 55 | static int devlist_failures; | 55 | static int devlist_failures; |
| 56 | static int device_polling; | ||
| 56 | 57 | ||
| 57 | static void usb_disconnect(struct usb_device *dev) | 58 | static void usb_disconnect(struct usb_device *dev) |
| 58 | { | 59 | { |
| @@ -214,7 +215,7 @@ static int start_rx(struct usb_device *dev) | |||
| 214 | return 0; | 215 | return 0; |
| 215 | } | 216 | } |
| 216 | 217 | ||
| 217 | static int usb_discover(void) | 218 | int usb_discover(void) |
| 218 | { | 219 | { |
| 219 | int cnt, i, res; | 220 | int cnt, i, res; |
| 220 | int valid_count = 0; | 221 | int valid_count = 0; |
| @@ -393,10 +394,18 @@ void usb_get_fds(struct fdlist *list) | |||
| 393 | free(usbfds); | 394 | free(usbfds); |
| 394 | } | 395 | } |
| 395 | 396 | ||
| 397 | void usb_autodiscover(int enable) | ||
| 398 | { | ||
| 399 | usbmuxd_log(LL_DEBUG, "usb polling enable: %d", enable); | ||
| 400 | device_polling = enable; | ||
| 401 | } | ||
| 402 | |||
| 396 | static int dev_poll_remain_ms(void) | 403 | static int dev_poll_remain_ms(void) |
| 397 | { | 404 | { |
| 398 | int msecs; | 405 | int msecs; |
| 399 | struct timeval tv; | 406 | struct timeval tv; |
| 407 | if(!device_polling) | ||
| 408 | return 100000; // devices will never be polled if this is > 0 | ||
| 400 | gettimeofday(&tv, NULL); | 409 | gettimeofday(&tv, NULL); |
| 401 | msecs = (next_dev_poll_time.tv_sec - tv.tv_sec) * 1000; | 410 | msecs = (next_dev_poll_time.tv_sec - tv.tv_sec) * 1000; |
| 402 | msecs += (next_dev_poll_time.tv_usec - tv.tv_usec) / 1000; | 411 | msecs += (next_dev_poll_time.tv_usec - tv.tv_usec) / 1000; |
| @@ -493,6 +502,7 @@ int usb_init(void) | |||
| 493 | usbmuxd_log(LL_DEBUG, "usb_init for linux / libusb 1.0"); | 502 | usbmuxd_log(LL_DEBUG, "usb_init for linux / libusb 1.0"); |
| 494 | 503 | ||
| 495 | devlist_failures = 0; | 504 | devlist_failures = 0; |
| 505 | device_polling = 1; | ||
| 496 | res = libusb_init(NULL); | 506 | res = libusb_init(NULL); |
| 497 | //libusb_set_debug(NULL, 3); | 507 | //libusb_set_debug(NULL, 3); |
| 498 | if(res != 0) { | 508 | if(res != 0) { |
