[vlmc-devel] Renderers: Simplify play/pause

Hugo Beauzée-Luyssen git at videolan.org
Mon Feb 24 18:24:02 CET 2014


vlmc | branch: ibackend | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Mon Feb 24 19:22:46 2014 +0200| [80bcdae820009cc3b63552e6e0619d69f1c5443c] | committer: Hugo Beauzée-Luyssen

Renderers: Simplify play/pause

> http://git.videolan.org/gitweb.cgi/vlmc.git/?a=commit;h=80bcdae820009cc3b63552e6e0619d69f1c5443c
---

 src/Renderer/ClipRenderer.cpp     |   23 +++++++----------------
 src/Renderer/ClipRenderer.h       |    2 +-
 src/Renderer/GenericRenderer.h    |    8 +++-----
 src/Renderer/WorkflowRenderer.cpp |   26 +++-----------------------
 src/Renderer/WorkflowRenderer.h   |    7 +------
 5 files changed, 15 insertions(+), 51 deletions(-)

diff --git a/src/Renderer/ClipRenderer.cpp b/src/Renderer/ClipRenderer.cpp
index 45a601e..b1e114d 100644
--- a/src/Renderer/ClipRenderer.cpp
+++ b/src/Renderer/ClipRenderer.cpp
@@ -121,7 +121,7 @@ ClipRenderer::stop()
 }
 
 void
-ClipRenderer::togglePlayPause( bool forcePause )
+ClipRenderer::togglePlayPause()
 {
     if ( m_clipLoaded == false )
     {
@@ -129,22 +129,10 @@ ClipRenderer::togglePlayPause( bool forcePause )
         startPreview();
         return ;
     }
-    if ( m_paused == false && m_isRendering == true )
+    if ( m_isRendering == true )
     {
         m_sourceRenderer->playPause();
-        m_paused = true;
-    }
-    else if ( forcePause == false )
-    {
-        if ( m_isRendering == false )
-        {
-            m_sourceRenderer->start();
-            m_sourceRenderer->setPosition( m_begin / ( m_end - m_begin ) );
-            m_isRendering = true;
-        }
-        else
-            m_sourceRenderer->playPause();
-        m_paused = false;
+        m_paused = !m_paused;
     }
 }
 
@@ -175,7 +163,10 @@ ClipRenderer::previousFrame()
     if ( m_isRendering == true )
     {
         if ( m_paused == false )
-            togglePlayPause( true );
+        {
+            togglePlayPause();
+            Q_ASSERT( m_paused == true );
+        }
         /* FIXME: Implement a better way to render previous frame */
         qint64   interval =  static_cast<qint64>( qCeil(1000.0f * 2.0f / m_selectedClip->getMedia()->source()->fps() ) );
         m_sourceRenderer->setTime( m_sourceRenderer->time() - interval );
diff --git a/src/Renderer/ClipRenderer.h b/src/Renderer/ClipRenderer.h
index cc3241a..90f9b10 100644
--- a/src/Renderer/ClipRenderer.h
+++ b/src/Renderer/ClipRenderer.h
@@ -39,7 +39,7 @@ public:
     explicit ClipRenderer();
     virtual ~ClipRenderer();
 
-    virtual void            togglePlayPause( bool forcePause );
+    virtual void            togglePlayPause();
     virtual void            stop();
     virtual void            setVolume( int volume );
     virtual int             getVolume() const;
diff --git a/src/Renderer/GenericRenderer.h b/src/Renderer/GenericRenderer.h
index 4bec740..75291d3 100644
--- a/src/Renderer/GenericRenderer.h
+++ b/src/Renderer/GenericRenderer.h
@@ -73,15 +73,13 @@ public:
      *  This method is renderer dependant. It has to be implemented in the
      *  underlying renderer implementation.
      *  When this method is called :
-     *      - if the render has not started and forcePause is false, the render is started
-     *      - if the render has not started and forcePause is true, nothing happens.
+     *      - if the render has not started the render is started
      *      - if the render has started and is not paused, the render will pause
-     *      - if the render has started, and is paused, the render will unpause if
-     *          forcePause is false.
+     *      - if the render has started and is paused, the render will unpause
      *  \param  forcePause  Will force the pause if true.
      *  \sa     stop()
      */
-    virtual void        togglePlayPause( bool forcePause = false ) = 0;
+    virtual void        togglePlayPause() = 0;
 
     /**
      *  \brief Render the next frame
diff --git a/src/Renderer/WorkflowRenderer.cpp b/src/Renderer/WorkflowRenderer.cpp
index 0d8c670..dd8411f 100644
--- a/src/Renderer/WorkflowRenderer.cpp
+++ b/src/Renderer/WorkflowRenderer.cpp
@@ -247,32 +247,12 @@ WorkflowRenderer::previousFrame()
 }
 
 void
-WorkflowRenderer::togglePlayPause( bool forcePause )
+WorkflowRenderer::togglePlayPause()
 {
-    if ( m_isRendering == false && forcePause == false )
+    if ( m_isRendering == false )
         startPreview();
     else
-        internalPlayPause( forcePause );
-}
-
-void
-WorkflowRenderer::internalPlayPause( bool forcePause )
-{
-    //If force pause is true, we just ensure that this render is paused... no need to start it.
-    if ( m_isRendering == true )
-    {
-        if ( m_paused == true && forcePause == false )
-        {
-            m_paused = false;
-        }
-        else
-        {
-            if ( m_paused == false )
-            {
-                m_paused = true;
-            }
-        }
-    }
+        m_paused = !m_paused;
 }
 
 void
diff --git a/src/Renderer/WorkflowRenderer.h b/src/Renderer/WorkflowRenderer.h
index 5711b6d..fc51d19 100644
--- a/src/Renderer/WorkflowRenderer.h
+++ b/src/Renderer/WorkflowRenderer.h
@@ -81,7 +81,7 @@ class   WorkflowRenderer : public GenericRenderer
          *  \warning    Do NOT call this method from a constructor as it calls some
          *              virtual methods.
          */
-        virtual void        togglePlayPause( bool forcePause );
+        virtual void        togglePlayPause();
         /**
          *  \brief Stop the mainworkflow, but not the renderer.
          *
@@ -142,11 +142,6 @@ class   WorkflowRenderer : public GenericRenderer
     private:
         /**
          *  \brief          This is a subpart of the togglePlayPause( bool ) method
-         *  \sa             togglePlayPause( bool );
-         */
-        void                internalPlayPause( bool forcePause );
-        /**
-         *  \brief          This is a subpart of the togglePlayPause( bool ) method
          *
          *  It starts the render by launching the media player that will query the
          *  lock and unlock callbacks, thus querying the MainWorkflow for frames and



More information about the Vlmc-devel mailing list