diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-04-24 23:21:14 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-04-24 23:21:14 +0400 |
commit | 04c8d8b919eca366cad8b6066e4842a88c91c969 (patch) | |
tree | 09d192fa21636174b71e210a970ccabef3adee44 | |
parent | 00d04e1924e0247d79b1ef1913e8ae384583b515 (diff) |
Fix blender internal preview rendering continuously restarting after recent
viewport render changes.
Actually was an older issue that would cause unnecessary preview render restarts
if the render result was not allocated before it was drawn. Now the render result
is being reallocated each time for freestyle which made the issue worse.
-rw-r--r-- | source/blender/editors/render/render_preview.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 7ef84b9d6eb..e8c578cb685 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -531,6 +531,7 @@ static int ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect, r int offx = 0; int newx = BLI_rcti_size_x(rect); int newy = BLI_rcti_size_y(rect); + int ok = 0; if (!split || first) sprintf(name, "Preview %p", (void *)sa); else sprintf(name, "SecondPreview %p", (void *)sa); @@ -549,7 +550,6 @@ static int ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect, r /* test if something rendered ok */ re = RE_GetRender(name); RE_AcquireResultImage(re, &rres); - RE_ReleaseResultImage(re); if (rres.rectf) { @@ -568,12 +568,17 @@ static int ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect, r MEM_freeN(rect_byte); - return 1; + ok = 1; } } } + else { + ok = 1; + } - return 0; + RE_ReleaseResultImage(re); + + return ok; } void ED_preview_draw(const bContext *C, void *idp, void *parentp, void *slotp, rcti *rect) |