[vlmc-devel] [PATCH 02/10] Remove TrackWorkflow::type()

Yikai Lu luyikei.qmltu at gmail.com
Wed May 4 16:18:33 CEST 2016


---
 src/Commands/Commands.cpp       |  2 --
 src/Gui/timeline/TracksView.cpp | 77 +++++++++++++++++++++--------------------
 src/Workflow/TrackWorkflow.cpp  |  7 ----
 src/Workflow/TrackWorkflow.h    |  2 --
 4 files changed, 40 insertions(+), 48 deletions(-)

diff --git a/src/Commands/Commands.cpp b/src/Commands/Commands.cpp
index b3ecb90..7fbd72a 100644
--- a/src/Commands/Commands.cpp
+++ b/src/Commands/Commands.cpp
@@ -117,8 +117,6 @@ Commands::Clip::Move::Move( TrackWorkflow *oldTrack, TrackWorkflow *newTrack,
     m_newPos( newPos )
 
 {
-    Q_ASSERT( oldTrack->type() == newTrack->type() );
-
     m_oldPos = oldTrack->getClipPosition( clipHelper->uuid() );
     connect( clipHelper->clip(), SIGNAL( destroyed() ), this, SLOT( invalidate() ) );
     retranslate();
diff --git a/src/Gui/timeline/TracksView.cpp b/src/Gui/timeline/TracksView.cpp
index 514eb2c..b30c9b3 100644
--- a/src/Gui/timeline/TracksView.cpp
+++ b/src/Gui/timeline/TracksView.cpp
@@ -248,64 +248,64 @@ TracksView::addItem( TrackWorkflow *tw, Workflow::Helper *helper, qint64 start )
     if ( m_itemsLoaded.contains( helper->uuid() ) )
         return ;
     qint32                  track = tw->trackId();
-    Workflow::TrackType     trackType = tw->type();
-
-    // If there is not enough tracks to insert
-    // the clip do it now.
-    if ( trackType == Workflow::VideoTrack )
-    {
-        if ( track + 1 >= m_numVideoTrack )
-        {
-            int nbTrackToAdd = ( track + 2 ) - m_numVideoTrack;
-            for ( int i = 0; i < nbTrackToAdd; ++i )
-                addTrack( Workflow::VideoTrack );
-        }
-    }
-    else if ( trackType == Workflow::AudioTrack )
-    {
-        if ( track + 1 >= m_numAudioTrack )
-        {
-            int nbTrackToAdd = ( track + 2 ) - m_numAudioTrack;
-            for ( int i = 0; i < nbTrackToAdd; ++i )
-                addTrack( Workflow::AudioTrack );
-        }
-    }
 
     AbstractGraphicsItem        *item = nullptr;
     ClipHelper                  *clipHelper = qobject_cast<ClipHelper*>( helper );
     if ( clipHelper != nullptr )
     {
         AbstractGraphicsMediaItem   *mediaItem = nullptr;
-        if ( trackType == Workflow::VideoTrack )
+
+        bool hasVideo = clipHelper->formats() & ClipHelper::Video;
+        bool hasAudio = clipHelper->formats() & ClipHelper::Audio;
+
+        // If there is not enough tracks to insert
+        // the clip do it now.
+        if ( hasVideo )
         {
+            if ( track + 1 >= m_numVideoTrack )
+            {
+                int nbTrackToAdd = ( track + 2 ) - m_numVideoTrack;
+                for ( int i = 0; i < nbTrackToAdd; ++i )
+                    addTrack( Workflow::VideoTrack );
+            }
             mediaItem = new GraphicsMovieItem( clipHelper );
             connect( mediaItem, SIGNAL( split(AbstractGraphicsMediaItem*,qint64) ),
                      this, SLOT( split(AbstractGraphicsMediaItem*,qint64) ) );
         }
-        else if ( trackType == Workflow::AudioTrack )
+        else if ( hasAudio )
         {
+            if ( track + 1 >= m_numAudioTrack )
+            {
+                int nbTrackToAdd = ( track + 2 ) - m_numAudioTrack;
+                for ( int i = 0; i < nbTrackToAdd; ++i )
+                    addTrack( Workflow::AudioTrack );
+            }
             mediaItem = new GraphicsAudioItem( clipHelper );
             connect( mediaItem, SIGNAL( split(AbstractGraphicsMediaItem*,qint64) ),
                      this, SLOT( split(AbstractGraphicsMediaItem*,qint64) ) );
         }
+
         item = mediaItem;
         m_itemsLoaded.insert( helper->uuid() );
         item->m_tracksView = this;
         item->setHeight( item->itemHeight() );
-        item->setTrack( getTrack( trackType, track ) );
+        if ( hasVideo )
+            item->setTrack( getTrack( Workflow::VideoTrack, track ) );
+        else if ( hasAudio )
+            item->setTrack( getTrack( Workflow::AudioTrack, track ) );
         item->setStartPos( start );
         item->m_oldTrack = tw;
         moveItem( item, track, start );
         //If the item has some effects:
         foreach ( EffectHelper *effectHelper, clipHelper->clipWorkflow()->effects( Effect::Filter ) )
         {
-            addEffectItem( effectHelper, trackType, track, start );
+            addEffectItem( effectHelper, Workflow::VideoTrack, track, start );
         }
     }
     else
     {
         EffectHelper    *effectHelper = qobject_cast<EffectHelper*>( helper );
-        addEffectItem( effectHelper, trackType, track, start );
+        addEffectItem( effectHelper, Workflow::VideoTrack, track, start );
     }
     updateDuration();
 }
@@ -743,18 +743,21 @@ TracksView::findPosition( AbstractGraphicsItem *item, qint32 track, qint64 time
 void
 TracksView::removeItem( TrackWorkflow *tw, const QUuid &uuid )
 {
-    GraphicsTrack           *track = getTrack( tw->type(), tw->trackId() );
+    for ( int i = 0; i < Workflow::NbTrackType; ++i )
+    {
+        GraphicsTrack           *track = getTrack( (Workflow::TrackType)i, tw->trackId() );
 
-    if ( track == nullptr )
-        return ;
-    QList<QGraphicsItem*> trackItems = track->childItems();;
+        if ( track == nullptr )
+            return ;
+        QList<QGraphicsItem*> trackItems = track->childItems();;
 
-    for ( int i = 0; i < trackItems.size(); ++i )
-    {
-        AbstractGraphicsItem    *item = dynamic_cast<AbstractGraphicsItem*>( trackItems.at( i ) );
-        if ( !item || item->uuid() != uuid )
-            continue;
-        removeItem( item );
+        for ( int i = 0; i < trackItems.size(); ++i )
+        {
+            AbstractGraphicsItem    *item = dynamic_cast<AbstractGraphicsItem*>( trackItems.at( i ) );
+            if ( !item || item->uuid() != uuid )
+                continue;
+            removeItem( item );
+        }
     }
 }
 
diff --git a/src/Workflow/TrackWorkflow.cpp b/src/Workflow/TrackWorkflow.cpp
index e126e09..f40ed4c 100644
--- a/src/Workflow/TrackWorkflow.cpp
+++ b/src/Workflow/TrackWorkflow.cpp
@@ -46,7 +46,6 @@
 
 TrackWorkflow::TrackWorkflow( quint32 trackId  ) :
         m_length( 0 ),
-        m_trackType( Workflow::NbTrackType ),
         m_trackId( trackId )
 {
     m_clipsLock = new QReadWriteLock;
@@ -675,12 +674,6 @@ TrackWorkflow::trackId() const
     return m_trackId;
 }
 
-Workflow::TrackType
-TrackWorkflow::type() const
-{
-    return m_trackType;
-}
-
 EffectsEngine::EffectList*
 TrackWorkflow::filters()
 {
diff --git a/src/Workflow/TrackWorkflow.h b/src/Workflow/TrackWorkflow.h
index 6625068..d9369d2 100644
--- a/src/Workflow/TrackWorkflow.h
+++ b/src/Workflow/TrackWorkflow.h
@@ -94,7 +94,6 @@ class   TrackWorkflow : public EffectUser
         void                                    stopFrameComputing();
         bool                                    hasNoMoreFrameToRender( qint64 currentFrame ) const;
         quint32                                 trackId() const;
-        Workflow::TrackType                     type() const;
         //FIXME: this is not thread safe if the list gets modified (but it can't be const, as it is intended to be modified...)
         EffectsEngine::EffectList               *filters();
         EffectsEngine::EffectList               *mixers();
@@ -123,7 +122,6 @@ class   TrackWorkflow : public EffectUser
 
         QReadWriteLock*                         m_clipsLock;
 
-        const Workflow::TrackType               m_trackType;
         qint64                                  m_lastFrame[Workflow::NbTrackType];
         Workflow::Frame                         *m_mixerBuffer;
         const quint32                           m_trackId;
-- 
1.9.1



More information about the Vlmc-devel mailing list