Fix T51450: viewport render time keeps increasing after render is done.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D2747
This commit is contained in:
Jeff Knox 2017-07-25 01:35:33 +02:00 committed by Brecht Van Lommel
parent b7fb00f512
commit e93804318f
Notes: blender-bot 2023-02-14 10:21:10 +01:00
Referenced by issue #51450, viewport render (shift-z) seams going on even if preview samples are reached
3 changed files with 16 additions and 3 deletions

View File

@ -961,6 +961,7 @@ void Session::update_status_time(bool show_pause, bool show_done)
}
else if(show_done) {
status = "Done";
progress.set_end_time(); /* Save end time so that further calls to get_time are accurate. */
}
else {
status = substatus;

View File

@ -41,6 +41,7 @@ public:
denoised_tiles = 0;
start_time = time_dt();
render_start_time = time_dt();
end_time = 0.0;
status = "Initializing";
substatus = "";
sync_status = "";
@ -80,6 +81,7 @@ public:
denoised_tiles = 0;
start_time = time_dt();
render_start_time = time_dt();
end_time = 0.0;
status = "Initializing";
substatus = "";
sync_status = "";
@ -146,6 +148,7 @@ public:
thread_scoped_lock lock(progress_mutex);
start_time = time_dt();
end_time = 0.0;
}
void set_render_start_time()
@ -169,8 +172,15 @@ public:
{
thread_scoped_lock lock(progress_mutex);
total_time_ = time_dt() - start_time;
render_time_ = time_dt() - render_start_time;
double time = (end_time > 0) ? end_time : time_dt();
total_time_ = time - start_time;
render_time_ = time - render_start_time;
}
void set_end_time()
{
end_time = time_dt();
}
void reset_sample()
@ -337,6 +347,8 @@ protected:
int rendered_tiles, denoised_tiles;
double start_time, render_start_time;
/* End time written when render is done, so it doesn't keep increasing on redraws. */
double end_time;
string status;
string substatus;

View File

@ -1237,7 +1237,7 @@ static void render_view3d_startjob(void *customdata, short *stop, short *do_upda
use_border = render_view3d_disprect(rp->scene, rp->ar, rp->v3d,
rp->rv3d, &cliprct);
if ((update_flag & (PR_UPDATE_RENDERSIZE | PR_UPDATE_DATABASE)) || rstats->convertdone == 0) {
if ((update_flag & (PR_UPDATE_RENDERSIZE | PR_UPDATE_DATABASE | PR_UPDATE_VIEW)) || rstats->convertdone == 0) {
RenderData rdata;
/* no osa, blur, seq, layers, savebuffer etc for preview render */