From 24ada9c96027971e50e9d103c746d674024b6892 Mon Sep 17 00:00:00 2001 From: Jesse Yurkovich Date: Tue, 15 Mar 2022 20:53:10 -0700 Subject: 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 --- source/blender/blenkernel/intern/image.cc | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) (limited to 'source/blender/blenkernel/intern/image.cc') 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; } -- cgit v1.2.3