Fix T96139: Cycles doesn't warn if the render is paused

Caused by 6ec83afb1d.

Technically, a regression since 3.0.

Differential Revision: https://developer.blender.org/D14239
This commit is contained in:
Sergey Sharybin 2022-03-03 17:16:39 +01:00 committed by Sergey Sharybin
parent 9c2e385509
commit 769ae5c866
Notes: blender-bot 2023-06-26 11:58:59 +02:00
Referenced by issue #96139, cycles doesn't warn if the render is paused
2 changed files with 12 additions and 6 deletions

View File

@ -123,11 +123,7 @@ void Session::start()
void Session::cancel(bool quick)
{
/* Check if session thread is rendering. */
bool rendering;
{
thread_scoped_lock session_thread_lock(session_thread_mutex_);
rendering = (session_thread_state_ == SESSION_THREAD_RENDER);
}
const bool rendering = is_session_thread_rendering();
if (rendering) {
/* Cancel path trace operations. */
@ -288,6 +284,12 @@ void Session::thread_render()
progress.set_update();
}
bool Session::is_session_thread_rendering()
{
thread_scoped_lock session_thread_lock(session_thread_mutex_);
return (session_thread_state_ == SESSION_THREAD_RENDER);
}
RenderWork Session::run_update_for_next_iteration()
{
RenderWork render_work;
@ -570,7 +572,7 @@ void Session::set_pause(bool pause)
}
}
if (session_thread_) {
if (is_session_thread_rendering()) {
if (notify) {
pause_cond_.notify_all();
}

View File

@ -175,6 +175,10 @@ class Session {
void thread_run();
void thread_render();
/* Check whether the session thread is in `SESSION_THREAD_RENDER` state.
* Returns true if it is so. */
bool is_session_thread_rendering();
/* Update for the new iteration of the main loop in run implementation (run_cpu and run_gpu).
*
* Will take care of the following things: