Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
ows data items: population of children already runs in a thread - don…
…'t use subthreads for each provider (fixes #12507)

(cherry picked from commit 402df03)
  • Loading branch information
jef-n committed Jun 29, 2015
1 parent 67d8bf5 commit 129be68
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 41 deletions.
3 changes: 3 additions & 0 deletions src/app/qgisapp.cpp
Expand Up @@ -6929,6 +6929,9 @@ void QgisApp::showMouseCoordinate( const QgsPoint & p )
{
if ( mMapCanvas->mapUnits() == QGis::Degrees )
{
if ( !mMapCanvas->mapSettings().destinationCrs().isValid() )
return;

QgsPoint geo = p;
if ( !mMapCanvas->mapSettings().destinationCrs().geographicFlag() )
{
Expand Down
6 changes: 3 additions & 3 deletions src/core/qgsdataitem.cpp
Expand Up @@ -297,14 +297,14 @@ QVector<QgsDataItem*> QgsDataItem::createChildren()
return QVector<QgsDataItem*>();
}

void QgsDataItem::populate()
void QgsDataItem::populate( bool foreground )
{
if ( state() == Populated || state() == Populating )
return;

QgsDebugMsg( "mPath = " + mPath );

if ( capabilities2() & QgsDataItem::Fast )
if ( capabilities2() & QgsDataItem::Fast || foreground )
{
populate( createChildren() );
}
Expand Down Expand Up @@ -337,7 +337,7 @@ QVector<QgsDataItem*> QgsDataItem::runCreateChildren( QgsDataItem* item )
QgsDebugMsg( "moveToThread child " + child->path() );
child->moveToThread( QApplication::instance()->thread() ); // moves also children
}
QgsDebugMsg( "finished path = " + item->path() );
QgsDebugMsg( QString( "finished path %1: %2 children" ).arg( item->path() ).arg( children.size() ) );
return children;
}

Expand Down
3 changes: 2 additions & 1 deletion src/core/qgsdataitem.h
Expand Up @@ -207,7 +207,8 @@ class CORE_EXPORT QgsDataItem : public QObject
virtual void deleteLater();

// Populate children using children vector created by createChildren()
virtual void populate();
// @param foreground run createChildren in foreground
virtual void populate( bool foreground = false );

/** Remove children recursively and set as not populated. This is used when refreshing collapsed items. */
virtual void depopulate();
Expand Down
2 changes: 1 addition & 1 deletion src/providers/ows/qgsowsdataitems.cpp
Expand Up @@ -69,7 +69,7 @@ QVector<QgsDataItem*> QgsOWSConnectionItem::createChildren()
continue;
}

item->populate();
item->populate( true ); // populate in foreground - this is already run in a thread

layerCount += item->rowCount();
if ( item->rowCount() > 0 )
Expand Down
38 changes: 2 additions & 36 deletions src/providers/wms/qgswmsdataitems.cpp
Expand Up @@ -20,13 +20,9 @@
#include "qgswmscapabilities.h"
#include "qgswmsconnection.h"
#include "qgswmssourceselect.h"

#include "qgsnewhttpconnection.h"

#include "qgstilescalewidget.h"

#include "qgsapplication.h"

// ---------------------------------------------------------------------------
QgsWMSConnectionItem::QgsWMSConnectionItem( QgsDataItem* parent, QString name, QString path, QString uri )
: QgsDataCollectionItem( parent, name, path )
Expand All @@ -46,19 +42,7 @@ QVector<QgsDataItem*> QgsWMSConnectionItem::createChildren()

QgsDataSourceURI uri;
uri.setEncodedUri( mUri );
#if 0
if ( mPath.contains( "url=" ) )
{
encodedUri = mPath;
uri.setEncodedUri( encodedUri );
}
else
{
QgsWMSConnection connection( mName );
uri = connection.uri();
encodedUri = uri.encodedUri();
}
#endif

QgsDebugMsg( "mUri = " + mUri );

QgsWmsSettings wmsSettings;
Expand All @@ -70,25 +54,6 @@ QVector<QgsDataItem*> QgsWMSConnectionItem::createChildren()

QgsWmsCapabilitiesDownload capDownload( wmsSettings.baseUrl(), wmsSettings.authorization() );

#if 0
QWidget *mainWindow = 0;

QWidgetList topLevelWidgets = qApp->topLevelWidgets();
for ( QWidgetList::iterator it = topLevelWidgets.begin(); it != topLevelWidgets.end(); ++it )
{
if (( *it )->objectName() == "QgisApp" )
{
mainWindow = *it;
break;
}
}

if ( mainWindow )
{
connect( &capDownload, SIGNAL( statusChanged( QString ) ), mainWindow, SLOT( showStatusMessage( QString ) ) );
}
#endif

bool res = capDownload.downloadCapabilities();

if ( !res )
Expand Down Expand Up @@ -402,6 +367,7 @@ QWidget * QgsWMSRootItem::paramWidget()
connect( select, SIGNAL( connectionsChanged() ), this, SLOT( connectionsChanged() ) );
return select;
}

void QgsWMSRootItem::connectionsChanged()
{
refresh();
Expand Down

0 comments on commit 129be68

Please sign in to comment.