![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "common/darktable.h"
#include "common/dtpthread.h"
#include "control/settings.h"
#include <gtk/gtk.h>
#include <inttypes.h>
#include "control/jobs.h"
#include "control/progress.h"
#include "libs/lib.h"
Go to the source code of this file.
Data Structures | |
struct | dt_control_t |
Macros | |
#define | DT_CTL_LOG_SIZE 10 |
#define | DT_CTL_LOG_MSG_SIZE 1000 |
#define | DT_CTL_LOG_TIMEOUT 8000 |
#define | DT_CTL_TOAST_SIZE 10 |
#define | DT_CTL_TOAST_MSG_SIZE 300 |
#define | DT_CTL_TOAST_TIMEOUT 5000 |
Typedefs | |
typedef GdkCursorType | dt_cursor_t |
typedef struct dt_control_t | dt_control_t |
#define DT_CTL_LOG_MSG_SIZE 1000 |
#define DT_CTL_LOG_SIZE 10 |
#define DT_CTL_LOG_TIMEOUT 8000 |
#define DT_CTL_TOAST_MSG_SIZE 300 |
#define DT_CTL_TOAST_SIZE 10 |
#define DT_CTL_TOAST_TIMEOUT 5000 |
typedef struct dt_control_t dt_control_t |
this manages everything time-consuming. distributes the jobs on all processors, performs scheduling.
typedef GdkCursorType dt_cursor_t |
void dt_control_allow_change_cursor | ( | ) |
References darktable_t::control, darktable, FALSE, and dt_control_t::lock_cursor_shape.
Referenced by _main_do_event_help(), and _restore_default_cursor().
void dt_control_button_pressed | ( | double | x, |
double | y, | ||
double | pressure, | ||
int | which, | ||
int | type, | ||
uint32_t | state | ||
) |
References dt_control_t::button_down, dt_control_t::button_down_which, dt_control_t::button_type, dt_control_t::button_x, dt_control_t::button_y, darktable_t::control, darktable, DT_CTL_LOG_SIZE, DT_CTL_TOAST_SIZE, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_view_manager_button_pressed(), dt_control_t::height, dt_control_t::log_ack, dt_control_t::log_message_timeout_id, dt_control_t::log_mutex, dt_control_t::log_pos, dt_control_t::toast_ack, dt_control_t::toast_message_timeout_id, dt_control_t::toast_mutex, dt_control_t::toast_pos, type, and darktable_t::view_manager.
Referenced by _button_pressed().
References dt_control_t::button_down, dt_control_t::button_down_which, darktable_t::control, darktable, dt_view_manager_button_released(), and darktable_t::view_manager.
Referenced by _button_released().
void dt_control_change_cursor | ( | dt_cursor_t | cursor | ) |
References darktable_t::control, darktable, dt_ui_main_window(), darktable_t::gui, dt_control_t::lock_cursor_shape, and dt_gui_gtk_t::ui.
Referenced by _enter_edit_mode(), _enter_edit_mode(), _hide_mouse(), _main_do_event_help(), _page_new_area_clicked(), _panel_handle_cursor_callback(), _restore_default_cursor(), button_pressed(), button_pressed(), button_pressed(), button_released(), button_released(), button_released(), contextual_help_callback(), dt_gui_gtk_init(), dt_iop_request_focus(), dt_view_manager_switch_by_view(), enter(), leave(), mouse_leave(), mouse_moved(), mouse_moved(), mouse_moved(), and switch_cursors().
void dt_control_cleanup | ( | dt_control_t * | s | ) |
References dt_control_t::cond_mutex, dt_control_jobs_cleanup(), dt_pthread_mutex_destroy(), dt_control_t::log_mutex, dt_control_t::mutex, dt_control_t::progress_system, dt_control_t::queue_mutex, dt_control_t::res_mutex, dt_control_t::run_mutex, and dt_control_t::toast_mutex.
Referenced by dt_cleanup().
gboolean dt_control_configure | ( | GtkWidget * | da, |
GdkEventConfigure * | event, | ||
gpointer | user_data | ||
) |
References darktable, dt_view_manager_configure(), TRUE, and darktable_t::view_manager.
Referenced by _configure().
void dt_control_delete_images | ( | ) |
References darktable_t::control, darktable, dt_conf_get_bool(), dt_control_add_job(), dt_control_delete_images_job_run(), dt_control_generic_images_job_create(), dt_control_job_dispose(), dt_control_job_get_params(), DT_JOB_QUEUE_USER_FG, dt_osx_disallow_fullscreen(), dt_ui_main_window(), FALSE, darktable_t::gui, dt_control_image_enumerator_t::index, PROGRESS_SIMPLE, and dt_gui_gtk_t::ui.
Referenced by append_file().
void dt_control_draw_busy_msg | ( | cairo_t * | cr, |
int | width, | ||
int | height | ||
) |
References darktable_t::bauhaus, darktable, DT_GUI_COLOR_LOG_BG, DT_GUI_COLOR_LOG_FG, dt_gui_gtk_set_source_rgb(), DT_PIXEL_APPLY_DPI, height, dt_bauhaus_t::pango_font_desc, and width.
Referenced by _thumb_draw_image(), _thumb_draw_image(), and dt_control_expose().
References darktable_t::control, darktable, dt_cairo_image_surface_create(), dt_cairo_image_surface_get_height(), dt_cairo_image_surface_get_width(), dt_control_draw_busy_msg(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_ui_center(), dt_view_manager_expose(), darktable_t::gui, height, dt_control_t::height, dt_control_t::log_busy, dt_control_t::log_mutex, lookup_color(), dt_gui_gtk_t::surface, dt_gui_gtk_t::ui, darktable_t::view_manager, width, and dt_control_t::width.
Referenced by _draw().
void dt_control_forbid_change_cursor | ( | ) |
References darktable_t::control, darktable, dt_control_t::lock_cursor_shape, and TRUE.
Referenced by _main_do_event_help(), and contextual_help_callback().
int dt_control_get_dev_closeup | ( | ) |
References darktable_t::control, darktable, dt_control_t::dev_closeup, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and dt_control_t::global_mutex.
Referenced by _circle_events_mouse_moved(), _draw_near_point(), _ellipse_events_mouse_moved(), _gradient_events_button_released(), _gradient_events_mouse_moved(), _lib_navigation_draw_callback(), _lib_navigation_set_position(), _lib_snapshots_add_button_clicked_callback(), _path_events_mouse_moved(), _update_darkroom_roi(), _zoom_preset_change(), button_pressed(), button_pressed(), button_released(), dt_dev_get_pointer_zoom_pos(), dt_masks_events_post_expose(), expose(), get_zoom_scale(), gui_post_expose(), gui_post_expose(), mouse_in_imagearea(), mouse_moved(), mouse_moved(), process(), and scrolled().
dt_dev_zoom_t dt_control_get_dev_zoom | ( | ) |
References darktable_t::control, darktable, dt_control_t::dev_zoom, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and dt_control_t::global_mutex.
Referenced by _circle_events_mouse_moved(), _draw_near_point(), _ellipse_events_mouse_moved(), _gradient_events_button_released(), _gradient_events_mouse_moved(), _lib_navigation_draw_callback(), _lib_navigation_set_position(), _lib_snapshots_add_button_clicked_callback(), _path_events_mouse_moved(), _update_darkroom_roi(), _zoom_preset_change(), button_pressed(), button_pressed(), button_released(), dt_dev_get_pointer_zoom_pos(), dt_masks_events_post_expose(), expose(), get_zoom_scale(), gui_post_expose(), gui_post_expose(), mouse_moved(), mouse_moved(), process(), and scrolled().
float dt_control_get_dev_zoom_scale | ( | ) |
float dt_control_get_dev_zoom_x | ( | ) |
References darktable_t::control, darktable, dt_control_t::dev_zoom_x, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and dt_control_t::global_mutex.
Referenced by _brush_events_post_expose(), _circle_events_post_expose(), _ellipse_events_post_expose(), _gradient_events_post_expose(), _lib_navigation_draw_callback(), _lib_navigation_set_position(), _lib_snapshots_add_button_clicked_callback(), _path_events_post_expose(), _update_darkroom_roi(), _zoom_preset_change(), button_released(), dt_dev_get_pointer_zoom_pos(), dt_masks_events_post_expose(), expose(), gui_post_expose(), gui_post_expose(), mouse_moved(), and scrolled().
float dt_control_get_dev_zoom_y | ( | ) |
References darktable_t::control, darktable, dt_control_t::dev_zoom_y, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and dt_control_t::global_mutex.
Referenced by _brush_events_post_expose(), _circle_events_post_expose(), _ellipse_events_post_expose(), _gradient_events_post_expose(), _lib_navigation_draw_callback(), _lib_navigation_set_position(), _lib_snapshots_add_button_clicked_callback(), _path_events_post_expose(), _update_darkroom_roi(), _zoom_preset_change(), button_released(), dt_dev_get_pointer_zoom_pos(), dt_masks_events_post_expose(), expose(), gui_post_expose(), gui_post_expose(), mouse_moved(), and scrolled().
int32_t dt_control_get_keyboard_over_id | ( | ) |
References darktable_t::control, darktable, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_control_t::global_mutex, and dt_control_t::keyboard_over_id.
Referenced by dt_act_on_get_first_image(), dt_act_on_get_images(), dt_act_on_get_images_nb(), dt_thumbtable_key_pressed_grid(), and dt_thumbtable_scroll_to_selection().
int32_t dt_control_get_mouse_over_id | ( | ) |
References darktable_t::control, darktable, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_control_t::global_mutex, and dt_control_t::mouse_over_id.
Referenced by _get_image_datetime(), _hovered_cb(), _init_treeview(), _jump_to(), _metadata_view_update_values(), _mouse_over_image_callback(), _on_mouse_over_image_changed(), _populate_thumbnails(), dt_thumbtable_key_pressed_grid(), dt_thumbtable_scroll_to_selection(), mouse_moved(), and try_enter().
void dt_control_hinter_message | ( | const struct dt_control_t * | s, |
const char * | message | ||
) |
sets the hinter message
References darktable, dt_hinter_set_message(), darktable_t::gui, and dt_gui_gtk_t::ui.
Referenced by _blendop_masks_show_and_edit(), _set_hinter_message(), btn_make_radio_callback(), button_released(), dt_collection_hint_message_internal(), gui_focus(), lua_print_hinter(), mouse_moved(), mouse_moved(), and switch_cursors().
void dt_control_init | ( | dt_control_t * | s | ) |
References dt_control_t::button_down, dt_control_t::button_down_which, dt_control_t::cond, dt_control_t::cond_mutex, dt_control_t::dev_closeup, dt_control_t::dev_zoom, dt_control_t::dev_zoom_x, dt_control_t::dev_zoom_y, dt_control_jobs_init(), dt_pthread_mutex_init(), DT_ZOOM_FIT, FALSE, dt_control_t::global_mutex, dt_control_t::gui_thread, dt_control_t::keyboard_over_id, dt_control_t::lock_cursor_shape, dt_control_t::log_ack, dt_control_t::log_busy, dt_control_t::log_message_timeout_id, dt_control_t::log_mutex, dt_control_t::log_pos, dt_control_t::mouse_over_id, dt_control_t::mutex, dt_control_t::progress_system, dt_control_t::queue_mutex, dt_control_t::res_mutex, dt_control_t::run_mutex, dt_control_t::toast_ack, dt_control_t::toast_busy, dt_control_t::toast_message_timeout_id, dt_control_t::toast_mutex, and dt_control_t::toast_pos.
Referenced by dt_init().
void dt_control_key_pressed | ( | GdkEventKey * | event | ) |
References darktable, dt_view_manager_key_pressed(), and darktable_t::view_manager.
Referenced by _key_pressed().
void dt_control_log | ( | const char * | msg, |
... | |||
) |
void dt_control_log_busy_leave | ( | ) |
References darktable_t::control, darktable, dt_control_queue_redraw_center(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_control_t::log_busy, and dt_control_t::log_mutex.
Referenced by _lib_duplicate_thumb_release_callback(), dt_dev_process_image_job(), dt_dev_process_preview_job(), and gui_post_expose().
void dt_control_log_redraw | ( | ) |
request redraw of the log widget. This redraws the message label.
References darktable, DT_DEBUG_CONTROL_SIGNAL_RAISE, DT_SIGNAL_CONTROL_LOG_REDRAW, and darktable_t::signals.
Referenced by _dt_ctl_log_message_timeout_callback(), and _redraw_center().
void dt_control_mouse_enter | ( | ) |
References darktable, dt_view_manager_mouse_enter(), and darktable_t::view_manager.
Referenced by _center_enter().
void dt_control_mouse_leave | ( | ) |
References darktable, dt_view_manager_mouse_leave(), and darktable_t::view_manager.
Referenced by _center_leave().
References darktable, dt_view_manager_mouse_moved(), and darktable_t::view_manager.
Referenced by _mouse_moved().
void dt_control_navigation_redraw | ( | ) |
request redraw of the navigation widget. This redraws the wiget of the navigation module.
References darktable, DT_DEBUG_CONTROL_SIGNAL_RAISE, DT_SIGNAL_CONTROL_NAVIGATION_REDRAW, and darktable_t::signals.
Referenced by _enter_edit_mode(), _enter_edit_mode(), button_released(), gui_changed(), mouse_moved(), and scrolled().
void dt_control_queue_redraw | ( | ) |
request redraw of the workspace. This redraws the whole workspace within a gdk critical section to prevent several threads to carry out a redraw which will end up in crashes.
References darktable, DT_DEBUG_CONTROL_SIGNAL_RAISE, DT_SIGNAL_CONTROL_REDRAW_ALL, and darktable_t::signals.
Referenced by _export_image(), _film_strip_activated(), _view_print_settings(), _zoom_preset_change(), async_redraw(), clear_caches_callback(), dt_dev_process_preview_job(), dt_image_import_job_run(), dt_lib_gui_set_expanded(), enter(), and process_clusters().
void dt_control_queue_redraw_center | ( | ) |
request redraw of center window. This redraws the center view within a gdk critical section to prevent several threads to carry out the redraw.
References darktable, DT_DEBUG_CONTROL_SIGNAL_RAISE, DT_SIGNAL_CONTROL_REDRAW_CENTER, and darktable_t::signals.
Referenced by _add_shape(), _blendop_masks_add_shape(), _color_picker_callback_button_press(), _display_samples_changed(), _do_get_structure_lines(), _do_get_structure_quad(), _drag_and_drop_received(), _drag_motion_received(), _edit_masks(), _enter_edit_mode(), _enter_edit_mode(), _event_fit_both_button_clicked(), _event_fit_h_button_clicked(), _event_fit_v_button_clicked(), _event_process_after_preview_callback(), _event_structure_auto_clicked(), _event_structure_lines_clicked(), _event_structure_quad_clicked(), _expose_again(), _film_import1(), _generic_dt_control_fileop_images_job_run(), _grid_callback(), _grid_horizontal_changed(), _grid_size_changed(), _grid_subdiv_changed(), _grid_vertical_changed(), _gui_delete_callback(), _gui_set_single_expanded(), _guides_quickbutton_clicked(), _height_changed(), _iso_12646_quickbutton_clicked(), _lib_duplicate_preview_updated_callback(), _lib_duplicate_thumb_release_callback(), _lib_navigation_set_position(), _lib_snapshots_toggled_callback(), _live_sample_button(), _load_image_full_page(), _page_clear_area_clicked(), _page_delete_area(), _refresh_display(), _remove_sample_cb(), _sample_enter_callback(), _sample_leave_callback(), _set_orientation(), _settings_colors_changed(), _settings_contrast_changed(), _settings_flip_changed(), _settings_guides_changed(), _snap_grid_callback(), _tree_add_brush(), _tree_add_circle(), _tree_add_ellipse(), _tree_add_gradient(), _tree_add_path(), _tree_difference(), _tree_exclusion(), _tree_intersection(), _tree_inverse(), _tree_selection_change(), _tree_union(), _width_changed(), _x_changed(), _y_changed(), aspect_presets_changed(), button_pressed(), button_pressed(), button_pressed(), button_released(), button_released(), checker_changed_callback(), delete_history_callback(), display_borders_callback(), display_brightness_callback(), do_crop(), dt_control_delete_images_job_run(), dt_control_duplicate_images_job_run(), dt_control_flip_images_job_run(), dt_control_local_copy_images_job_run(), dt_control_log_busy_enter(), dt_control_log_busy_leave(), dt_control_merge_hdr_job_run(), dt_control_monochrome_images_job_run(), dt_control_refresh_exif_run(), dt_control_remove_images_job_run(), dt_control_toast_busy_enter(), dt_control_toast_busy_leave(), dt_dev_configure_real(), dt_dev_process_image_job(), dt_dev_snapshot_request(), dt_film_open(), dt_image_local_copy_reset(), dt_image_local_copy_set(), dt_iop_request_focus(), dt_masks_set_edit_mode(), entry_activated(), gui_changed(), gui_reset(), gui_update(), import_images(), key_swap_callback(), keystone_type_changed(), load_xmp_callback(), mouse_leave(), mouse_leave(), mouse_moved(), mouse_moved(), mouse_moved(), mouse_moved(), paste_all_callback(), paste_parts_callback(), process_job_run(), row_activated_with_event(), rt_add_shape(), rt_select_algorithm_callback(), rt_show_forms_for_current_scale(), safety_changed_callback(), scrolled(), scrolled(), set_params(), start_profiling_callback(), switch_cursors(), sync_pipe(), and ungroup_images_callback().
void dt_control_queue_redraw_widget | ( | GtkWidget * | widget | ) |
threadsafe request of redraw of specific widget. Use this function if you need to redraw a specific widget if your current thread context is not gtk main thread.
References _widget_queue_draw(), and dt_control_running().
Referenced by _blendop_blend_order_clicked(), _blendop_blendif_polarity_callback(), _blendop_blendif_suppress_toggled(), _blendop_masks_polarity_callback(), _iop_zonesystem_redraw_preview_callback(), _lib_navigation_control_redraw_callback(), _raster_polarity_callback(), apply_auto_black(), apply_auto_Dmax(), apply_auto_Dmin(), apply_auto_exposure(), apply_auto_offset(), apply_auto_WB_high(), apply_auto_WB_low(), collect_histogram_on_CPU(), color_picker_apply(), gui_changed(), gui_update(), process_clusters(), Wb_high_norm_callback(), and Wb_low_norm_callback().
void dt_control_quit | ( | ) |
int dt_control_running | ( | ) |
get threadsafe running state.
References darktable_t::control, darktable, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_control_t::run_mutex, and dt_control_t::running.
Referenced by dt_colorspaces_set_display_profile(), dt_control_queue_redraw_widget(), dt_control_signal_raise(), dt_control_work(), dt_control_work_res(), dt_control_worker_kicker(), and gui_reset().
void dt_control_set_dev_closeup | ( | int | value | ) |
References darktable_t::control, darktable, dt_control_t::dev_closeup, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and dt_control_t::global_mutex.
Referenced by _lib_snapshots_toggled_callback(), _zoom_preset_change(), button_released(), enter(), reset(), and scrolled().
void dt_control_set_dev_zoom | ( | dt_dev_zoom_t | value | ) |
References darktable_t::control, darktable, dt_control_t::dev_zoom, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and dt_control_t::global_mutex.
Referenced by _lib_snapshots_toggled_callback(), _zoom_preset_change(), button_released(), enter(), reset(), and scrolled().
void dt_control_set_dev_zoom_scale | ( | float | value | ) |
void dt_control_set_dev_zoom_x | ( | float | value | ) |
References darktable_t::control, darktable, dt_control_t::dev_zoom_x, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and dt_control_t::global_mutex.
Referenced by _lib_navigation_set_position(), _lib_snapshots_toggled_callback(), _zoom_preset_change(), button_released(), enter(), mouse_moved(), reset(), and scrolled().
void dt_control_set_dev_zoom_y | ( | float | value | ) |
References darktable_t::control, darktable, dt_control_t::dev_zoom_y, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and dt_control_t::global_mutex.
Referenced by _lib_navigation_set_position(), _lib_snapshots_toggled_callback(), _zoom_preset_change(), button_released(), enter(), mouse_moved(), reset(), and scrolled().
void dt_control_set_keyboard_over_id | ( | int32_t | value | ) |
References darktable_t::control, darktable, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_control_t::global_mutex, and dt_control_t::keyboard_over_id.
Referenced by _culling_mode(), and dt_thumbtable_dispatch_over().
void dt_control_set_mouse_over_id | ( | int32_t | value | ) |
References darktable_t::control, darktable, DT_DEBUG_CONTROL_SIGNAL_RAISE, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), DT_SIGNAL_MOUSE_OVER_IMAGE_CHANGE, dt_control_t::global_mutex, dt_control_t::keyboard_over_id, dt_control_t::mouse_over_id, and darktable_t::signals.
Referenced by _culling_mode(), _dev_change_image(), _display_next_image(), _event_main_enter(), _event_main_leave(), _event_main_leave(), _event_main_motion(), _event_main_press(), _view_map_button_press_callback(), _view_map_motion_notify_callback(), dt_collection_load_filmroll(), dt_load_from_string(), dt_thumbtable_dispatch_over(), enter(), mouse_leave(), mouse_moved(), and reset().
void dt_control_shutdown | ( | dt_control_t * | s | ) |
References dt_control_t::cond, dt_control_t::cond_mutex, DT_CTL_WORKER_RESERVED, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_control_t::kick_on_workers_thread, dt_control_t::num_threads, dt_control_t::run_mutex, dt_control_t::running, dt_control_t::thread, and dt_control_t::thread_res.
Referenced by dt_cleanup().
void dt_control_toast_busy_enter | ( | ) |
void dt_control_toast_busy_leave | ( | ) |
References darktable_t::control, darktable, dt_control_queue_redraw_center(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_control_t::toast_busy, and dt_control_t::toast_mutex.
Referenced by _lib_duplicate_thumb_release_callback(), dt_dev_process_image_job(), and dt_dev_process_preview_job().
void dt_control_toast_redraw | ( | ) |
request redraw of the toast widget. This redraws the message label.
References darktable, DT_DEBUG_CONTROL_SIGNAL_RAISE, DT_SIGNAL_CONTROL_TOAST_REDRAW, and darktable_t::signals.
Referenced by _dt_ctl_toast_message_timeout_callback(), and _redraw_center().
void dt_control_write_sidecar_files | ( | ) |
References darktable_t::control, darktable, dt_control_add_job(), dt_control_generic_images_job_create(), dt_control_write_sidecar_files_job_run(), DT_JOB_QUEUE_USER_FG, FALSE, and PROGRESS_NONE.
Referenced by append_run().
void dt_ctl_reload_view | ( | const char * | mode | ) |
void dt_ctl_switch_mode_to | ( | const char * | mode | ) |
References _dt_ctl_switch_mode_to(), darktable, dt_ctl_switch_mode_to(), dt_view_manager_get_current_view(), dt_view_t::module_name, and darktable_t::view_manager.
Referenced by _dt_collection_change_view_after_import(), _home_callback(), _view_map_button_press_callback(), dt_cleanup(), dt_ctl_reload_view(), dt_ctl_switch_mode_to(), dt_init(), and dt_load_from_string().
References _dt_ctl_switch_mode_to_by_view(), darktable, dt_view_manager_get_current_view(), view(), and darktable_t::view_manager.
Referenced by _current_view_cb().