diff --git a/Web/Core/vtkDataEncoder.cxx b/Web/Core/vtkDataEncoder.cxx index 4e75813907eac4226ecf8a0021f5e72e7c3fa8dd..b6bedb61f581280e7fc0d0b8e66ee73543e242dd 100644 --- a/Web/Core/vtkDataEncoder.cxx +++ b/Web/Core/vtkDataEncoder.cxx @@ -88,9 +88,18 @@ class vtkWorkQueue vtkWork work; { std::unique_lock<std::mutex> lock(self->QueueMutex); - self->QueueCondition.wait( - lock, [self]() { return !self->Queue.empty() || self->Terminate; }); - if (self->Terminate) + bool break_loop = false; + do + { + self->QueueCondition.wait_for(lock, std::chrono::seconds(1), + [self]() { return !self->Queue.empty() || self->Terminate; }); + if (self->Terminate) + { + break_loop = true; + break; + } + } while (self->Queue.empty()); + if (break_loop) { break; }