Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
jobs.c File Reference
#include "control/jobs.h"
#include "control/control.h"
+ Include dependency graph for jobs.c:

Data Structures

struct  worker_thread_parameters_t
 
struct  _dt_job_t
 

Macros

#define DT_CONTROL_FG_PRIORITY   4
 
#define DT_CONTROL_MAX_JOBS   840
 

Typedefs

typedef struct worker_thread_parameters_t worker_thread_parameters_t
 
typedef struct _dt_job_t _dt_job_t
 

Functions

static int dt_control_job_equal (_dt_job_t *j1, _dt_job_t *j2)
 
static void dt_control_job_set_state (_dt_job_t *job, dt_job_state_t state)
 
dt_job_state_t dt_control_job_get_state (_dt_job_t *job)
 
void dt_control_job_set_params (_dt_job_t *job, void *params, dt_job_destroy_callback callback)
 
void dt_control_job_set_params_with_size (dt_job_t *job, void *params, size_t params_size, dt_job_destroy_callback callback)
 
voiddt_control_job_get_params (const _dt_job_t *job)
 
dt_job_tdt_control_job_create (dt_job_execute_callback execute, const char *msg,...)
 
void dt_control_job_dispose (_dt_job_t *job)
 
void dt_control_job_set_state_callback (_dt_job_t *job, dt_job_state_change_callback cb)
 
static void dt_control_job_print (_dt_job_t *job)
 
void dt_control_job_cancel (_dt_job_t *job)
 
void dt_control_job_wait (_dt_job_t *job)
 
static int32_t dt_control_run_job_res (dt_control_t *control, int32_t res)
 
static _dt_job_tdt_control_schedule_job (dt_control_t *control)
 
static void dt_control_job_execute (_dt_job_t *job)
 
static int32_t dt_control_run_job (dt_control_t *control)
 
int32_t dt_control_add_job_res (dt_control_t *control, _dt_job_t *job, int32_t res)
 
int dt_control_add_job (dt_control_t *control, dt_job_queue_t queue_id, _dt_job_t *job)
 
int32_t dt_control_get_threadid ()
 
static int32_t dt_control_get_threadid_res ()
 
static voiddt_control_work_res (void *ptr)
 
static voiddt_control_worker_kicker (void *ptr)
 
static voiddt_control_work (void *ptr)
 
void dt_control_job_add_progress (dt_job_t *job, const char *message, gboolean cancellable)
 
void dt_control_job_set_progress_message (dt_job_t *job, const char *message)
 
void dt_control_job_set_progress (dt_job_t *job, double value)
 
double dt_control_job_get_progress (dt_job_t *job)
 
void dt_control_jobs_init (dt_control_t *control)
 
void dt_control_jobs_cleanup (dt_control_t *control)
 

Variables

static __thread int threadid = -1
 

Macro Definition Documentation

◆ DT_CONTROL_FG_PRIORITY

#define DT_CONTROL_FG_PRIORITY   4

◆ DT_CONTROL_MAX_JOBS

#define DT_CONTROL_MAX_JOBS   840

Typedef Documentation

◆ _dt_job_t

typedef struct _dt_job_t _dt_job_t

◆ worker_thread_parameters_t

Function Documentation

◆ dt_control_add_job()

int dt_control_add_job ( dt_control_t control,
dt_job_queue_t  queue_id,
_dt_job_t job 
)

◆ dt_control_add_job_res()

◆ dt_control_get_threadid()

◆ dt_control_get_threadid_res()

static int32_t dt_control_get_threadid_res ( )
static

References DT_CTL_WORKER_RESERVED, and threadid.

Referenced by dt_control_work_res().

◆ dt_control_job_add_progress()

◆ dt_control_job_cancel()

void dt_control_job_cancel ( dt_job_t job)

◆ dt_control_job_create()

◆ dt_control_job_dispose()

◆ dt_control_job_equal()

static int dt_control_job_equal ( _dt_job_t j1,
_dt_job_t j2 
)
inlinestatic

check if two jobs are to be considered equal. a simple memcmp won't work since the mutexes probably won't match we don't want to compare result, priority or state since these will change during the course of processing. NOTE: maybe allow to pass a comparator for params.

References _dt_job_t::description, _dt_job_t::execute, _dt_job_t::params, _dt_job_t::params_size, _dt_job_t::queue, and _dt_job_t::state_changed_cb.

Referenced by dt_control_add_job().

◆ dt_control_job_execute()

◆ dt_control_job_get_params()

◆ dt_control_job_get_progress()

double dt_control_job_get_progress ( dt_job_t job)

◆ dt_control_job_get_state()

◆ dt_control_job_print()

◆ dt_control_job_set_params()

◆ dt_control_job_set_params_with_size()

void dt_control_job_set_params_with_size ( dt_job_t job,
void params,
size_t  params_size,
dt_job_destroy_callback  callback 
)

set job params (with size params_size) and a callback to destroy those params. NOTE: in most cases you want dt_control_job_set_params()

References dt_control_job_get_state(), DT_JOB_STATE_INITIALIZED, _dt_job_t::params, _dt_job_t::params_destroy, _dt_job_t::params_size, and params_size().

◆ dt_control_job_set_progress()

◆ dt_control_job_set_progress_message()

◆ dt_control_job_set_state()

◆ dt_control_job_set_state_callback()

void dt_control_job_set_state_callback ( dt_job_t job,
dt_job_state_change_callback  cb 
)

setup a state callback for job.

References dt_control_job_get_state(), DT_JOB_STATE_INITIALIZED, and _dt_job_t::state_changed_cb.

◆ dt_control_job_wait()

◆ dt_control_jobs_cleanup()

◆ dt_control_jobs_init()

◆ dt_control_run_job()

◆ dt_control_run_job_res()

◆ dt_control_schedule_job()

◆ dt_control_work()

◆ dt_control_work_res()

◆ dt_control_worker_kicker()

Variable Documentation

◆ threadid