Move new_packet_list_dissect() to packet_list_store.c. We need to have it there in...
authorkrj <krj@f5534014-38df-0310-8fa8-9805f1628bb7>
Sat, 5 Sep 2009 15:46:47 +0000 (15:46 +0000)
committerkrj <krj@f5534014-38df-0310-8fa8-9805f1628bb7>
Sat, 5 Sep 2009 15:46:47 +0000 (15:46 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@29717 f5534014-38df-0310-8fa8-9805f1628bb7

gtk/new_packet_list.c
gtk/packet_list_store.c
gtk/packet_list_store.h

index 0bb1149a94c6659d21af2adf75bf958431f7319f..dfa54b9830f3a81e5e0e129c5b8b55e210931c39 100644 (file)
@@ -592,48 +592,6 @@ new_packet_list_get_row_data(gint row)
        return record->fdata;
 }
 
-static void
-new_packet_list_dissect(PacketListRecord *record)
-{
-       epan_dissect_t edt;
-       int err;
-       gchar *err_info;
-       frame_data *fdata;
-       column_info *cinfo;
-       gint col;
-       guint row;
-
-       fdata = record->fdata;
-       row = record->physical_pos;
-       cinfo = &cfile.cinfo;
-
-       if (!wtap_seek_read(cfile.wth, fdata->file_off, &cfile.pseudo_header,
-               cfile.pd, fdata->cap_len, &err, &err_info)) {
-                       simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
-                       cf_read_error_message(err, err_info), cfile.filename);
-                       return;
-       }
-
-       epan_dissect_init(&edt, TRUE /* create_proto_tree */, FALSE /* proto_tree_visible */);
-       color_filters_prime_edt(&edt);
-       col_custom_prime_edt(&edt, cinfo);
-       epan_dissect_run(&edt, &cfile.pseudo_header, cfile.pd, fdata, cinfo);
-       fdata->color_filter = color_filters_colorize_packet(0 /* row - unused */, &edt);
-
-       /* "Stringify" non frame_data vals */
-       epan_dissect_fill_in_columns(&edt, FALSE /* fill_fd_colums */);
-
-       for(col = 0; col < cinfo->num_cols; ++col) {
-               /* Skip columns based om frame_data because we already store those. */
-               if (!col_based_on_frame_data(cinfo, col))
-                       packet_list_change_record(packetlist, row, col, cinfo);
-       }
-
-       record->dissected = TRUE;
-
-       epan_dissect_cleanup(&edt);
-}
-
 static void
 show_cell_data_func(GtkTreeViewColumn *col _U_, GtkCellRenderer *renderer,
                        GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
@@ -655,7 +613,7 @@ show_cell_data_func(GtkTreeViewColumn *col _U_, GtkCellRenderer *renderer,
                color_filter = fdata->color_filter;
        else {
                g_assert(fdata->col_text == NULL);
-               new_packet_list_dissect(record);
+               packet_list_dissect_and_cache(packetlist, iter);
                color_filter = fdata->color_filter;
        }
 
index 72bca2ec656751232b7f5bc3bef39bfb5e98b006..e2731fa7dc320cb7266db93affb2f855a28d6163 100644 (file)
 #include <gtk/gtk.h>
 #include <glib.h>
 
+#include <epan/epan_dissect.h>
 #include "epan/column_info.h"
 #include "epan/column.h"
 
+#include "color.h"
+#include "color_filters.h"
+
 #include "packet_list_store.h"
 #include "globals.h"
+#include "../simple_dialog.h"
 
 static void packet_list_init(PacketList *pkg_tree);
 static void packet_list_class_init(PacketListClass *klass);
@@ -878,6 +883,54 @@ packet_list_recreate_visible_rows(PacketList *packet_list)
        return vis_idx;
 }
 
+void
+packet_list_dissect_and_cache(PacketList *packet_list, GtkTreeIter *iter)
+{
+       epan_dissect_t edt;
+       int err;
+       gchar *err_info;
+       frame_data *fdata;
+       column_info *cinfo;
+       gint col;
+       PacketListRecord *record;
+
+       g_return_if_fail(packet_list != NULL);
+       g_return_if_fail(PACKETLIST_IS_LIST(packet_list));
+       g_return_if_fail(iter != NULL);
+       g_return_if_fail(iter->user_data != NULL);
+
+       record = iter->user_data;
+
+       fdata = record->fdata;
+       cinfo = &cfile.cinfo;
+
+       if (!wtap_seek_read(cfile.wth, fdata->file_off, &cfile.pseudo_header,
+               cfile.pd, fdata->cap_len, &err, &err_info)) {
+                       simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
+                       cf_read_error_message(err, err_info), cfile.filename);
+                       return;
+       }
+
+       epan_dissect_init(&edt, TRUE /* create_proto_tree */, FALSE /* proto_tree_visible */);
+       color_filters_prime_edt(&edt);
+       col_custom_prime_edt(&edt, cinfo);
+       epan_dissect_run(&edt, &cfile.pseudo_header, cfile.pd, fdata, cinfo);
+       fdata->color_filter = color_filters_colorize_packet(0 /* row - unused */, &edt);
+
+       /* "Stringify" non frame_data vals */
+       epan_dissect_fill_in_columns(&edt, FALSE /* fill_fd_colums */);
+
+       for(col = 0; col < cinfo->num_cols; ++col) {
+               /* Skip columns based om frame_data because we already store those. */
+               if (!col_based_on_frame_data(cinfo, col))
+                       packet_list_change_record(packet_list, record->physical_pos, col, cinfo);
+       }
+
+       record->dissected = TRUE;
+
+       epan_dissect_cleanup(&edt);
+}
+
 void
 packet_list_reset_dissected(PacketList *packet_list)
 {
index a250d9c7ff01cfb64572dfa9868f4ba7752722b5..82d8ad4032cec41108ac78c53f890c1d0592a83c 100644 (file)
@@ -94,6 +94,7 @@ guint packet_list_recreate_visible_rows(PacketList *packet_list);
 gboolean packet_list_visible_record(PacketList *packet_list, GtkTreeIter *iter);
 gint packet_list_append_record(PacketList *packet_list, frame_data *fdata);
 void packet_list_change_record(PacketList *packet_list, guint row, gint col, column_info *cinfo);
+void packet_list_dissect_and_cache(PacketList *packet_list, GtkTreeIter *iter);
 void packet_list_reset_dissected(PacketList *packet_list);
 #endif /* NEW_PACKET_LIST */