mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-04-22 00:42:04 +02:00
don't reload the playlist when additions/deletions are done in quick succession
This commit is contained in:
parent
6976ee08b4
commit
a5a8251a7f
src/libtomahawk/playlist/dynamic/widgets
@ -41,6 +41,7 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget
|
||||
: QWidget(parent)
|
||||
, m_layout( new QVBoxLayout )
|
||||
, m_resolveOnNextLoad( false )
|
||||
, m_seqRevLaunched( 0 )
|
||||
, m_runningOnDemand( false )
|
||||
, m_startOnResolved( false )
|
||||
, m_songsSinceLastResolved( 0 )
|
||||
@ -110,6 +111,14 @@ DynamicWidget::~DynamicWidget()
|
||||
void
|
||||
DynamicWidget::loadDynamicPlaylist( const Tomahawk::dynplaylist_ptr& playlist )
|
||||
{
|
||||
// special case: if we have launched multiple setRevision calls, and the number of controls is different, it means that we're getting an intermediate setRevision
|
||||
// called after the user has already created more revisions. ignore in that case.
|
||||
if( m_playlist.data() == playlist.data() && m_seqRevLaunched > 0
|
||||
&& m_controls->controls().size() != playlist->generator()->controls().size() // different number of controls
|
||||
&& qAbs( m_playlist->generator()->controls().size() - playlist->generator()->controls().size() ) < m_seqRevLaunched ) { // difference in controls has to be less than how many revisions we launched
|
||||
return;
|
||||
}
|
||||
m_seqRevLaunched = 0;
|
||||
// if we're being told to load the same dynamic playlist over again, only do it if the controls have a different number
|
||||
if( !m_playlist.isNull() && ( m_playlist.data() == playlist.data() ) // same playlist pointer
|
||||
&& m_playlist->generator()->controls().size() == playlist->generator()->controls().size() ) {
|
||||
@ -277,11 +286,13 @@ void
|
||||
DynamicWidget::controlsChanged()
|
||||
{
|
||||
m_playlist->createNewRevision();
|
||||
m_seqRevLaunched++;
|
||||
}
|
||||
|
||||
void
|
||||
DynamicWidget::controlChanged( const Tomahawk::dyncontrol_ptr& control )
|
||||
{
|
||||
m_playlist->createNewRevision();
|
||||
m_seqRevLaunched++;
|
||||
}
|
||||
|
||||
|
@ -81,12 +81,14 @@ private:
|
||||
dynplaylist_ptr m_playlist;
|
||||
QVBoxLayout* m_layout;
|
||||
bool m_resolveOnNextLoad;
|
||||
int m_seqRevLaunched; // if we shoot off multiple createRevision calls, we don'y want to set one of the middle ones
|
||||
|
||||
// used in OnDemand mode
|
||||
bool m_runningOnDemand;
|
||||
bool m_startOnResolved;
|
||||
int m_songsSinceLastResolved;
|
||||
|
||||
// layout and stuff
|
||||
QLabel* m_headerText;
|
||||
QHBoxLayout* m_headerLayout;
|
||||
ReadOrWriteWidget* m_generatorCombo;
|
||||
|
Loading…
x
Reference in New Issue
Block a user