void dt_control_quit() { dt_gui_gtk_quit(); // thread safe quit, 1st pass: dt_pthread_mutex_lock(&darktable.control->cond_mutex); dt_pthread_mutex_lock(&darktable.control->run_mutex); darktable.control->running = 0; dt_pthread_mutex_unlock(&darktable.control->run_mutex); dt_pthread_mutex_unlock(&darktable.control->cond_mutex); gtk_main_quit(); }
void dt_control_quit() { #ifdef HAVE_MAP // since map mode doesn't like to quit we just switch to lighttable mode. hacky, but it works :( if(dt_conf_get_int("ui_last/view") == DT_MAP) // we are in map mode where no expose is running dt_ctl_switch_mode_to(DT_LIBRARY); #endif dt_gui_gtk_quit(); // thread safe quit, 1st pass: dt_pthread_mutex_lock(&darktable.control->cond_mutex); dt_pthread_mutex_lock(&darktable.control->run_mutex); darktable.control->running = 0; dt_pthread_mutex_unlock(&darktable.control->run_mutex); dt_pthread_mutex_unlock(&darktable.control->cond_mutex); // let gui pick up the running = 0 state and die gtk_widget_queue_draw(dt_ui_center(darktable.gui->ui)); }