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-2020 darktable developers.
4
5 darktable is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 darktable is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with darktable. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20
21#include <glib.h>
22#include <inttypes.h>
23#include <stddef.h>
24
25#define DT_CONTROL_DESCRIPTION_LEN 256
26// reserved workers
27#define DT_CTL_WORKER_RESERVED 2
28#define DT_CTL_WORKER_DARKROOM_THUMB 0 // dev zoom 1
29#define DT_CTL_WORKER_DARKROOM_MAIN 1 // dev zoom fill
30
41
42typedef enum dt_job_queue_t
43{
44 DT_JOB_QUEUE_USER_FG = 0, // gui actions, ...
45 DT_JOB_QUEUE_SYSTEM_FG = 1, // thumbnail creation, ..., may be pushed out of the queue
46 DT_JOB_QUEUE_USER_BG = 2, // imports, ...
47 DT_JOB_QUEUE_USER_EXPORT = 3, // exports. only one of these jobs will ever be scheduled at a time
48 DT_JOB_QUEUE_SYSTEM_BG = 4, // some lua stuff that may not be pushed out of the queue, ...
51
52typedef struct _dt_job_t dt_job_t;
53
54typedef int32_t (*dt_job_execute_callback)(dt_job_t *);
56typedef void (*dt_job_destroy_callback)(void *data);
57
59dt_job_t *dt_control_job_create(dt_job_execute_callback execute, const char *msg, ...) __attribute__((format(printf, 2, 3)));
76void *dt_control_job_get_params(const dt_job_t *job);
77
78void dt_control_job_add_progress(dt_job_t *job, const char *message, gboolean cancellable);
79void dt_control_job_set_progress_message(dt_job_t *job, const char *message);
80void dt_control_job_set_progress(dt_job_t *job, double value);
82
83struct dt_control_t;
84void dt_control_jobs_init(struct dt_control_t *control);
85void dt_control_jobs_cleanup(struct dt_control_t *control);
86
87int dt_control_add_job(struct dt_control_t *control, dt_job_queue_t queue_id, dt_job_t *job);
88int32_t dt_control_add_job_res(struct dt_control_t *s, dt_job_t *job, int32_t res);
89
91
92#include "control/jobs/control_jobs.h"
96
97// clang-format off
98// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
99// vim: shiftwidth=2 expandtab tabstop=2 cindent
100// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
101// clang-format on
size_t params_size(dt_imageio_module_format_t *self)
Definition avif.c:615
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
int dt_control_add_job(struct dt_control_t *control, dt_job_queue_t queue_id, dt_job_t *job)
Definition jobs.c:380
dt_job_t void dt_control_job_dispose(dt_job_t *job)
Definition jobs.c:148
void dt_control_job_set_state_callback(dt_job_t *job, dt_job_state_change_callback cb)
Definition jobs.c:160
int32_t dt_control_add_job_res(struct dt_control_t *s, dt_job_t *job, int32_t res)
Definition jobs.c:345
void(* dt_job_state_change_callback)(dt_job_t *, dt_job_state_t state)
Definition jobs.h:55
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:607
void dt_control_job_cancel(dt_job_t *job)
Definition jobs.c:175
void dt_control_job_set_progress(dt_job_t *job, double value)
Definition jobs.c:601
dt_job_queue_t
Definition jobs.h:43
@ DT_JOB_QUEUE_USER_FG
Definition jobs.h:44
@ DT_JOB_QUEUE_MAX
Definition jobs.h:49
@ DT_JOB_QUEUE_USER_BG
Definition jobs.h:46
@ DT_JOB_QUEUE_USER_EXPORT
Definition jobs.h:47
@ DT_JOB_QUEUE_SYSTEM_BG
Definition jobs.h:48
@ DT_JOB_QUEUE_SYSTEM_FG
Definition jobs.h:45
int32_t(* dt_job_execute_callback)(dt_job_t *)
Definition jobs.h:54
void dt_control_job_add_progress(dt_job_t *job, const char *message, gboolean cancellable)
Definition jobs.c:587
void dt_control_job_set_progress_message(dt_job_t *job, const char *message)
Definition jobs.c:595
void(* dt_job_destroy_callback)(void *data)
Definition jobs.h:56
void dt_control_jobs_cleanup(struct dt_control_t *control)
Definition jobs.c:648
void dt_control_job_wait(dt_job_t *job)
Definition jobs.c:180
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:115
void dt_control_job_set_params(dt_job_t *job, void *params, dt_job_destroy_callback callback)
Definition jobs.c:107
int32_t dt_control_get_threadid()
Definition jobs.c:501
void dt_control_jobs_init(struct dt_control_t *control)
Definition jobs.c:615
void * dt_control_job_get_params(const dt_job_t *job)
Definition jobs.c:124
dt_job_state_t
Definition jobs.h:32
@ DT_JOB_STATE_DISCARDED
Definition jobs.h:38
@ DT_JOB_STATE_INITIALIZED
Definition jobs.h:33
@ DT_JOB_STATE_DISPOSED
Definition jobs.h:39
@ DT_JOB_STATE_RUNNING
Definition jobs.h:35
@ DT_JOB_STATE_CANCELLED
Definition jobs.h:37
@ DT_JOB_STATE_FINISHED
Definition jobs.h:36
@ DT_JOB_STATE_QUEUED
Definition jobs.h:34
dt_job_state_t dt_control_job_get_state(dt_job_t *job)
Definition jobs.c:98
Definition jobs.c:46
dt_job_state_t state
Definition jobs.c:56
void * params
Definition jobs.c:48
dt_job_execute_callback execute
Definition jobs.c:47
Definition control.h:129
static float __attribute__((__unused__))
Definition thinplate.c:39