diff options
-rw-r--r-- | source/blender/blenkernel/intern/image.cc | 26 | ||||
-rw-r--r-- | source/blender/editors/render/render_internal.cc | 4 | ||||
-rw-r--r-- | source/blender/editors/render/render_preview.cc | 4 | ||||
-rw-r--r-- | source/blender/render/RE_pipeline.h | 14 | ||||
-rw-r--r-- | source/blender/render/intern/pipeline.c | 10 | ||||
-rw-r--r-- | source/blender/render/intern/render_types.h | 2 |
6 files changed, 16 insertions, 44 deletions
diff --git a/source/blender/blenkernel/intern/image.cc b/source/blender/blenkernel/intern/image.cc index 4a1cbdba42a..88888831e1c 100644 --- a/source/blender/blenkernel/intern/image.cc +++ b/source/blender/blenkernel/intern/image.cc @@ -5105,31 +5105,7 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser, void **r_loc RE_AcquireResultImage(re, &rres, actview); } else if ((slot = BKE_image_get_renderslot(ima, ima->render_slot))->render) { - /* Unfortunately each field needs to be set individually because RenderResult - * contains volatile fields and using memcpy would invoke undefined behavior with c++. */ - rres.next = slot->render->next; - rres.prev = slot->render->prev; - rres.rectx = slot->render->rectx; - rres.recty = slot->render->recty; - rres.sample_nr = slot->render->sample_nr; - rres.rect32 = slot->render->rect32; - rres.rectf = slot->render->rectf; - rres.rectz = slot->render->rectz; - rres.tilerect = slot->render->tilerect; - rres.xof = slot->render->xof; - rres.yof = slot->render->yof; - rres.layers = slot->render->layers; - rres.views = slot->render->views; - rres.renrect.xmin = slot->render->renrect.xmin; - rres.renrect.xmax = slot->render->renrect.xmax; - rres.renrect.ymin = slot->render->renrect.ymin; - rres.renrect.ymax = slot->render->renrect.ymax; - rres.renlay = slot->render->renlay; - rres.framenr = slot->render->framenr; - rres.text = slot->render->text; - rres.error = slot->render->error; - rres.stamp_data = slot->render->stamp_data; - rres.passes_allocated = slot->render->passes_allocated; + rres = *(slot->render); rres.have_combined = ((RenderView *)rres.views.first)->rectf != nullptr; } diff --git a/source/blender/editors/render/render_internal.cc b/source/blender/editors/render/render_internal.cc index 6c04523ed07..6796eff29d4 100644 --- a/source/blender/editors/render/render_internal.cc +++ b/source/blender/editors/render/render_internal.cc @@ -101,7 +101,7 @@ struct RenderJob { /* called inside thread! */ static bool image_buffer_calc_tile_rect(const RenderResult *rr, const ImBuf *ibuf, - volatile rcti *renrect, + rcti *renrect, rcti *r_ibuf_rect, int *r_offset_x, int *r_offset_y) @@ -556,7 +556,7 @@ static void render_image_update_pass_and_layer(RenderJob *rj, RenderResult *rr, } } -static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrect) +static void image_rect_update(void *rjv, RenderResult *rr, rcti *renrect) { RenderJob *rj = static_cast<RenderJob *>(rjv); Image *ima = rj->image; diff --git a/source/blender/editors/render/render_preview.cc b/source/blender/editors/render/render_preview.cc index cfb88cd7868..57858b202d2 100644 --- a/source/blender/editors/render/render_preview.cc +++ b/source/blender/editors/render/render_preview.cc @@ -987,9 +987,7 @@ static void action_preview_render(IconPreview *preview, IconPreviewSize *preview * \{ */ /* inside thread, called by renderer, sets job update value */ -static void shader_preview_update(void *spv, - RenderResult *UNUSED(rr), - volatile struct rcti *UNUSED(rect)) +static void shader_preview_update(void *spv, RenderResult *UNUSED(rr), struct rcti *UNUSED(rect)) { ShaderPreview *sp = static_cast<ShaderPreview *>(spv); diff --git a/source/blender/render/RE_pipeline.h b/source/blender/render/RE_pipeline.h index 21be690a56e..a8436772299 100644 --- a/source/blender/render/RE_pipeline.h +++ b/source/blender/render/RE_pipeline.h @@ -123,8 +123,8 @@ typedef struct RenderResult { ListBase views; /* RenderView */ /* allowing live updates: */ - volatile rcti renrect; - volatile RenderLayer *renlay; + rcti renrect; + RenderLayer *renlay; /* for render results in Image, verify validity for sequences */ int framenr; @@ -248,9 +248,7 @@ void RE_render_result_rect_from_ibuf(struct RenderResult *rr, int view_id); struct RenderLayer *RE_GetRenderLayer(struct RenderResult *rr, const char *name); -float *RE_RenderLayerGetPass(volatile struct RenderLayer *rl, - const char *name, - const char *viewname); +float *RE_RenderLayerGetPass(struct RenderLayer *rl, const char *name, const char *viewname); bool RE_HasSingleLayer(struct Render *re); @@ -400,7 +398,7 @@ void RE_display_clear_cb(struct Render *re, void (*f)(void *handle, RenderResult *rr)); void RE_display_update_cb(struct Render *re, void *handle, - void (*f)(void *handle, RenderResult *rr, volatile struct rcti *rect)); + void (*f)(void *handle, RenderResult *rr, struct rcti *rect)); void RE_stats_draw_cb(struct Render *re, void *handle, void (*f)(void *handle, RenderStats *rs)); void RE_progress_cb(struct Render *re, void *handle, void (*f)(void *handle, float)); void RE_draw_lock_cb(struct Render *re, void *handle, void (*f)(void *handle, bool lock)); @@ -429,13 +427,13 @@ int RE_seq_render_active(struct Scene *scene, struct RenderData *rd); bool RE_layers_have_name(struct RenderResult *result); bool RE_passes_have_name(struct RenderLayer *rl); -struct RenderPass *RE_pass_find_by_name(volatile struct RenderLayer *rl, +struct RenderPass *RE_pass_find_by_name(struct RenderLayer *rl, const char *name, const char *viewname); /** * Only provided for API compatibility, don't use this in new code! */ -struct RenderPass *RE_pass_find_by_type(volatile struct RenderLayer *rl, +struct RenderPass *RE_pass_find_by_type(struct RenderLayer *rl, int passtype, const char *viewname); diff --git a/source/blender/render/intern/pipeline.c b/source/blender/render/intern/pipeline.c index 913a4d3857b..f66d65ce68c 100644 --- a/source/blender/render/intern/pipeline.c +++ b/source/blender/render/intern/pipeline.c @@ -166,7 +166,7 @@ static void result_nothing(void *UNUSED(arg), RenderResult *UNUSED(rr)) } static void result_rcti_nothing(void *UNUSED(arg), RenderResult *UNUSED(rr), - volatile struct rcti *UNUSED(rect)) + struct rcti *UNUSED(rect)) { } static void current_scene_nothing(void *UNUSED(arg), Scene *UNUSED(scene)) @@ -262,7 +262,7 @@ void RE_FreeRenderResult(RenderResult *rr) render_result_free(rr); } -float *RE_RenderLayerGetPass(volatile RenderLayer *rl, const char *name, const char *viewname) +float *RE_RenderLayerGetPass(RenderLayer *rl, const char *name, const char *viewname) { RenderPass *rpass = RE_pass_find_by_name(rl, name, viewname); return rpass ? rpass->rect : NULL; @@ -890,7 +890,7 @@ void RE_display_clear_cb(Render *re, void *handle, void (*f)(void *handle, Rende } void RE_display_update_cb(Render *re, void *handle, - void (*f)(void *handle, RenderResult *rr, volatile rcti *rect)) + void (*f)(void *handle, RenderResult *rr, rcti *rect)) { re->display_update = f; re->duh = handle; @@ -2743,7 +2743,7 @@ bool RE_passes_have_name(struct RenderLayer *rl) return false; } -RenderPass *RE_pass_find_by_name(volatile RenderLayer *rl, const char *name, const char *viewname) +RenderPass *RE_pass_find_by_name(RenderLayer *rl, const char *name, const char *viewname) { RenderPass *rp = NULL; @@ -2760,7 +2760,7 @@ RenderPass *RE_pass_find_by_name(volatile RenderLayer *rl, const char *name, con return rp; } -RenderPass *RE_pass_find_by_type(volatile RenderLayer *rl, int passtype, const char *viewname) +RenderPass *RE_pass_find_by_type(RenderLayer *rl, int passtype, const char *viewname) { #define CHECK_PASS(NAME) \ if (passtype == SCE_PASS_##NAME) { \ diff --git a/source/blender/render/intern/render_types.h b/source/blender/render/intern/render_types.h index b3c80f7dded..27b014ac289 100644 --- a/source/blender/render/intern/render_types.h +++ b/source/blender/render/intern/render_types.h @@ -99,7 +99,7 @@ struct Render { void *dih; void (*display_clear)(void *handle, RenderResult *rr); void *dch; - void (*display_update)(void *handle, RenderResult *rr, volatile rcti *rect); + void (*display_update)(void *handle, RenderResult *rr, rcti *rect); void *duh; void (*current_scene_update)(void *handle, struct Scene *scene); void *suh; |