From bb9cafc257b143139a5435944e7738fb528db493 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sun, 2 Jul 2006 18:26:20 +0000 Subject: Bugfix #4557 Report noted the slow icon renders for menus, which indeed is an issue, especially when texture images need to be loaded (not to mention that will eat up loads of memory). Added a flag in scene to disable loading of images, makes it 50 times faster, at least :) --- source/blender/makesdna/DNA_scene_types.h | 2 +- source/blender/render/intern/source/imagetexture.c | 3 +++ source/blender/src/previewrender.c | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'source') diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 777ccf06a89..33edf65454e 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -457,7 +457,7 @@ typedef struct Scene { #define R_SINGLE_LAYER 0x0200 #define R_EXR_TILE_FILE 0x0400 #define R_COMP_FREE 0x0800 - +#define R_NO_IMAGE_LOAD 0x1000 /* alphamode */ #define R_ADDSKY 0 diff --git a/source/blender/render/intern/source/imagetexture.c b/source/blender/render/intern/source/imagetexture.c index ba1dda6a775..39a5cedea98 100644 --- a/source/blender/render/intern/source/imagetexture.c +++ b/source/blender/render/intern/source/imagetexture.c @@ -102,6 +102,9 @@ int imagewrap(Tex *tex, Image *ima, float *texvec, TexResult *texres) } if(ima->ibuf==NULL) { + /* hack for icon render */ + if(R.r.scemode &R_NO_IMAGE_LOAD) + return 0; BLI_lock_thread(LOCK_MALLOC); if(ima->ibuf==NULL) ima_ibuf_is_nul(tex, ima); BLI_unlock_thread(LOCK_MALLOC); diff --git a/source/blender/src/previewrender.c b/source/blender/src/previewrender.c index 60d930e729d..b64208035ac 100644 --- a/source/blender/src/previewrender.c +++ b/source/blender/src/previewrender.c @@ -438,13 +438,16 @@ void BIF_previewrender(struct ID *id, struct RenderInfo *ri, struct ScrArea *are sce->r.scemode |= R_NODE_PREVIEW; if(sbuts->flag & SB_PRV_OSA) sce->r.mode |= R_OSA; + sce->r.scemode &= ~R_NO_IMAGE_LOAD; } else if(pr_method==PR_DO_RENDER) { RE_test_break_cb(re, qtest); sce->r.scemode |= R_NODE_PREVIEW; + sce->r.scemode &= ~R_NO_IMAGE_LOAD; } else { /* PR_ICON_RENDER */ sce->r.scemode &= ~R_NODE_PREVIEW; + sce->r.scemode |= R_NO_IMAGE_LOAD; } /* allocates render result */ -- cgit v1.2.3