Ticket #2434: mythplayback.diff
| File mythplayback.diff, 2.1 KB (added by , 19 years ago) |
|---|
-
libs/libmythtv/NuppelVideoPlayer.h
521 521 QWaitCondition decoderThreadPaused; 522 522 QWaitCondition videoThreadPaused; 523 523 QMutex vidExitLock; 524 QMutex pauseLock; 525 bool pause_signal; 524 526 bool eof; ///< At end of file/ringbuffer 525 527 bool m_double_framerate;///< Output fps is double Video (input) rate 526 528 bool m_can_double; ///< VideoOutput capable of doubling frame rate -
libs/libmythtv/NuppelVideoPlayer.cpp
150 150 eof(false), m_double_framerate(false), 151 151 m_can_double(false), paused(false), 152 152 pausevideo(false), actuallypaused(false), 153 pause_signal(false), 153 154 video_actually_paused(false), playing(false), 154 155 decoder_thread_alive(true), killplayer(false), 155 156 killvideo(false), livetv(false), … … 451 452 452 453 void NuppelVideoPlayer::PauseVideo(bool wait) 453 454 { 455 pauseLock.lock(); 454 456 video_actually_paused = false; 455 457 pausevideo = true; 456 458 457 459 if (wait && !video_actually_paused) 458 460 { 459 while (! videoThreadPaused.wait(1000))461 while (!pause_signal && !videoThreadPaused.wait(&pauseLock, 1000)) 460 462 { 461 463 if (eof) 464 { 465 pause_signal=false; 466 pauseLock.unlock(); 462 467 return; 468 } 463 469 VERBOSE(VB_IMPORTANT, "Waited too long for video out to pause"); 464 470 } 465 471 } 472 pause_signal=false; 473 pauseLock.unlock(); 466 474 } 467 475 468 476 void NuppelVideoPlayer::UnpauseVideo(void) 469 477 { 478 pauseLock.lock(); 470 479 pausevideo = false; 480 pause_signal=true; 481 pauseLock.unlock(); 482 videoThreadPaused.wakeAll(); 471 483 } 472 484 473 485 void NuppelVideoPlayer::SetPrebuffering(bool prebuffer)
