diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2015-04-29 17:26:30 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2015-04-29 17:55:53 +0300 |
commit | 3e6a66b9dee4e0b034a1de83fbd242191858a7df (patch) | |
tree | a585414e8d9c26e66c73555e30727597ff1652ab /source/blender/editors/render | |
parent | 18ba32df37aa84d0a7c884bd1945772df0d9c59f (diff) |
Multi-View cleanup: using RenderResult->rect* only for temporary RenderResults
Originally I wanted to get rid of RenderResult->rect* entirely, but it's
convenient to have for temporary structs.
This patch makes sure they are used only when really needed, which
should help clearing the code out.
(they are needed when using RE_AcquireResultImage() - which produces a
RenderResult with no RenderView)
Reviewers: sergey
Differential Revision: https://developer.blender.org/D1270
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r-- | source/blender/editors/render/render_internal.c | 10 | ||||
-rw-r--r-- | source/blender/editors/render/render_opengl.c | 6 | ||||
-rw-r--r-- | source/blender/editors/render/render_preview.c | 9 |
3 files changed, 16 insertions, 9 deletions
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 2f279122ae4..2ba1e615a9e 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -189,11 +189,15 @@ static void image_buffer_rect_update(RenderJob *rj, RenderResult *rr, ImBuf *ibu */ /* TODO(sergey): Need to check has_combined here? */ if (iuser->passtype == SCE_PASS_COMBINED) { + RenderView *rv; size_t view_id = BKE_scene_multiview_view_id_get(&scene->r, viewname); + rv = RE_RenderViewGetById(rr, view_id); + /* find current float rect for display, first case is after composite... still weak */ - rectf = RE_RenderViewGetRectf(rr, view_id); - if (rectf == NULL) { - if (RE_RenderViewGetRect32(rr, view_id)) { + if (rv->rectf) + rectf = rv->rectf; + else { + if (rv->rect32) { /* special case, currently only happens with sequencer rendering, * which updates the whole frame, so we can only mark display buffer * as invalid here (sergey) diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index 164f5f4bfd7..7fbdf9dc66b 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -248,7 +248,7 @@ static void screen_opengl_render_doit(OGLRender *oglrender, RenderResult *rr) Object *camera = NULL; ImBuf *ibuf; float winmat[4][4]; - float *rectf = RE_RenderViewGetRectf(rr, oglrender->view_id); + float *rectf = RE_RenderViewGetById(rr, oglrender->view_id)->rectf; int sizex = oglrender->sizex; int sizey = oglrender->sizey; const short view_context = (v3d != NULL); @@ -446,8 +446,8 @@ static void screen_opengl_render_doit(OGLRender *oglrender, RenderResult *rr) if (rect) { int profile_to; - float *rectf = RE_RenderViewGetRectf(rr, oglrender->view_id); - + float *rectf = RE_RenderViewGetById(rr, oglrender->view_id)->rectf; + if (BKE_scene_check_color_management_enabled(scene)) profile_to = IB_PROFILE_LINEAR_RGB; else diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index e6fbfda3067..2c353c13334 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -525,6 +525,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre static bool ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect, rcti *newrect) { Render *re; + RenderView *rv; RenderResult rres; char name[32]; int offx = 0; @@ -549,10 +550,12 @@ static bool ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect, /* test if something rendered ok */ re = RE_GetRender(name); + RE_AcquireResultImageViews(re, &rres); + /* material preview only needs monoscopy (view 0) */ - RE_AcquireResultImage(re, &rres, 0); + rv = RE_RenderViewGetById(&rres, 0); - if (rres.rectf) { + if (rv->rectf) { if (ABS(rres.rectx - newx) < 2 && ABS(rres.recty - newy) < 2) { @@ -577,7 +580,7 @@ static bool ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect, } } - RE_ReleaseResultImage(re); + RE_ReleaseResultImageViews(re, &rres); return ok; } |