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:
-rw-r--r--source/blender/blenkernel/intern/image.cc26
-rw-r--r--source/blender/editors/render/render_internal.cc4
-rw-r--r--source/blender/editors/render/render_preview.cc4
-rw-r--r--source/blender/render/RE_pipeline.h14
-rw-r--r--source/blender/render/intern/pipeline.c10
-rw-r--r--source/blender/render/intern/render_types.h2
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;