diff options
author | Peter Wu <peter@lekensteyn.nl> | 2016-01-10 18:07:24 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2016-01-13 07:38:25 +0000 |
commit | 5539dba1df313816491bb28718433d4d81162aa3 (patch) | |
tree | c799faf7ef86de5dbcf8c248f43b93b119c801e5 /ui | |
parent | c8a1f9d46ef3cb05f18bba07816ff9f5f6a5d53e (diff) |
Do not apply color rule filter every dissection
Introduce a frame_data flag "need_colorize" to indicate that coloring
rules need to be evaluated and set it for the GUI (not tshark). This
restores the original performance characteristics.
It additionally fixes a regression where the color filter name and
filter is not shown anymore in the tree (I guess it is related to the
edt->tree being NULL when re-selected, resulting in empty color_filter).
Remaining problems:
- Display filter cannot contain frame.coloring_rule.* fields. Code is
present to enable this, but then a method is needed to avoid an
expensive second calculation (which is why it is disabled).
- The columns are still not updated after coloring rule change.
- The two frame.coloring_rule fields in the tree are not updated when
the coloring rule is changed (e.g. Ctrl-1).
The last two issues were supposed to be fixed by the previous patch, but
there is probably some missing code... Tested with GTK and Qt.
Bug: 11980
Change-Id: I3ef7713b28db242e178d20f6a5f333374718b52e
Reviewed-on: https://code.wireshark.org/review/13170
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/gtk/packet_list_store.c | 4 | ||||
-rw-r--r-- | ui/qt/packet_list_record.cpp | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/ui/gtk/packet_list_store.c b/ui/gtk/packet_list_store.c index 5be13931a8..bbfe866f2e 100644 --- a/ui/gtk/packet_list_store.c +++ b/ui/gtk/packet_list_store.c @@ -1152,8 +1152,10 @@ packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord * create_proto_tree, FALSE /* proto_tree_visible */); - if (dissect_color) + if (dissect_color) { color_filters_prime_edt(&edt); + fdata->flags.need_colorize = 1; + } if (dissect_columns) col_custom_prime_edt(&edt, cinfo); diff --git a/ui/qt/packet_list_record.cpp b/ui/qt/packet_list_record.cpp index b6659db550..bdd17905a6 100644 --- a/ui/qt/packet_list_record.cpp +++ b/ui/qt/packet_list_record.cpp @@ -140,8 +140,11 @@ void PacketListRecord::dissect(capture_file *cap_file, bool dissect_color) create_proto_tree, FALSE /* proto_tree_visible */); - if (dissect_color) + /* Re-color when the coloring rules are changed via the UI. */ + if (dissect_color) { color_filters_prime_edt(&edt); + fdata_->flags.need_colorize = 1; + } if (dissect_columns) col_custom_prime_edt(&edt, cinfo); |