Browse Source

Call updateTorrentNumbers() once per every model refresh, not once for every row changed

Torrent numbers were recalculated on every dataChanged() signal. The previous commit
greatly increases the number of dataChanged() signals.

HEAD^^:
    Total wall clock:                 97.069s
    updateTorrentNumbers() time:       0.033s

HEAD^:
    Total wall clock:                 96.132s
    updateTorrentNumbers() time:       0.179s

HEAD:
    Total wall clock:                 95.535s
    updateTorrentNumbers() time:       0.047s

After this commit the time of updateTorrentNumbers() is (almost) back to
the level that it was in HEAD^^.
adaptive-webui-19844
Ivan Sorokin 10 years ago
parent
commit
0976918ca2
  1. 2
      src/qtlibtorrent/torrentmodel.cpp
  2. 1
      src/qtlibtorrent/torrentmodel.h
  3. 2
      src/transferlistfilterswidget.cpp

2
src/qtlibtorrent/torrentmodel.cpp

@ -595,6 +595,8 @@ void TorrentModel::stateUpdated(const std::vector<libtorrent::torrent_status> &s @@ -595,6 +595,8 @@ void TorrentModel::stateUpdated(const std::vector<libtorrent::torrent_status> &s
notifyTorrentChanged(row);
}
}
emit modelRefreshed();
}
bool TorrentModel::inhibitSystem()

1
src/qtlibtorrent/torrentmodel.h

@ -101,6 +101,7 @@ signals: @@ -101,6 +101,7 @@ signals:
void torrentAdded(TorrentModelItem *torrentItem);
void torrentAboutToBeRemoved(TorrentModelItem *torrentItem);
void torrentChangedLabel(TorrentModelItem *torrentItem, QString previous, QString current);
void modelRefreshed();
private slots:
void addTorrent(const QTorrentHandle& h);

2
src/transferlistfilterswidget.cpp

@ -203,7 +203,7 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi @@ -203,7 +203,7 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
// SIGNAL/SLOT
connect(statusFilters, SIGNAL(currentRowChanged(int)), transferList, SLOT(applyStatusFilter(int)));
connect(transferList->getSourceModel(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(updateTorrentNumbers()));
connect(transferList->getSourceModel(), SIGNAL(modelRefreshed()), SLOT(updateTorrentNumbers()));
connect(transferList->getSourceModel(), SIGNAL(torrentAdded(TorrentModelItem*)), SLOT(handleNewTorrent(TorrentModelItem*)));
connect(labelFilters, SIGNAL(currentRowChanged(int)), this, SLOT(applyLabelFilter(int)));
connect(labelFilters, SIGNAL(torrentDropped(int)), this, SLOT(torrentDropped(int)));

Loading…
Cancel
Save