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:
authorJesse Yurkovich <jesse.y@gmail.com>2022-03-16 06:53:10 +0300
committerJesse Yurkovich <jesse.y@gmail.com>2022-03-16 07:12:49 +0300
commit24ada9c96027971e50e9d103c746d674024b6892 (patch)
tree78ccfa159494fdcb9b0c7b46427b5c6ba948a93f /source/blender/blenkernel/intern/image.cc
parentf1501ac0608bef767890f78221ca710bf8900b59 (diff)
Cleanup: Remove volatile from RenderResult and related APIs
Volatile fields were introduced to the RenderResult struct years ago[1]. However, volatile is most likely not doing what it was intended to do in this instance, and is problematic when moving files to c++ (see discussion from D13962). There are complex rules around what happens to these fields but none of them guarantee what the above commit alluded to. This patch drops the volatile and cleans up the APIs surrounding it. [1] rB7930c40051ef1b1a26140629cf1299aa89eed859 Passing on all platforms: https://builder.blender.org/admin/#/builders/18/builds/338 Differential Revision: https://developer.blender.org/D14298
Diffstat (limited to 'source/blender/blenkernel/intern/image.cc')
-rw-r--r--source/blender/blenkernel/intern/image.cc26
1 files changed, 1 insertions, 25 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;
}