void do_import(device_data_t *data) { pthread_t pthread; void *retval; /* I'm sure there is some better interface for waiting on a thread in a UI main loop */ import_thread_done = 0; pthread_create(&pthread, NULL, pthread_wrapper, data); while (!import_thread_done) { import_thread_cancelled = process_ui_events(); usleep(100000); } if (pthread_join(pthread, &retval) < 0) retval = "Odd pthread error return"; if (retval) error(retval, data->name, data->devname); }
GError *do_import(device_data_t *data) { pthread_t pthread; void *retval; /* I'm sure there is some better interface for waiting on a thread in a UI main loop */ import_thread_done = 0; progress_bar_text = ""; progress_bar_fraction = 0.0; pthread_create(&pthread, NULL, pthread_wrapper, data); while (!import_thread_done) { import_thread_cancelled = process_ui_events(); update_progressbar(&data->progress, progress_bar_fraction); update_progressbar_text(&data->progress, progress_bar_text); usleep(100000); } if (pthread_join(pthread, &retval) < 0) retval = _("Odd pthread error return"); if (retval) return error(retval, data->vendor, data->product, data->devname); return NULL; }