diff options
Diffstat (limited to 'src/preflight.c')
-rw-r--r-- | src/preflight.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/preflight.c b/src/preflight.c index 6a303c2..5902f5d 100644 --- a/src/preflight.c +++ b/src/preflight.c | |||
@@ -26,8 +26,6 @@ | |||
26 | #include <unistd.h> | 26 | #include <unistd.h> |
27 | #include <errno.h> | 27 | #include <errno.h> |
28 | 28 | ||
29 | #include <pthread.h> | ||
30 | |||
31 | #include <sys/time.h> | 29 | #include <sys/time.h> |
32 | 30 | ||
33 | #ifdef HAVE_LIBIMOBILEDEVICE | 31 | #ifdef HAVE_LIBIMOBILEDEVICE |
@@ -36,6 +34,8 @@ | |||
36 | #include <libimobiledevice/notification_proxy.h> | 34 | #include <libimobiledevice/notification_proxy.h> |
37 | #endif | 35 | #endif |
38 | 36 | ||
37 | #include <libimobiledevice-glue/thread.h> | ||
38 | |||
39 | #include "preflight.h" | 39 | #include "preflight.h" |
40 | #include "device.h" | 40 | #include "device.h" |
41 | #include "client.h" | 41 | #include "client.h" |
@@ -389,18 +389,15 @@ void preflight_worker_device_add(struct device_info* info) | |||
389 | infocopy->serial = strdup(info->serial); | 389 | infocopy->serial = strdup(info->serial); |
390 | } | 390 | } |
391 | 391 | ||
392 | pthread_t th; | 392 | THREAD_T th; |
393 | pthread_attr_t attr; | 393 | int perr = thread_new(&th, preflight_worker_handle_device_add, infocopy); |
394 | |||
395 | pthread_attr_init(&attr); | ||
396 | pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); | ||
397 | |||
398 | int perr = pthread_create(&th, &attr, preflight_worker_handle_device_add, infocopy); | ||
399 | if (perr != 0) { | 394 | if (perr != 0) { |
400 | free((char*)infocopy->serial); | 395 | free((char*)infocopy->serial); |
401 | free(infocopy); | 396 | free(infocopy); |
402 | usbmuxd_log(LL_ERROR, "ERROR: failed to start preflight worker thread for device %s: %s (%d). Invoking client_device_add() directly but things might not work as expected.", info->serial, strerror(perr), perr); | 397 | usbmuxd_log(LL_ERROR, "ERROR: failed to start preflight worker thread for device %s: %s (%d). Invoking client_device_add() directly but things might not work as expected.", info->serial, strerror(perr), perr); |
403 | client_device_add(info); | 398 | client_device_add(info); |
399 | } else { | ||
400 | thread_detach(th); | ||
404 | } | 401 | } |
405 | #else | 402 | #else |
406 | client_device_add(info); | 403 | client_device_add(info); |