static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short *do_update, float *progress) { IconPreview *ip = (IconPreview *)customdata; IconPreviewSize *cur_size; for (cur_size = ip->sizes.first; cur_size; cur_size = cur_size->next) { PreviewImage *prv = ip->owner; if (prv->tag & PRV_TAG_DEFFERED_DELETE) { /* Non-thread-protected reading is not an issue here. */ continue; } if (!check_engine_supports_preview(ip->scene)) { continue; } ShaderPreview *sp = MEM_callocN(sizeof(ShaderPreview), "Icon ShaderPreview"); const bool is_render = !(prv->tag & PRV_TAG_DEFFERED); /* construct shader preview from image size and previewcustomdata */ sp->scene = ip->scene; sp->depsgraph = ip->depsgraph; sp->owner = ip->owner; sp->sizex = cur_size->sizex; sp->sizey = cur_size->sizey; sp->pr_method = is_render ? PR_ICON_RENDER : PR_ICON_DEFERRED; sp->pr_rect = cur_size->rect; sp->id = ip->id; sp->id_copy = ip->id_copy; sp->bmain = ip->bmain; sp->own_id_copy = false; Material *ma = NULL; if (is_render) { BLI_assert(ip->id); /* grease pencil use its own preview file */ if (GS(ip->id->name) == ID_MA) { ma = (Material *)ip->id; } if ((ma == NULL) || (ma->gp_style == NULL)) { sp->pr_main = G_pr_main; } else { sp->pr_main = G_pr_main_grease_pencil; } } common_preview_startjob(sp, stop, do_update, progress); shader_preview_free(sp); } }
static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short *do_update, float *progress) { IconPreview *ip = (IconPreview *)customdata; IconPreviewSize *cur_size = ip->sizes.first; const bool use_new_shading = BKE_scene_use_new_shading_nodes(ip->scene); while (cur_size) { PreviewImage *prv = ip->owner; ShaderPreview *sp = MEM_callocN(sizeof(ShaderPreview), "Icon ShaderPreview"); const bool is_render = !prv->use_deferred; /* construct shader preview from image size and previewcustomdata */ sp->scene = ip->scene; sp->owner = ip->owner; sp->sizex = cur_size->sizex; sp->sizey = cur_size->sizey; sp->pr_method = is_render ? PR_ICON_RENDER : PR_ICON_DEFERRED; sp->pr_rect = cur_size->rect; sp->id = ip->id; sp->bmain = ip->bmain; if (is_render) { BLI_assert(ip->id); if (use_new_shading) { /* texture icon rendering is hardcoded to use BI, * so don't even think of using cycle's bmain for * texture icons */ if (GS(ip->id->name) != ID_TE) sp->pr_main = G_pr_main_cycles; else sp->pr_main = G_pr_main; } else { sp->pr_main = G_pr_main; } } common_preview_startjob(sp, stop, do_update, progress); shader_preview_free(sp); cur_size = cur_size->next; } }
static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short *do_update, float *progress) { IconPreview *ip = (IconPreview *)customdata; IconPreviewSize *cur_size = ip->sizes.first; while (cur_size) { ShaderPreview *sp = MEM_callocN(sizeof(ShaderPreview), "Icon ShaderPreview"); /* construct shader preview from image size and previewcustomdata */ sp->scene = ip->scene; sp->owner = ip->owner; sp->sizex = cur_size->sizex; sp->sizey = cur_size->sizey; sp->pr_method = PR_ICON_RENDER; sp->pr_rect = cur_size->rect; sp->id = ip->id; common_preview_startjob(sp, stop, do_update, progress); shader_preview_free(sp); cur_size = cur_size->next; } }