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:
authorDalai Felinto <dfelinto@gmail.com>2015-04-29 17:26:30 +0300
committerDalai Felinto <dfelinto@gmail.com>2015-04-29 17:55:53 +0300
commit3e6a66b9dee4e0b034a1de83fbd242191858a7df (patch)
treea585414e8d9c26e66c73555e30727597ff1652ab /source/blender/editors/render
parent18ba32df37aa84d0a7c884bd1945772df0d9c59f (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.c10
-rw-r--r--source/blender/editors/render/render_opengl.c6
-rw-r--r--source/blender/editors/render/render_preview.c9
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;
}