|
Blender
V2.93
|
#include <string.h>#include "DNA_windowmanager_types.h"#include "MEM_guardedalloc.h"#include "BLI_blenlib.h"#include "BLI_threads.h"#include "BLI_utildefines.h"#include "BKE_context.h"#include "BKE_global.h"#include "SEQ_prefetch.h"#include "WM_api.h"#include "WM_types.h"#include "wm.h"#include "wm_event_types.h"#include "PIL_time.h"Go to the source code of this file.
Classes | |
| struct | wmJob |
Functions | |
| void | WM_job_main_thread_lock_acquire (wmJob *wm_job) |
| void | WM_job_main_thread_lock_release (wmJob *wm_job) |
| static void | wm_job_main_thread_yield (wmJob *wm_job) |
| static wmJob * | wm_job_find (wmWindowManager *wm, void *owner, const int job_type) |
| wmJob * | WM_jobs_get (wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag, int job_type) |
| bool | WM_jobs_test (wmWindowManager *wm, void *owner, int job_type) |
| float | WM_jobs_progress (wmWindowManager *wm, void *owner) |
| static void | wm_jobs_update_progress_bars (wmWindowManager *wm) |
| double | WM_jobs_starttime (wmWindowManager *wm, void *owner) |
| char * | WM_jobs_name (wmWindowManager *wm, void *owner) |
| void * | WM_jobs_customdata (wmWindowManager *wm, void *owner) |
| void * | WM_jobs_customdata_from_type (wmWindowManager *wm, int job_type) |
| bool | WM_jobs_is_running (wmJob *wm_job) |
| bool | WM_jobs_is_stopped (wmWindowManager *wm, void *owner) |
| void * | WM_jobs_customdata_get (wmJob *wm_job) |
| void | WM_jobs_customdata_set (wmJob *wm_job, void *customdata, void(*free)(void *)) |
| void | WM_jobs_timer (wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote) |
| void | WM_jobs_delay_start (wmJob *wm_job, double delay_time) |
| void | WM_jobs_callbacks (wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *)) |
| static void * | do_job_thread (void *job_v) |
| static void | wm_jobs_test_suspend_stop (wmWindowManager *wm, wmJob *test) |
| void | WM_jobs_start (wmWindowManager *wm, wmJob *wm_job) |
| static void | wm_job_free (wmWindowManager *wm, wmJob *wm_job) |
| static void | wm_jobs_kill_job (wmWindowManager *wm, wmJob *wm_job) |
| void | WM_jobs_kill_all (wmWindowManager *wm) |
| void | WM_jobs_kill_all_except (wmWindowManager *wm, void *owner) |
| void | WM_jobs_kill_type (struct wmWindowManager *wm, void *owner, int job_type) |
| void | WM_jobs_stop (wmWindowManager *wm, void *owner, void *startjob) |
| void | WM_jobs_kill (wmWindowManager *wm, void *owner, void(*startjob)(void *, short int *, short int *, float *)) |
| void | wm_jobs_timer_end (wmWindowManager *wm, wmTimer *wt) |
| void | wm_jobs_timer (wmWindowManager *wm, wmTimer *wt) |
| bool | WM_jobs_has_running (wmWindowManager *wm) |
Threaded job manager (high level job access).
Definition in file wm_jobs.c.
|
static |
Definition at line 384 of file wm_jobs.c.
References BLI_thread_put_thread_on_fast_node(), wmJob::do_update, NULL, wmJob::progress, wmJob::ready, wmJob::run_customdata, wmJob::startjob, and wmJob::stop.
Referenced by WM_jobs_start().
|
static |
Finds if type or owner, compare for it, otherwise any matching job.
Definition at line 161 of file wm_jobs.c.
References wmJob::job_type, wmWindowManager::jobs, LISTBASE_FOREACH, NULL, and wmJob::owner.
Referenced by WM_jobs_customdata(), WM_jobs_customdata_from_type(), WM_jobs_get(), WM_jobs_is_stopped(), WM_jobs_name(), WM_jobs_progress(), and WM_jobs_starttime().
|
static |
Definition at line 504 of file wm_jobs.c.
References BLI_remlink(), BLI_ticket_mutex_free(), wmWindowManager::jobs, wmJob::main_thread_mutex, MEM_freeN, and WM_job_main_thread_lock_release().
Referenced by wm_jobs_kill_job(), and wm_jobs_timer().
| void WM_job_main_thread_lock_acquire | ( | wmJob * | wm_job | ) |
Definition at line 140 of file wm_jobs.c.
References BLI_ticket_mutex_lock(), and wmJob::main_thread_mutex.
Referenced by WM_jobs_get(), wm_jobs_kill_job(), and wm_jobs_timer().
| void WM_job_main_thread_lock_release | ( | wmJob * | wm_job | ) |
Definition at line 145 of file wm_jobs.c.
References BLI_ticket_mutex_unlock(), and wmJob::main_thread_mutex.
Referenced by wm_job_free(), wm_jobs_kill_job(), and wm_jobs_timer().
|
static |
Definition at line 150 of file wm_jobs.c.
References BLI_ticket_mutex_lock(), BLI_ticket_mutex_unlock(), and wmJob::main_thread_mutex.
Referenced by wm_jobs_timer().
| void WM_jobs_callbacks | ( | wmJob * | wm_job, |
| wm_jobs_start_callback | startjob, | ||
| void(*)(void *) | initjob, | ||
| void(*)(void *) | update, | ||
| void(*)(void *) | endjob | ||
| ) |
Definition at line 372 of file wm_jobs.c.
References wmJob::endjob, wmJob::initjob, wmJob::startjob, update(), and wmJob::update.
Referenced by ABC_export(), ABC_import(), bake_invoke(), clip_rebuild_proxy_exec(), clip_start_prefetch_job(), drw_deferred_shader_add(), dynamicpaint_bake_exec(), ED_node_composite_job(), ED_preview_icon_job(), ED_preview_shader_job(), ED_seq_proxy_job_get(), EEVEE_lightbake_job_create(), filelist_readjob_start(), fluid_bake_invoke(), fluid_free_exec(), fsmenu_bookmark_validate_job_start(), gpencil_trace_image_exec(), lineart_gpencil_bake_common(), multiresbake_image_exec(), ocean_bake_exec(), ptcache_bake_invoke(), quadriflow_remesh_exec(), screen_render_invoke(), sequencer_preview_add_sound(), solve_camera_invoke(), track_markers(), ui_icon_ensure_deferred(), and USD_export().
| void* WM_jobs_customdata | ( | wmWindowManager * | wm, |
| void * | owner | ||
| ) |
Definition at line 303 of file wm_jobs.c.
References NULL, wmJob::owner, wm_job_find(), WM_JOB_TYPE_ANY, and WM_jobs_customdata_get().
Referenced by ED_preview_draw().
| void* WM_jobs_customdata_from_type | ( | wmWindowManager * | wm, |
| int | job_type | ||
| ) |
Definition at line 314 of file wm_jobs.c.
References wmJob::job_type, NULL, wm_job_find(), and WM_jobs_customdata_get().
Referenced by ED_render_job_get_current_scene(), and ED_render_job_get_scene().
| void* WM_jobs_customdata_get | ( | wmJob * | wm_job | ) |
Definition at line 336 of file wm_jobs.c.
References wmJob::customdata, and wmJob::run_customdata.
Referenced by drw_deferred_shader_add(), DRW_deferred_shader_remove(), ED_preview_icon_job(), ED_seq_proxy_job_get(), EEVEE_lightbake_job_create(), sequencer_preview_add_sound(), WM_jobs_customdata(), and WM_jobs_customdata_from_type().
| void WM_jobs_customdata_set | ( | wmJob * | wm_job, |
| void * | customdata, | ||
| void(*)(void *) | free | ||
| ) |
Definition at line 344 of file wm_jobs.c.
References wmJob::customdata, free(), wmJob::free, wmJob::running, and wmJob::stop.
Referenced by ABC_export(), ABC_import(), bake_invoke(), clip_rebuild_proxy_exec(), clip_start_prefetch_job(), drw_deferred_shader_add(), dynamicpaint_bake_exec(), ED_node_composite_job(), ED_preview_icon_job(), ED_preview_shader_job(), ED_seq_proxy_job_get(), EEVEE_lightbake_job_create(), filelist_readjob_start(), fluid_bake_invoke(), fluid_free_exec(), fsmenu_bookmark_validate_job_start(), gpencil_trace_image_exec(), lineart_gpencil_bake_common(), multiresbake_image_exec(), ocean_bake_exec(), ptcache_bake_invoke(), quadriflow_remesh_exec(), screen_render_invoke(), sequencer_preview_add_sound(), solve_camera_invoke(), track_markers(), ui_icon_ensure_deferred(), and USD_export().
Definition at line 367 of file wm_jobs.c.
References wmJob::start_delay_time.
Referenced by drw_deferred_shader_add(), ED_preview_icon_job(), and screen_render_invoke().
| wmJob* WM_jobs_get | ( | wmWindowManager * | wm, |
| wmWindow * | win, | ||
| void * | owner, | ||
| const char * | name, | ||
| int | flag, | ||
| int | job_type | ||
| ) |
Definition at line 196 of file wm_jobs.c.
References BLI_addtail(), BLI_assert, BLI_strncpy(), BLI_ticket_mutex_alloc(), wmJob::flag, wmJob::job_type, wmWindowManager::jobs, wmJob::main_thread_mutex, MEM_callocN, wmJob::name, NULL, wmJob::owner, wmJob::win, wm_job_find(), WM_job_main_thread_lock_acquire(), and WM_JOB_TYPE_ANY.
Referenced by ABC_export(), ABC_import(), bake_invoke(), clip_rebuild_proxy_exec(), clip_start_prefetch_job(), drw_deferred_shader_add(), DRW_deferred_shader_remove(), dynamicpaint_bake_exec(), ED_node_composite_job(), ED_preview_icon_job(), ED_preview_shader_job(), ED_seq_proxy_wm_job_get(), EEVEE_lightbake_job_create(), filelist_readjob_start(), fluid_bake_invoke(), fluid_free_exec(), fsmenu_bookmark_validate_job_start(), gpencil_trace_image_exec(), lineart_gpencil_bake_common(), multiresbake_image_exec(), ocean_bake_exec(), ptcache_bake_invoke(), quadriflow_remesh_exec(), screen_render_invoke(), sequencer_preview_add_sound(), solve_camera_invoke(), track_markers(), ui_icon_ensure_deferred(), and USD_export().
| bool WM_jobs_has_running | ( | wmWindowManager * | wm | ) |
Definition at line 705 of file wm_jobs.c.
References wmWindowManager::jobs, LISTBASE_FOREACH, and wmJob::running.
| bool WM_jobs_is_running | ( | wmJob * | wm_job | ) |
Definition at line 325 of file wm_jobs.c.
References wmJob::running.
Referenced by seq_build_proxy(), seq_proxy_build_job(), and sequencer_preview_add_sound().
| bool WM_jobs_is_stopped | ( | wmWindowManager * | wm, |
| void * | owner | ||
| ) |
Definition at line 330 of file wm_jobs.c.
References wmJob::owner, wmJob::stop, wm_job_find(), and WM_JOB_TYPE_ANY.
Referenced by uiTemplateRunningJobs().
| void WM_jobs_kill | ( | wmWindowManager * | wm, |
| void * | owner, | ||
| void(*)(void *, short int *, short int *, float *) | startjob | ||
| ) |
Definition at line 596 of file wm_jobs.c.
References wmWindowManager::jobs, LISTBASE_FOREACH_MUTABLE, wmJob::owner, wmJob::startjob, and wm_jobs_kill_job().
Referenced by ED_preview_kill_jobs().
| void WM_jobs_kill_all | ( | wmWindowManager * | wm | ) |
Definition at line 550 of file wm_jobs.c.
References ListBase::first, wmWindowManager::jobs, SEQ_prefetch_stop_all(), and wm_jobs_kill_job().
Referenced by ed_undo_step_pre(), WM_exit_ex(), and wm_window_match_init().
| void WM_jobs_kill_all_except | ( | wmWindowManager * | wm, |
| void * | owner | ||
| ) |
Definition at line 563 of file wm_jobs.c.
References wmWindowManager::jobs, LISTBASE_FOREACH_MUTABLE, wmJob::owner, and wm_jobs_kill_job().
Referenced by screen_opengl_render_init(), and screen_render_invoke().
|
static |
Definition at line 513 of file wm_jobs.c.
References BLI_threadpool_end(), wmJob::customdata, wmJob::endjob, wmJob::flag, wmJob::free, wmJob::run_customdata, wmJob::run_free, wmJob::running, wmJob::stop, wmJob::threads, wmJob::win, WM_event_remove_timer(), wm_job_free(), WM_job_main_thread_lock_acquire(), WM_job_main_thread_lock_release(), WM_JOB_PROGRESS, wm_jobs_update_progress_bars(), and wmJob::wt.
Referenced by WM_jobs_kill(), WM_jobs_kill_all(), WM_jobs_kill_all_except(), WM_jobs_kill_type(), and wm_jobs_timer_end().
| void WM_jobs_kill_type | ( | struct wmWindowManager * | wm, |
| void * | owner, | ||
| int | job_type | ||
| ) |
Definition at line 572 of file wm_jobs.c.
References ELEM, wmJob::job_type, wmWindowManager::jobs, LISTBASE_FOREACH_MUTABLE, wmJob::owner, WM_JOB_TYPE_ANY, and wm_jobs_kill_job().
Referenced by ED_scene_delete(), ED_view3d_stop_render_preview(), filelist_readjob_stop(), fsmenu_bookmark_validate_job_stop(), light_cache_bake_cancel(), light_cache_free_exec(), ptcache_bake_cancel(), reload_exec(), screen_render_cancel(), sequencer_stop_running_jobs(), and ui_studiolight_kill_icon_preview_job().
| char* WM_jobs_name | ( | wmWindowManager * | wm, |
| void * | owner | ||
| ) |
Definition at line 292 of file wm_jobs.c.
References wmJob::name, NULL, wmJob::owner, wm_job_find(), and WM_JOB_TYPE_ANY.
Referenced by uiTemplateRunningJobs().
| float WM_jobs_progress | ( | wmWindowManager * | wm, |
| void * | owner | ||
| ) |
Definition at line 239 of file wm_jobs.c.
References wmJob::flag, wmJob::owner, wmJob::progress, wm_job_find(), WM_JOB_PROGRESS, and WM_JOB_TYPE_ANY.
Referenced by progress_tooltip_func(), and uiTemplateRunningJobs().
| void WM_jobs_start | ( | wmWindowManager * | wm, |
| wmJob * | wm_job | ||
| ) |
if job running, the same owner gave it a new job. if different owner starts existing startjob, it suspends itself
Definition at line 450 of file wm_jobs.c.
References BLI_threadpool_init(), BLI_threadpool_insert(), wmJob::customdata, do_job_thread(), wmJob::free, wmJob::initjob, NULL, PIL_check_seconds_timer(), wmJob::progress, wmJob::ready, wmJob::run_customdata, wmJob::run_free, wmJob::running, wmJob::start_delay_time, wmJob::start_time, wmJob::startjob, wmJob::stop, wmJob::suspended, wmJob::threads, TIMERJOBS, wmJob::timestep, wmTimer::timestep, wmJob::win, WM_event_add_timer(), WM_event_remove_timer(), wm_jobs_test_suspend_stop(), and wmJob::wt.
Referenced by ABC_export(), ABC_import(), bake_invoke(), clip_rebuild_proxy_exec(), clip_start_prefetch_job(), drw_deferred_shader_add(), dynamicpaint_bake_exec(), ED_node_composite_job(), ED_preview_icon_job(), ED_preview_shader_job(), filelist_readjob_start(), fluid_bake_invoke(), fluid_free_exec(), fsmenu_bookmark_validate_job_start(), gpencil_trace_image_exec(), light_cache_bake_invoke(), lineart_gpencil_bake_common(), multiresbake_image_exec(), ocean_bake_exec(), ptcache_bake_invoke(), quadriflow_remesh_exec(), screen_render_invoke(), seq_build_proxy(), seq_proxy_build_job(), sequencer_preview_add_sound(), solve_camera_invoke(), track_markers(), ui_icon_ensure_deferred(), USD_export(), and wm_jobs_timer().
| double WM_jobs_starttime | ( | wmWindowManager * | wm, |
| void * | owner | ||
| ) |
Definition at line 281 of file wm_jobs.c.
References wmJob::flag, wmJob::owner, wmJob::start_time, wm_job_find(), WM_JOB_PROGRESS, and WM_JOB_TYPE_ANY.
Referenced by progress_tooltip_func().
| void WM_jobs_stop | ( | wmWindowManager * | wm, |
| void * | owner, | ||
| void * | startjob | ||
| ) |
Definition at line 584 of file wm_jobs.c.
References wmWindowManager::jobs, LISTBASE_FOREACH, wmJob::owner, wmJob::running, wmJob::startjob, and wmJob::stop.
Referenced by do_running_jobs().
| bool WM_jobs_test | ( | wmWindowManager * | wm, |
| void * | owner, | ||
| int | job_type | ||
| ) |
Definition at line 223 of file wm_jobs.c.
References ELEM, wmJob::job_type, wmWindowManager::jobs, LISTBASE_FOREACH, wmJob::owner, and WM_JOB_TYPE_ANY.
Referenced by bake_invoke(), bake_modal(), clip_prefetch_modal(), DRW_deferred_shader_remove(), ED_preview_draw(), ED_undo_operator_repeat(), EEVEE_lightbake_job_create(), filelist_readjob_running(), fluid_bake_modal(), light_cache_bake_modal(), lineart_gpencil_bake_strokes_commom_modal(), objects_bake_render_modal(), ptcache_bake_modal(), screen_opengl_render_init(), screen_render_invoke(), screen_render_modal(), solve_camera_invoke(), solve_camera_modal(), track_markers(), track_markers_modal(), uiTemplateRunningJobs(), and WM_operator_check_ui_enabled().
|
static |
Definition at line 396 of file wm_jobs.c.
References wmJob::flag, wmWindowManager::jobs, LISTBASE_FOREACH, wmJob::name, wmJob::running, wmJob::start_delay_time, wmJob::startjob, wmJob::stop, wmJob::suspended, WM_JOB_EXCL_RENDER, and WM_JOB_PRIORITY.
Referenced by WM_jobs_start().
Definition at line 360 of file wm_jobs.c.
References wmJob::endnote, wmJob::note, and wmJob::timestep.
Referenced by ABC_export(), ABC_import(), bake_invoke(), clip_rebuild_proxy_exec(), clip_start_prefetch_job(), drw_deferred_shader_add(), dynamicpaint_bake_exec(), ED_node_composite_job(), ED_preview_icon_job(), ED_preview_shader_job(), ED_seq_proxy_job_get(), EEVEE_lightbake_job_create(), filelist_readjob_start(), fluid_bake_invoke(), fluid_free_exec(), fsmenu_bookmark_validate_job_start(), gpencil_trace_image_exec(), lineart_gpencil_bake_common(), multiresbake_image_exec(), ocean_bake_exec(), ptcache_bake_invoke(), quadriflow_remesh_exec(), screen_render_invoke(), sequencer_preview_add_sound(), solve_camera_invoke(), track_markers(), ui_icon_ensure_deferred(), and USD_export().
| void wm_jobs_timer | ( | wmWindowManager * | wm, |
| wmTimer * | wt | ||
| ) |
Definition at line 619 of file wm_jobs.c.
References BLI_threadpool_end(), wmJob::customdata, wmJob::do_update, wmJob::endjob, wmJob::endnote, ListBase::first, wmJob::flag, G, G_DEBUG_JOBS, wmWindowManager::jobs, LISTBASE_FOREACH_MUTABLE, wmJob::name, NC_WM, ND_JOB, wmJob::note, NULL, PIL_check_seconds_timer(), wmJob::ready, wmJob::run_customdata, wmJob::run_free, wmJob::running, wmJob::start_time, wmJob::stop, wmJob::suspended, wmJob::threads, wmJob::update, wmJob::win, WM_event_add_notifier_ex(), WM_event_remove_timer(), wm_job_free(), WM_job_main_thread_lock_acquire(), WM_job_main_thread_lock_release(), wm_job_main_thread_yield(), WM_JOB_PROGRESS, WM_jobs_start(), wm_jobs_update_progress_bars(), and wmJob::wt.
Referenced by wm_window_timer().
| void wm_jobs_timer_end | ( | wmWindowManager * | wm, |
| wmTimer * | wt | ||
| ) |
Definition at line 608 of file wm_jobs.c.
References wmWindowManager::jobs, LISTBASE_FOREACH, wm_jobs_kill_job(), and wmJob::wt.
Referenced by wm_window_free().
|
static |
Definition at line 250 of file wm_jobs.c.
References float(), wmWindowManager::jobs, LISTBASE_FOREACH, wmJob::progress, wmJob::win, wmWindowManager::windows, WM_JOB_PROGRESS, WM_progress_clear(), and WM_progress_set().
Referenced by wm_jobs_kill_job(), and wm_jobs_timer().