Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
jobs.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2009-2010, 2014 johannes hanika.
4 Copyright (C) 2010 Henrik Andersson.
5 Copyright (C) 2012 Richard Wonka.
6 Copyright (C) 2014, 2016 Tobias Ellinghaus.
7 Copyright (C) 2015 Bruce Guenter.
8 Copyright (C) 2015-2016 Roman Lebedev.
9 Copyright (C) 2019 Edgardo Hoszowski.
10 Copyright (C) 2020 Hanno Schwalm.
11 Copyright (C) 2020 Pascal Obry.
12 Copyright (C) 2022, 2025-2026 Aurélien PIERRE.
13 Copyright (C) 2022 Martin Bařinka.
14
15 darktable is free software: you can redistribute it and/or modify
16 it under the terms of the GNU General Public License as published by
17 the Free Software Foundation, either version 3 of the License, or
18 (at your option) any later version.
19
20 darktable is distributed in the hope that it will be useful,
21 but WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 GNU General Public License for more details.
24
25 You should have received a copy of the GNU General Public License
26 along with darktable. If not, see <http://www.gnu.org/licenses/>.
27*/
28
29#pragma once
30
31#include <glib.h>
32#include <inttypes.h>
33#include <stddef.h>
34
35#define DT_CONTROL_DESCRIPTION_LEN 256
36// reserved workers
37#define DT_CTL_WORKER_RESERVED 1
38#define DT_CTL_WORKER_DARKROOM 0 // dev zoom 1
39
50
51typedef enum dt_job_queue_t
52{
53 DT_JOB_QUEUE_USER_FG = 0, // gui actions, ...
54 DT_JOB_QUEUE_SYSTEM_FG = 1, // thumbnail creation, ..., may be pushed out of the queue
55 DT_JOB_QUEUE_USER_BG = 2, // imports, ...
56 DT_JOB_QUEUE_USER_EXPORT = 3, // exports. only one of these jobs will ever be scheduled at a time
57 DT_JOB_QUEUE_SYSTEM_BG = 4, // some lua stuff that may not be pushed out of the queue, ...
60
61typedef struct _dt_job_t dt_job_t;
62
63typedef int32_t (*dt_job_execute_callback)(dt_job_t *);
65typedef void (*dt_job_destroy_callback)(void *data);
66
68dt_job_t *dt_control_job_create(dt_job_execute_callback execute, const char *msg, ...) __attribute__((format(printf, 2, 3)));
85void *dt_control_job_get_params(const dt_job_t *job);
86
87void dt_control_job_add_progress(dt_job_t *job, const char *message, gboolean cancellable);
88void dt_control_job_set_progress_message(dt_job_t *job, const char *message);
91
92struct dt_control_t;
93void dt_control_jobs_init(struct dt_control_t *control);
94void dt_control_jobs_cleanup(struct dt_control_t *control);
95
96int dt_control_add_job(struct dt_control_t *control, dt_job_queue_t queue_id, dt_job_t *job);
97int32_t dt_control_add_job_res(struct dt_control_t *s, dt_job_t *job, int32_t res);
98
100
101// Flush all non-running jobs queued in the queue matching the ID
102void dt_control_flush_jobs_queue(struct dt_control_t *control, dt_job_queue_t queue_id);
103
104#include "control/jobs/control_jobs.h"
107
108// clang-format off
109// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
110// vim: shiftwidth=2 expandtab tabstop=2 cindent
111// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
112// clang-format on
size_t params_size(dt_imageio_module_format_t *self)
Definition avif.c:624
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
float dt_aligned_pixel_simd_t __attribute__((vector_size(16), aligned(16)))
Multi-tap smudge source sample with directional jitter.
Definition darktable.h:448
static const dt_aligned_pixel_simd_t value
Definition darktable.h:501
int dt_control_add_job(struct dt_control_t *control, dt_job_queue_t queue_id, dt_job_t *job)
Definition jobs.c:405
dt_job_t void dt_control_job_dispose(dt_job_t *job)
Definition jobs.c:153
void dt_control_job_set_state_callback(dt_job_t *job, dt_job_state_change_callback cb)
Definition jobs.c:165
int32_t dt_control_add_job_res(struct dt_control_t *s, dt_job_t *job, int32_t res)
Definition jobs.c:349
void(* dt_job_state_change_callback)(dt_job_t *, dt_job_state_t state)
Definition jobs.h:64
dt_job_t * dt_control_job_create(dt_job_execute_callback execute, const char *msg,...) __attribute__((format(printf
double dt_control_job_get_progress(dt_job_t *job)
Definition jobs.c:632
void dt_control_job_cancel(dt_job_t *job)
Definition jobs.c:180
void dt_control_job_set_progress(dt_job_t *job, double value)
Definition jobs.c:626
dt_job_queue_t
Definition jobs.h:52
@ DT_JOB_QUEUE_USER_FG
Definition jobs.h:53
@ DT_JOB_QUEUE_MAX
Definition jobs.h:58
@ DT_JOB_QUEUE_USER_BG
Definition jobs.h:55
@ DT_JOB_QUEUE_USER_EXPORT
Definition jobs.h:56
@ DT_JOB_QUEUE_SYSTEM_BG
Definition jobs.h:57
@ DT_JOB_QUEUE_SYSTEM_FG
Definition jobs.h:54
int32_t(* dt_job_execute_callback)(dt_job_t *)
Definition jobs.h:63
void dt_control_job_add_progress(dt_job_t *job, const char *message, gboolean cancellable)
Definition jobs.c:612
void dt_control_job_set_progress_message(dt_job_t *job, const char *message)
Definition jobs.c:620
void(* dt_job_destroy_callback)(void *data)
Definition jobs.h:65
void dt_control_jobs_cleanup(struct dt_control_t *control)
Definition jobs.c:673
void dt_control_job_wait(dt_job_t *job)
Definition jobs.c:185
void dt_control_job_set_params_with_size(dt_job_t *job, void *params, size_t params_size, dt_job_destroy_callback callback)
Definition jobs.c:120
void dt_control_job_set_params(dt_job_t *job, void *params, dt_job_destroy_callback callback)
Definition jobs.c:112
int32_t dt_control_get_threadid()
Definition jobs.c:526
void dt_control_jobs_init(struct dt_control_t *control)
Definition jobs.c:640
void * dt_control_job_get_params(const dt_job_t *job)
Definition jobs.c:129
void dt_control_flush_jobs_queue(struct dt_control_t *control, dt_job_queue_t queue_id)
Definition jobs.c:384
dt_job_state_t
Definition jobs.h:41
@ DT_JOB_STATE_DISCARDED
Definition jobs.h:47
@ DT_JOB_STATE_INITIALIZED
Definition jobs.h:42
@ DT_JOB_STATE_DISPOSED
Definition jobs.h:48
@ DT_JOB_STATE_RUNNING
Definition jobs.h:44
@ DT_JOB_STATE_CANCELLED
Definition jobs.h:46
@ DT_JOB_STATE_FINISHED
Definition jobs.h:45
@ DT_JOB_STATE_QUEUED
Definition jobs.h:43
dt_job_state_t dt_control_job_get_state(dt_job_t *job)
Definition jobs.c:103
Definition jobs.c:51
dt_job_state_t state
Definition jobs.c:61
void * params
Definition jobs.c:53
dt_job_execute_callback execute
Definition jobs.c:52
Definition control.h:179