diff --git a/app/SubWindowAbstract.h b/app/SubWindowAbstract.h index 4c5023b..2dab7b1 100644 --- a/app/SubWindowAbstract.h +++ b/app/SubWindowAbstract.h @@ -136,7 +136,7 @@ public: protected: void focusInEvent( QFocusEvent* event ); - void closeEvent( QCloseEvent* event ); + virtual void closeEvent( QCloseEvent* event ); Void setWidget( QWidget* widget ); diff --git a/app/VideoHandle.h b/app/VideoHandle.h index 82beeff..3970016 100644 --- a/app/VideoHandle.h +++ b/app/VideoHandle.h @@ -34,7 +34,7 @@ #include #include -#define _CONTROL_PLAYING_TIME_ 1 +#define _CONTROL_PLAYING_TIME_ 0 class QToolBar; class QDockWidget; diff --git a/app/VideoSubWindow.cpp b/app/VideoSubWindow.cpp index 4748c33..51b11ca 100644 --- a/app/VideoSubWindow.cpp +++ b/app/VideoSubWindow.cpp @@ -194,6 +194,12 @@ VideoSubWindow::~VideoSubWindow() * Events handlers */ +Void VideoSubWindow::closeEvent( QCloseEvent* event ) +{ + stop(); + SubWindowAbstract::closeEvent( event ); +} + Void VideoSubWindow::keyPressEvent( QKeyEvent* event ) { if( m_pcCurrentDisplayModule ) @@ -789,6 +795,10 @@ Void VideoSubWindow::seekRelativeEvent( Bool bIsFoward ) Void VideoSubWindow::stop() { +#ifndef QT_NO_CONCURRENT + m_cRefreshResult.waitForFinished(); + m_cReadResult.waitForFinished(); +#endif m_bIsPlaying = false; seekAbsoluteEvent( 0 ); return; diff --git a/app/VideoSubWindow.h b/app/VideoSubWindow.h index 8984c36..90754f8 100644 --- a/app/VideoSubWindow.h +++ b/app/VideoSubWindow.h @@ -207,7 +207,7 @@ private: protected: Void keyPressEvent( QKeyEvent* event ); Void resizeEvent( QResizeEvent* event ); - // void closeEvent( QCloseEvent *event ); + Void closeEvent( QCloseEvent *event ); public Q_SLOTS: void updateWindowOnTimeout(); diff --git a/lib/StreamHandlerLibav.cpp b/lib/StreamHandlerLibav.cpp index 7d255bd..fe69e42 100644 --- a/lib/StreamHandlerLibav.cpp +++ b/lib/StreamHandlerLibav.cpp @@ -374,6 +374,9 @@ Bool StreamHandlerLibav::write( PlaYUVerFrame* pcFrame ) Bool StreamHandlerLibav::seek( UInt64 iFrameNum ) { + if( m_uiTotalNumberFrames == 1 ) + return true; + if( m_uiCurrFrameFileIdx == iFrameNum ) return true;