Skip to content

Commit

Permalink
Solves issue LMMS#2028 (Slow MIDI import due to repeated message)
Browse files Browse the repository at this point in the history
AutomationPattern::addObject now returns a boolean which indicates
whether the object was added or not. This change enables the removal of
the error message that is shown in the case that a model is already
connected from AutomationPattern::addObject. Instead all interactive
callers now check for the return value and show the message in case it
is needed.

This change set improves the import of MIDI files significantly. These
have been slowed down quite a lot due to the message being shown
repeatedly during the MIDI import.
  • Loading branch information
michaelgregorius committed May 3, 2015
1 parent 9f95c04 commit 53f5ef1
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 9 deletions.
2 changes: 1 addition & 1 deletion include/AutomationPattern.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class EXPORT AutomationPattern : public TrackContentObject
AutomationPattern( const AutomationPattern & _pat_to_copy );
virtual ~AutomationPattern();

void addObject( AutomatableModel * _obj, bool _search_dup = true );
bool addObject( AutomatableModel * _obj, bool _search_dup = true );

const AutomatableModel * firstObject() const;

Expand Down
10 changes: 4 additions & 6 deletions src/core/AutomationPattern.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
#include "ProjectJournal.h"
#include "BBTrackContainer.h"
#include "Song.h"
#include "TextFloat.h"
#include "embed.h"

int AutomationPattern::s_quantization = 1;
Expand Down Expand Up @@ -107,18 +106,16 @@ AutomationPattern::~AutomationPattern()



void AutomationPattern::addObject( AutomatableModel * _obj, bool _search_dup )
bool AutomationPattern::addObject( AutomatableModel * _obj, bool _search_dup )
{
if( _search_dup )
{
for( objectVector::iterator it = m_objects.begin();
it != m_objects.end(); ++it )
{
if( *it == _obj )
{
TextFloat::displayMessage( _obj->displayName(), tr( "Model is already connected "
"to this pattern." ), embed::getIconPixmap( "automation" ), 2000 );
return;
{
return false;
}
}
}
Expand All @@ -138,6 +135,7 @@ void AutomationPattern::addObject( AutomatableModel * _obj, bool _search_dup )

emit dataChanged();

return true;
}


Expand Down
11 changes: 10 additions & 1 deletion src/gui/AutomationPatternView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "ProjectJournal.h"
#include "RenameDialog.h"
#include "StringPairDrag.h"
#include "TextFloat.h"
#include "ToolTip.h"


Expand Down Expand Up @@ -420,7 +421,15 @@ void AutomationPatternView::dropEvent( QDropEvent * _de )
journallingObject( val.toInt() ) );
if( mod != NULL )
{
m_pat->addObject( mod );
bool added = m_pat->addObject( mod );
if ( !added )
{
TextFloat::displayMessage( mod->displayName(),
tr( "Model is already connected "
"to this pattern." ),
embed::getIconPixmap( "automation" ),
2000 );
}
}
update();

Expand Down
10 changes: 9 additions & 1 deletion src/gui/editors/AutomationEditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2299,7 +2299,15 @@ void AutomationEditorWindow::dropEvent( QDropEvent *_de )
journallingObject( val.toInt() ) );
if( mod != NULL )
{
m_editor->m_pattern->addObject( mod );
bool added = m_editor->m_pattern->addObject( mod );
if ( !added )
{
TextFloat::displayMessage( mod->displayName(),
tr( "Model is already connected "
"to this pattern." ),
embed::getIconPixmap( "automation" ),
2000 );
}
setCurrentPattern( m_editor->m_pattern );
}
}
Expand Down

0 comments on commit 53f5ef1

Please sign in to comment.