diff options
Diffstat (limited to 'epan/dissectors/packet-frame.c')
-rw-r--r-- | epan/dissectors/packet-frame.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/epan/dissectors/packet-frame.c b/epan/dissectors/packet-frame.c index 2cec2d50fa..83e6c963f9 100644 --- a/epan/dissectors/packet-frame.c +++ b/epan/dissectors/packet-frame.c @@ -616,11 +616,15 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* ENDTRY; } - /* XXX optimize this so it doesn't need to scan the second time */ - color_filter = color_filters_colorize_packet(fr_data->color_edt); - - if (color_filter) { + /* Attempt to (re-)calculate color filters (if any). */ + if (pinfo->fd->flags.need_colorize) { + color_filter = color_filters_colorize_packet(fr_data->color_edt); pinfo->fd->color_filter = color_filter; + pinfo->fd->flags.need_colorize = 0; + } else { + color_filter = pinfo->fd->color_filter; + } + if (color_filter) { item = proto_tree_add_string(fh_tree, hf_frame_color_filter_name, tvb, 0, 0, color_filter->filter_name); PROTO_ITEM_SET_GENERATED(item); |