diff options
Diffstat (limited to 'mainwindow.cpp')
-rw-r--r-- | mainwindow.cpp | 14 |
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) |