|  | @@ -160,8 +160,8 @@ impl <'s> PlayerInternal<'s> {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if self.state.0.lock().unwrap().status == PlayStatus::kPlayStatusPlay {
 | 
	
		
			
				|  |  | -                match decoder.as_mut().unwrap().packets().next().unwrap() {
 | 
	
		
			
				|  |  | -                    Ok(packet) => {
 | 
	
		
			
				|  |  | +                match decoder.as_mut().unwrap().packets().next() {
 | 
	
		
			
				|  |  | +                    Some(Ok(packet)) => {
 | 
	
		
			
				|  |  |                          match stream.write(&packet.data) {
 | 
	
		
			
				|  |  |                              Ok(_) => (),
 | 
	
		
			
				|  |  |                              Err(portaudio::PaError::OutputUnderflowed)
 | 
	
	
		
			
				|  | @@ -169,8 +169,17 @@ impl <'s> PlayerInternal<'s> {
 | 
	
		
			
				|  |  |                              Err(e) => panic!("PA Error {}", e)
 | 
	
		
			
				|  |  |                          };
 | 
	
		
			
				|  |  |                      },
 | 
	
		
			
				|  |  | -                    Err(vorbis::VorbisError::Hole) => (),
 | 
	
		
			
				|  |  | -                    Err(e) => panic!("Vorbis error {:?}", e)
 | 
	
		
			
				|  |  | +                    Some(Err(vorbis::VorbisError::Hole)) => (),
 | 
	
		
			
				|  |  | +                    Some(Err(e)) => panic!("Vorbis error {:?}", e),
 | 
	
		
			
				|  |  | +                    None => {
 | 
	
		
			
				|  |  | +                        self.update(|state| {
 | 
	
		
			
				|  |  | +                            state.status = PlayStatus::kPlayStatusStop;
 | 
	
		
			
				|  |  | +                            return true;
 | 
	
		
			
				|  |  | +                        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        stream.stop().unwrap();
 | 
	
		
			
				|  |  | +                        decoder = None;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  self.update(|state| {
 | 
	
	
		
			
				|  | @@ -199,7 +208,6 @@ impl <'s> PlayerInternal<'s> {
 | 
	
		
			
				|  |  |          if update {
 | 
	
		
			
				|  |  |              guard.update_time = util::now_ms();
 | 
	
		
			
				|  |  |              self.state.1.notify_all();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |