From 0141f2b57331b63901c984cf8b598b4a6e2b18ba Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 14 Feb 2011 17:12:10 +0100 Subject: [PATCH] * Invoke enqueuing DbCmds in the wrong thread. * Fixed a few more TrackHeader issues. --- .../databasecommand_updatesearchindex.cpp | 1 + src/libtomahawk/database/databaseworker.cpp | 7 +++++++ src/libtomahawk/database/databaseworker.h | 5 +++-- src/libtomahawk/playlist/trackheader.cpp | 17 ++++++++++++----- src/libtomahawk/playlist/trackheader.h | 2 +- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/database/databasecommand_updatesearchindex.cpp b/src/libtomahawk/database/databasecommand_updatesearchindex.cpp index 67d9e9b60..3e461dd2c 100644 --- a/src/libtomahawk/database/databasecommand_updatesearchindex.cpp +++ b/src/libtomahawk/database/databasecommand_updatesearchindex.cpp @@ -23,6 +23,7 @@ DatabaseCommand_UpdateSearchIndex::indexTable( DatabaseImpl* db, const QString& } db->m_fuzzyIndex->appendFields( table, fields ); + qDebug() << "Building index for" << table << "finished."; } diff --git a/src/libtomahawk/database/databaseworker.cpp b/src/libtomahawk/database/databaseworker.cpp index 510d53064..2e732f085 100644 --- a/src/libtomahawk/database/databaseworker.cpp +++ b/src/libtomahawk/database/databaseworker.cpp @@ -40,6 +40,13 @@ DatabaseWorker::run() void DatabaseWorker::enqueue( const QSharedPointer& cmd ) { + if ( QThread::currentThread() != thread() ) + { +// qDebug() << Q_FUNC_INFO << "Reinvoking in correct thread."; + QMetaObject::invokeMethod( this, "enqueue", Qt::QueuedConnection, Q_ARG( QSharedPointer, cmd ) ); + return; + } + m_outstanding++; QMutexLocker lock( &m_mut ); diff --git a/src/libtomahawk/database/databaseworker.h b/src/libtomahawk/database/databaseworker.h index 83ecd1562..87073e9df 100644 --- a/src/libtomahawk/database/databaseworker.h +++ b/src/libtomahawk/database/databaseworker.h @@ -25,11 +25,12 @@ public: DatabaseWorker( DatabaseImpl*, Database*, bool mutates ); ~DatabaseWorker(); - void enqueue( const QSharedPointer& ); - bool busy() const { return m_outstanding > 0; } unsigned int outstandingJobs() const { return m_outstanding; } +public slots: + void enqueue( const QSharedPointer& ); + protected: void run(); diff --git a/src/libtomahawk/playlist/trackheader.cpp b/src/libtomahawk/playlist/trackheader.cpp index f96ab1471..42080b98b 100644 --- a/src/libtomahawk/playlist/trackheader.cpp +++ b/src/libtomahawk/playlist/trackheader.cpp @@ -26,14 +26,22 @@ TrackHeader::TrackHeader( TrackView* parent ) // m_menu->addAction( tr( "Resize columns to fit window" ), this, SLOT( onToggleResizeColumns() ) ); // m_menu->addSeparator(); -// connect( this, SIGNAL( sectionResized( int, int, int ) ), SLOT( onSectionResized( int ) ) ); + connect( this, SIGNAL( sectionResized( int, int, int ) ), SLOT( onSectionResized() ) ); connect( m_sigmap, SIGNAL( mapped( int ) ), SLOT( toggleVisibility( int ) ) ); } TrackHeader::~TrackHeader() { - qDebug() << "Storing for:" << m_parent->guid(); +} + + +void +TrackHeader::onSectionResized() +{ + if ( !m_init ) + return; + TomahawkSettings::instance()->setPlaylistColumnSizes( m_parent->guid(), saveState() ); } @@ -51,10 +59,7 @@ TrackHeader::checkState() if ( !count() || m_init ) return; - qDebug() << "Restoring for:" << m_parent->guid(); - m_init = true; QByteArray state = TomahawkSettings::instance()->playlistColumnSizes( m_parent->guid() ); - if ( !state.isEmpty() ) restoreState( state ); else @@ -72,6 +77,8 @@ TrackHeader::checkState() resizeSection( i, qMax( minimumSectionSize(), int( nw - 0.5 ) ) ); } } + + m_init = true; } diff --git a/src/libtomahawk/playlist/trackheader.h b/src/libtomahawk/playlist/trackheader.h index f541e092d..21b9e3243 100644 --- a/src/libtomahawk/playlist/trackheader.h +++ b/src/libtomahawk/playlist/trackheader.h @@ -26,7 +26,7 @@ protected: void contextMenuEvent( QContextMenuEvent* e ); private slots: -// void onSectionResized( int index ); + void onSectionResized(); void onToggleResizeColumns(); private: