| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -50,20 +50,20 @@ Replay::~Replay() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void Replay::stop() { | 
					 | 
					 | 
					 | 
					void Replay::stop() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (!stream_thread_ && segments_.empty()) return; | 
					 | 
					 | 
					 | 
					  exit_ = true; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  rInfo("shutdown: in progress..."); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (stream_thread_ != nullptr) { | 
					 | 
					 | 
					 | 
					  if (stream_thread_ != nullptr) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    exit_ = true; | 
					 | 
					 | 
					 | 
					    rInfo("shutdown: in progress..."); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    pauseStreamThread(); | 
					 | 
					 | 
					 | 
					    pauseStreamThread(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    stream_cv_.notify_one(); | 
					 | 
					 | 
					 | 
					    stream_cv_.notify_one(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    stream_thread_->quit(); | 
					 | 
					 | 
					 | 
					    stream_thread_->quit(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    stream_thread_->wait(); | 
					 | 
					 | 
					 | 
					    stream_thread_->wait(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    stream_thread_->deleteLater(); | 
					 | 
					 | 
					 | 
					    stream_thread_->deleteLater(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    stream_thread_ = nullptr; | 
					 | 
					 | 
					 | 
					    stream_thread_ = nullptr; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    rInfo("shutdown: done"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  timeline_future.waitForFinished(); | 
					 | 
					 | 
					 | 
					  timeline_future.waitForFinished(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  rInfo("shutdown: done"); | 
					 | 
					 | 
					 | 
					  camera_server_.reset(nullptr); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  segments_.clear(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					bool Replay::load() { | 
					 | 
					 | 
					 | 
					bool Replay::load() { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |