aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/qt/models/voip_calls_info_model.cpp7
-rw-r--r--ui/qt/models/voip_calls_info_model.h1
-rw-r--r--ui/qt/voip_calls_dialog.cpp12
-rw-r--r--ui/qt/voip_calls_dialog.h2
-rw-r--r--ui/voip_calls.c3
5 files changed, 20 insertions, 5 deletions
diff --git a/ui/qt/models/voip_calls_info_model.cpp b/ui/qt/models/voip_calls_info_model.cpp
index c3caebc9f3..5baed965e3 100644
--- a/ui/qt/models/voip_calls_info_model.cpp
+++ b/ui/qt/models/voip_calls_info_model.cpp
@@ -198,6 +198,13 @@ void VoipCallsInfoModel::updateCalls(GQueue *callsinfos)
}
}
+void VoipCallsInfoModel::removeAllCalls()
+{
+ beginRemoveRows(QModelIndex(), 0, rowCount() - 1);
+ callinfos_.clear();
+ endRemoveRows();
+}
+
// Proxy model that allows columns to be sorted.
VoipCallsInfoSortedModel::VoipCallsInfoSortedModel(QObject *parent) :
diff --git a/ui/qt/models/voip_calls_info_model.h b/ui/qt/models/voip_calls_info_model.h
index 3f8931d380..dc833b2c1e 100644
--- a/ui/qt/models/voip_calls_info_model.h
+++ b/ui/qt/models/voip_calls_info_model.h
@@ -33,6 +33,7 @@ public:
void setTimeOfDay(bool timeOfDay);
bool timeOfDay() const;
void updateCalls(GQueue *callsinfos);
+ void removeAllCalls();
static voip_calls_info_t *indexToCallInfo(const QModelIndex &index);
diff --git a/ui/qt/voip_calls_dialog.cpp b/ui/qt/voip_calls_dialog.cpp
index 051cfda3be..29008ddc34 100644
--- a/ui/qt/voip_calls_dialog.cpp
+++ b/ui/qt/voip_calls_dialog.cpp
@@ -81,6 +81,7 @@ VoipCallsDialog::VoipCallsDialog(QWidget &parent, CaptureFile &cf, bool all_flow
memset (&tapinfo_, 0, sizeof(tapinfo_));
tapinfo_.tap_packet = tapPacket;
+ tapinfo_.tap_reset = tapReset;
tapinfo_.tap_draw = tapDraw;
tapinfo_.tap_data = this;
tapinfo_.callsinfos = g_queue_new();
@@ -176,10 +177,13 @@ void VoipCallsDialog::changeEvent(QEvent *event)
QDialog::changeEvent(event);
}
-//void VoipCallsDialog::tapReset(void *)
-//{
-// voip_calls_tapinfo_t *tapinfo = (voip_calls_tapinfo_t *) tapinfo_ptr;
-//}
+void VoipCallsDialog::tapReset(void *tapinfo_ptr)
+{
+ voip_calls_tapinfo_t *tapinfo = static_cast<voip_calls_tapinfo_t *>(tapinfo_ptr);
+ VoipCallsDialog *voip_calls_dialog = static_cast<VoipCallsDialog *>(tapinfo->tap_data);
+ voip_calls_dialog->call_infos_model_->removeAllCalls();
+ voip_calls_reset_all_taps(tapinfo);
+}
tap_packet_status VoipCallsDialog::tapPacket(void *, packet_info *, epan_dissect_t *, const void *)
{
diff --git a/ui/qt/voip_calls_dialog.h b/ui/qt/voip_calls_dialog.h
index f1bf5c5efb..e28a46b6b0 100644
--- a/ui/qt/voip_calls_dialog.h
+++ b/ui/qt/voip_calls_dialog.h
@@ -68,7 +68,7 @@ private:
bool voip_calls_tap_listeners_removed_;
// Tap callbacks
-// static void tapReset(void *tapinfo_ptr);
+ static void tapReset(void *tapinfo_ptr);
static tap_packet_status tapPacket(void *tapinfo_ptr, packet_info *pinfo, epan_dissect_t *, const void *data);
static void tapDraw(void *tapinfo_ptr);
diff --git a/ui/voip_calls.c b/ui/voip_calls.c
index 8613411035..c52548a95d 100644
--- a/ui/voip_calls.c
+++ b/ui/voip_calls.c
@@ -286,7 +286,10 @@ voip_calls_reset_all_taps(voip_calls_tapinfo_t *tapinfo)
g_queue_clear(tapinfo->callsinfos);
/* free the SIP_HASH */
if(NULL!=tapinfo->callsinfo_hashtable[SIP_HASH])
+ {
g_hash_table_remove_all (tapinfo->callsinfo_hashtable[SIP_HASH]);
+ tapinfo->callsinfo_hashtable[SIP_HASH] = NULL;
+ }
/* free the strinfo data items first */
list = g_list_first(tapinfo->rtpstream_list);