summaryrefslogtreecommitdiff
path: root/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mainwindow.cpp')
-rw-r--r--mainwindow.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 9b6534d..efaf5b7 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -244,8 +244,16 @@ MainWindow::MainWindow(QWidget *parent)
if (!ppp) throw std::runtime_error("PcapPlusPlus was not initialized.");
isProcessing = true;
+ const QDateTime startTime = QDateTime::currentDateTime();
while (ppp->processPacket(packet)) {
+ if (isAboutToClose)
+ break;
+
emit onPacketAvailable();
+
+ const QDateTime currentTime = QDateTime::currentDateTime();
+ if (startTime.msecsTo(currentTime) % 100 == 0)
+ qApp->processEvents();
}
ui->tableWidget->clearSelection();
isProcessing = false;
@@ -315,6 +323,12 @@ pcpp::RawPacket* MainWindow::currentSelectedPacket()
return &ppp->getRawPacket(selected.last()->row());
}
+void MainWindow::closeEvent(QCloseEvent *closeEvent)
+{
+ isAboutToClose = true;
+ closeEvent->accept();
+}
+
bool MainWindow::eventFilter(QObject *obj __attribute__((unused)), QEvent *event)
{
if (event->type() == QEvent::MouseMove)