Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-07-01 16:23:42 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-07-01 16:36:02 +0300
commit2698544db2a19436155191608e4ef13c001b8209 (patch)
tree2d369a6ac5610fef85f2cabe94029b3699913acb /source/blender/editors/render/render_preview.c
parent3c6260d42de007c223c4bdb1bc8ed5431f2f2963 (diff)
Fix T66262: slow preview icon loading
Diffstat (limited to 'source/blender/editors/render/render_preview.c')
-rw-r--r--source/blender/editors/render/render_preview.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index c6b1acfbd94..fbabdc2f3c1 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -1340,8 +1340,13 @@ void ED_preview_icon_render(
BLI_freelistN(&ip.sizes);
}
-void ED_preview_icon_job(
- const bContext *C, void *owner, ID *id, unsigned int *rect, int sizex, int sizey)
+void ED_preview_icon_job(const bContext *C,
+ void *owner,
+ ID *id,
+ unsigned int *rect,
+ int sizex,
+ int sizey,
+ const bool delay)
{
wmJob *wm_job;
IconPreview *ip, *old_ip;
@@ -1353,7 +1358,7 @@ void ED_preview_icon_job(
CTX_wm_window(C),
owner,
"Icon Preview",
- WM_JOB_EXCL_RENDER | WM_JOB_SUSPEND,
+ WM_JOB_EXCL_RENDER,
WM_JOB_TYPE_RENDER_PREVIEW);
ip = MEM_callocN(sizeof(IconPreview), "icon preview");
@@ -1385,10 +1390,11 @@ void ED_preview_icon_job(
/* setup job */
WM_jobs_customdata_set(wm_job, ip, icon_preview_free);
+ WM_jobs_timer(wm_job, 0.1, NC_WINDOW, NC_WINDOW);
/* Wait 2s to start rendering icon previews, to not bog down user interaction.
* Particularly important for heavy scenes and Eevee using OpenGL that blocks
* the user interface drawing. */
- WM_jobs_timer(wm_job, 2.0, NC_WINDOW, NC_WINDOW);
+ WM_jobs_delay_start(wm_job, (delay) ? 2.0 : 0.0);
WM_jobs_callbacks(wm_job, icon_preview_startjob_all_sizes, NULL, NULL, icon_preview_endjob);
WM_jobs_start(CTX_wm_manager(C), wm_job);