aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt
diff options
context:
space:
mode:
Diffstat (limited to 'ui/qt')
-rw-r--r--ui/qt/packet_list_model.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/ui/qt/packet_list_model.cpp b/ui/qt/packet_list_model.cpp
index 173da7be7c..7ce670d60f 100644
--- a/ui/qt/packet_list_model.cpp
+++ b/ui/qt/packet_list_model.cpp
@@ -51,6 +51,8 @@
#include <wsutil/time_util.h>
#endif
+static const int reserved_packets_ = 100000;
+
PacketListModel::PacketListModel(QObject *parent, capture_file *cf) :
QAbstractItemModel(parent),
number_to_row_(QVector<int>(0, -1)),
@@ -60,6 +62,12 @@ PacketListModel::PacketListModel(QObject *parent, capture_file *cf) :
{
setCaptureFile(cf);
PacketListRecord::clearStringPool();
+
+ physical_rows_.reserve(reserved_packets_);
+ visible_rows_.reserve(reserved_packets_);
+ new_visible_rows_.reserve(1000);
+ number_to_row_.reserve(reserved_packets_);
+
connect(this, SIGNAL(maxLineCountChanged(QModelIndex)),
this, SLOT(emitItemHeightChanged(QModelIndex)),
Qt::QueuedConnection);
@@ -104,7 +112,7 @@ guint PacketListModel::recreateVisibleRows()
int pos = visible_rows_.count();
beginResetModel();
- visible_rows_.clear();
+ visible_rows_.resize(0);
number_to_row_.fill(-1);
endResetModel();
@@ -123,10 +131,10 @@ guint PacketListModel::recreateVisibleRows()
void PacketListModel::clear() {
beginResetModel();
qDeleteAll(physical_rows_);
- physical_rows_.clear();
- visible_rows_.clear();
- new_visible_rows_.clear();
- number_to_row_.clear();
+ physical_rows_.resize(0);
+ visible_rows_.resize(0);
+ new_visible_rows_.resize(0);
+ number_to_row_.resize(0);
PacketListRecord::clearStringPool();
endResetModel();
max_row_height_ = 0;
@@ -331,7 +339,7 @@ void PacketListModel::sort(int column, Qt::SortOrder order)
std::sort(physical_rows_.begin(), physical_rows_.end(), recordLessThan);
beginResetModel();
- visible_rows_.clear();
+ visible_rows_.resize(0);
number_to_row_.fill(-1);
foreach (PacketListRecord *record, physical_rows_) {
if (record->frameData()->flags.passed_dfilter || record->frameData()->flags.ref_time) {
@@ -575,7 +583,7 @@ void PacketListModel::flushVisibleRows()
number_to_row_[fdata->num] = visible_rows_.count() - 1;
}
endInsertRows();
- new_visible_rows_.clear();
+ new_visible_rows_.resize(0);
}
}