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

Hugo Beauzée-Luyssen hugo at beauzee.fr
Wed May 18 21:29:44 CEST 2016


On 05/04/2016 04:18 PM, Yikai Lu wrote:
> ---
>  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;
> 

Is there a specific reason why?

-- 
Hugo Beauzée-Luyssen
www.beauzee.fr


More information about the Vlmc-devel mailing list