Blender
V3.3
|
#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 |
Threaded job manager (high level job access).
Definition in file wm_jobs.c.
Definition at line 376 of file wm_jobs.c.
References wmJob::do_update, NULL, wmJob::progress, wmJob::ready, wmJob::run_customdata, wmJob::startjob, and wmJob::stop.
Referenced by WM_jobs_start().
Definition at line 491 of file wm_jobs.c.
References BLI_assert_msg, BLI_thread_is_main(), wmJob::canceled, wmJob::completed, wmJob::endjob, G, wmJob::ready, wmJob::run_customdata, wmJob::stop, and void.
Referenced by wm_jobs_kill_job(), and wm_jobs_timer().
|
static |
Finds if type or owner, compare for it, otherwise any matching job.
Definition at line 155 of file wm_jobs.c.
References wmJob::job_type, wmWindowManager::jobs, LISTBASE_FOREACH, NULL, and wmJob::owner.
Referenced by 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 509 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().
Definition at line 134 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().
Definition at line 139 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().
Definition at line 144 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 351 of file wm_jobs.c.
References wmJob::endjob, wmJob::initjob, NULL, wmJob::startjob, update(), and WM_jobs_callbacks_ex().
Referenced by ABC_export(), ABC_import(), clip_rebuild_proxy_exec(), clip_start_prefetch_job(), drw_deferred_shader_add(), dynamicpaint_bake_exec(), ED_preview_icon_job(), ED_preview_shader_job(), ED_seq_proxy_job_get(), EEVEE_lightbake_job_create(), PreviewLoadJob::ensure_job(), 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(), sequencer_thumbnail_init_job(), solve_camera_invoke(), start_audio_video_job(), track_markers(), ui_icon_ensure_deferred(), USD_export(), and USD_import().
void WM_jobs_callbacks_ex | ( | wmJob * | wm_job, |
wm_jobs_start_callback | startjob, | ||
void(*)(void *) | initjob, | ||
void(*)(void *) | update, | ||
void(*)(void *) | endjob, | ||
void(*)(void *) | completed, | ||
void(*)(void *) | canceled | ||
) |
Definition at line 360 of file wm_jobs.c.
References wmJob::canceled, wmJob::completed, wmJob::endjob, wmJob::initjob, wmJob::startjob, update(), and wmJob::update.
Referenced by bake_invoke(), ED_node_composite_job(), and WM_jobs_callbacks().
void* WM_jobs_customdata_from_type | ( | wmWindowManager * | wm, |
const void * | owner, | ||
int | job_type | ||
) |
Definition at line 293 of file wm_jobs.c.
References wmJob::job_type, NULL, wmJob::owner, wm_job_find(), and WM_jobs_customdata_get().
Referenced by DRW_deferred_shader_remove(), ED_preview_draw(), ED_render_job_get_current_scene(), and ED_render_job_get_scene().
Definition at line 315 of file wm_jobs.c.
References wmJob::customdata, and wmJob::run_customdata.
Referenced by drw_deferred_shader_add(), ED_preview_icon_job(), ED_seq_proxy_job_get(), EEVEE_lightbake_job_create(), PreviewLoadJob::ensure_job(), sequencer_preview_add_sound(), sequencer_thumbnail_init_job(), and WM_jobs_customdata_from_type().
Definition at line 323 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(), PreviewLoadJob::ensure_job(), 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(), sequencer_thumbnail_init_job(), solve_camera_invoke(), start_audio_video_job(), track_markers(), ui_icon_ensure_deferred(), USD_export(), and USD_import().
Definition at line 346 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 | ( | struct wmWindowManager * | wm, |
struct wmWindow * | win, | ||
const void * | owner, | ||
const char * | name, | ||
int | flag, | ||
int | job_type | ||
) |
Definition at line 184 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(), 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(), PreviewLoadJob::ensure_job(), 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(), sequencer_thumbnail_init_job(), solve_camera_invoke(), start_audio_video_job(), track_markers(), ui_icon_ensure_deferred(), USD_export(), and USD_import().
bool WM_jobs_has_running | ( | const wmWindowManager * | wm | ) |
Definition at line 699 of file wm_jobs.c.
References wmWindowManager::jobs, LISTBASE_FOREACH, and wmJob::running.
bool WM_jobs_has_running_type | ( | const struct wmWindowManager * | wm, |
int | job_type | ||
) |
Definition at line 710 of file wm_jobs.c.
References wmJob::job_type, wmWindowManager::jobs, LISTBASE_FOREACH, and wmJob::running.
Referenced by bpy_app_is_job_running().
Definition at line 304 of file wm_jobs.c.
References wmJob::running.
Referenced by PreviewLoadJob::ensure_job(), seq_build_proxy(), seq_proxy_build_job(), sequencer_preview_add_sound(), and sequencer_thumbnail_init_job().
bool WM_jobs_is_stopped | ( | const wmWindowManager * | wm, |
const void * | owner | ||
) |
Definition at line 309 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 | ( | struct wmWindowManager * | wm, |
void * | owner, | ||
void(*)(void *, short int *, short int *, float *) | startjob | ||
) |
Actually terminate thread and job timer.
Definition at line 594 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 | ( | struct wmWindowManager * | wm | ) |
Wait until every job ended.
Definition at line 551 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 | ( | struct wmWindowManager * | wm, |
const void * | owner | ||
) |
Wait until every job ended, except for one owner (used in undo to keep screen job alive).
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 518 of file wm_jobs.c.
References BLI_threadpool_end(), wmJob::customdata, wmJob::flag, wmJob::free, wmJob::run_customdata, wmJob::run_free, wmJob::running, wmJob::stop, wmJob::threads, wmJob::win, WM_event_remove_timer(), wm_job_end(), 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, |
const 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().
const char* WM_jobs_name | ( | const wmWindowManager * | wm, |
const void * | owner | ||
) |
Definition at line 282 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 | ( | const wmWindowManager * | wm, |
const void * | owner | ||
) |
Definition at line 230 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 | ( | struct wmWindowManager * | wm, |
struct 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 437 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(), PreviewLoadJob::ensure_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(), sequencer_thumbnail_init_job(), solve_camera_invoke(), start_audio_video_job(), track_markers(), ui_icon_ensure_deferred(), USD_export(), USD_import(), and wm_jobs_timer().
double WM_jobs_starttime | ( | const wmWindowManager * | wm, |
const void * | owner | ||
) |
Definition at line 271 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 | ( | struct wmWindowManager * | wm, |
const void * | owner, | ||
void * | startjob | ||
) |
Signal job(s) from this owner or callback to stop, timer is required to get handled.
Definition at line 583 of file wm_jobs.c.
References wmWindowManager::jobs, LISTBASE_FOREACH, wmJob::owner, wmJob::running, wmJob::startjob, and wmJob::stop.
Referenced by do_running_jobs(), and sequencer_thumbnail_start_job_if_necessary().
bool WM_jobs_test | ( | const wmWindowManager * | wm, |
const void * | owner, | ||
int | job_type | ||
) |
Definition at line 214 of file wm_jobs.c.
References ELEM, wmJob::job_type, wmWindowManager::jobs, LISTBASE_FOREACH, wmJob::owner, WM_JOB_PROGRESS, and WM_JOB_TYPE_ANY.
Referenced by bake_invoke(), bake_modal(), clip_prefetch_modal(), 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 387 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 339 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(), PreviewLoadJob::ensure_job(), 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(), sequencer_thumbnail_init_job(), solve_camera_invoke(), start_audio_video_job(), track_markers(), ui_icon_ensure_deferred(), USD_export(), and USD_import().
void wm_jobs_timer | ( | wmWindowManager * | wm, |
wmTimer * | wt | ||
) |
Hard-coded to event TIMERJOBS.
Definition at line 615 of file wm_jobs.c.
References BLI_threadpool_end(), wmJob::customdata, wmJob::do_update, 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_end(), 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 | ||
) |
Kill job entirely, also removes timer itself.
Definition at line 605 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 241 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().