static int32_t dt_camera_import_job_run(dt_job_t *job) { dt_camera_import_t *params = dt_control_job_get_params(job); dt_control_log(_("starting to import images from camera")); if(!dt_import_session_ready(params->shared.session)) { dt_control_log("Failed to import images from camera."); return 1; } guint total = g_list_length(params->images); char message[512] = { 0 }; snprintf(message, sizeof(message), ngettext("importing %d image from camera", "importing %d images from camera", total), total); dt_control_job_set_progress_message(job, message); // Switch to new filmroll dt_film_open(dt_import_session_film_id(params->shared.session)); dt_ctl_switch_mode_to(DT_LIBRARY); // register listener dt_camctl_listener_t listener = { 0 }; listener.data = params; listener.image_downloaded = _camera_import_image_downloaded; listener.request_image_path = _camera_request_image_path; listener.request_image_filename = _camera_request_image_filename; // start download of images dt_camctl_register_listener(darktable.camctl, &listener); dt_camctl_import(darktable.camctl, params->camera, params->images); dt_camctl_unregister_listener(darktable.camctl, &listener); return 0; }
static void _camera_capture_image_downloaded(const dt_camera_t *camera, const char *filename, void *data) { dt_capture_t *lib = (dt_capture_t *)data; /* create an import job of downloaded image */ dt_control_add_job(darktable.control, DT_JOB_QUEUE_USER_BG, dt_image_import_job_create(dt_import_session_film_id(lib->session), filename)); }
static void _capture_view_set_jobcode(const dt_view_t *view, const char *name) { g_assert(view != NULL); dt_capture_t *cv = (dt_capture_t *)view->data; dt_import_session_set_name(cv->session, name); dt_film_open(dt_import_session_film_id(cv->session)); dt_control_log(_("new session initiated '%s'"), name); }
/** Listener interface for import job */ void _camera_import_image_downloaded(const dt_camera_t *camera,const char *filename,void *data) { // Import downloaded image to import filmroll dt_camera_import_t *t = (dt_camera_import_t *)data; dt_image_import(dt_import_session_film_id(t->shared.session), filename, FALSE); dt_control_queue_redraw_center(); dt_control_log(_("%d/%d imported to %s"), t->import_count+1,g_list_length(t->images), g_path_get_basename(filename)); t->fraction+=1.0/g_list_length(t->images); dt_control_backgroundjobs_progress(darktable.control, t->bgj, t->fraction ); t->import_count++; }
/** Listener interface for import job */ void _camera_import_image_downloaded(const dt_camera_t *camera, const char *filename, void *data) { // Import downloaded image to import filmroll dt_camera_import_t *t = (dt_camera_import_t *)data; dt_image_import(dt_import_session_film_id(t->shared.session), filename, FALSE); dt_control_queue_redraw_center(); gchar *basename = g_path_get_basename(filename); dt_control_log(ngettext("%d/%d imported to %s", "%d/%d imported to %s", t->import_count + 1), t->import_count + 1, g_list_length(t->images), basename); g_free(basename); t->fraction += 1.0 / g_list_length(t->images); dt_control_job_set_progress(t->job, t->fraction); t->import_count++; }
void _camera_capture_image_downloaded(const dt_camera_t *camera,const char *filename,void *data) { dt_job_t j; dt_camera_capture_t *t; t = (dt_camera_capture_t*)data; /* create an import job of downloaded image */ dt_image_import_job_init(&j, dt_import_session_film_id(t->shared.session), filename); dt_control_add_job(darktable.control, &j); if (--t->total == 0) { pthread_mutex_lock(&t->mutex); pthread_cond_broadcast(&t->done); pthread_mutex_unlock(&t->mutex); } }
int32_t dt_camera_import_job_run(dt_job_t *job) { dt_camera_import_t *t = (dt_camera_import_t *)job->param; dt_control_log(_("starting to import images from camera")); if (!dt_import_session_ready(t->shared.session)) { dt_control_log("Failed to import images from camera."); return 1; } int total = g_list_length( t->images ); char message[512]= {0}; sprintf(message, ngettext ("importing %d image from camera", "importing %d images from camera", total), total ); t->bgj = dt_control_backgroundjobs_create(darktable.control, 0, message); // Switch to new filmroll dt_film_open(dt_import_session_film_id(t->shared.session)); dt_ctl_switch_mode_to(DT_LIBRARY); // register listener dt_camctl_listener_t listener= {0}; listener.data=t; listener.image_downloaded=_camera_import_image_downloaded; listener.request_image_path=_camera_request_image_path; listener.request_image_filename=_camera_request_image_filename; // start download of images dt_camctl_register_listener(darktable.camctl,&listener); dt_camctl_import(darktable.camctl,t->camera,t->images); dt_camctl_unregister_listener(darktable.camctl,&listener); dt_control_backgroundjobs_destroy(darktable.control, t->bgj); dt_import_session_destroy(t->shared.session); return 0; }