checked in On Sun, 20 Feb 2005 16:39:55 -0700, Alejandro Vaquero <alejandrovaquero@xxxxxxxxx> wrote: > Thanks Lars, > > Also attached find a patch to graph_analysis.c to add support of mouse > scroll wheel and directional keys (Up, down, left, and right) in the > Graph Analysis. > > Regards > Alejandro > > Lars Roland wrote: > > > Lars Roland schrieb: > > > >> Having a short look at the patch, I have to disagree on an > >> implementation detail: > >> > >> I don't like to have the mgcp dissector allocating a mgcp_info_t > >> structure for each dissection of an mgcp packet without freeing it. > >> This could be considered to be a big memory leak. > >> Instead use a static array of mgcp_info_t structures. You can take > >> the h225 or the q931 dissector as an example of such an implementation. > > > > > > > >>> On Fri, 18 Feb 2005 13:00:00 -0700, Alejandro Vaquero > >>> <alejandrovaquero@xxxxxxxxx> wrote: > >>> > >>>> Hi All, > >>>> find attached a patch to add MGCP calls to the "Voip Analysis". The > >>>> implementation is oriented to MGCP Residential Gateways. > >>> > > > > checked in along with the changes I've proposed above and an > > additional check for the presence of the mgcp plugin. > > > > Regards, > > Lars > > > > _______________________________________________ > > Ethereal-dev mailing list > > Ethereal-dev@xxxxxxxxxxxx > > http://www.ethereal.com/mailman/listinfo/ethereal-dev > > > > > Index: graph_analysis.c > =================================================================== > --- graph_analysis.c (revision 13449) > +++ graph_analysis.c (working copy) > @@ -38,6 +38,7 @@ > > /* in /gtk ... */ > #include <gtk/gtk.h> > +#include <gdk/gdkkeysyms.h> > #include "gtkglobals.h" > > #include "dlg_utils.h" > @@ -647,6 +648,63 @@ > } > > /****************************************************************************/ > +static gint scroll_event(GtkWidget *widget, GdkEventButton *event _U_) > +{ > + graph_analysis_data_t *user_data; > + > + user_data=(graph_analysis_data_t *)OBJECT_GET_DATA(widget, "graph_analysis_data_t"); > + > + /* Up scroll */ > + if (event->state == 0){ > + if (user_data->dlg.first_item == 0) return TRUE; > + user_data->dlg.first_item--; > + > + /* Down scroll */ > + } else { > + if ((user_data->dlg.first_item+user_data->dlg.v_scrollbar_adjustment->page_size+1 == user_data->num_items)) return TRUE; > + user_data->dlg.first_item++; > + } > + dialog_graph_redraw(user_data); > + > + return TRUE; > +} > + > +/****************************************************************************/ > +static gint key_press_event(GtkWidget *widget, GdkEventKey *event _U_) > +{ > + graph_analysis_data_t *user_data; > + > + user_data=(graph_analysis_data_t *)OBJECT_GET_DATA(widget, "graph_analysis_data_t"); > + > + /* Up arrow */ > + if (event->keyval == GDK_Up){ > + if (user_data->dlg.selected_item == 0) return TRUE; > + user_data->dlg.selected_item--; > + if ( (user_data->dlg.selected_item<user_data->dlg.first_item) || (user_data->dlg.selected_item>user_data->dlg.first_item+user_data->dlg.v_scrollbar_adjustment->page_size) ) > + user_data->dlg.first_item = user_data->dlg.selected_item; > + /* Down arrow */ > + } else if (event->keyval == GDK_Down){ > + if (user_data->dlg.selected_item == user_data->num_items-1) return TRUE; > + user_data->dlg.selected_item++; > + if ( (user_data->dlg.selected_item<user_data->dlg.first_item) || (user_data->dlg.selected_item>user_data->dlg.first_item+user_data->dlg.v_scrollbar_adjustment->page_size) ) > + user_data->dlg.first_item = (guint32)user_data->dlg.selected_item-(guint32)user_data->dlg.v_scrollbar_adjustment->page_size; > + } else if (event->keyval == GDK_Left){ > + if (user_data->dlg.first_node == 0) return TRUE; > + user_data->dlg.first_node--; > + } else if (event->keyval == GDK_Right){ > + if ((user_data->dlg.first_node+user_data->dlg.h_scrollbar_adjustment->page_size+1 == user_data->num_nodes)) return TRUE; > + user_data->dlg.first_node++; > + } > + > + user_data->dlg.needs_redraw=TRUE; > + dialog_graph_draw(user_data); > + > + cf_goto_frame(&cfile, user_data->dlg.items[user_data->dlg.selected_item-user_data->dlg.first_item].frame_num); > + > + return TRUE; > +} > + > +/****************************************************************************/ > static gint expose_event(GtkWidget *widget, GdkEventExpose *event) > { > graph_analysis_data_t *user_data; > @@ -795,6 +853,8 @@ > > user_data->dlg.draw_area=gtk_drawing_area_new(); > + GTK_WIDGET_SET_FLAGS(user_data->dlg.draw_area, GTK_CAN_FOCUS); > + gtk_widget_grab_focus(user_data->dlg.draw_area); > SIGNAL_CONNECT(user_data->dlg.draw_area, "destroy", quit, user_data); > OBJECT_SET_DATA(user_data->dlg.draw_area, "graph_analysis_data_t", user_data); > > @@ -807,6 +867,8 @@ > gtk_widget_add_events (user_data->dlg.draw_area, > GDK_BUTTON_PRESS_MASK); > SIGNAL_CONNECT(user_data->dlg.draw_area, "button_press_event", button_press_event, user_data); > + SIGNAL_CONNECT(user_data->dlg.draw_area, "scroll_event", scroll_event, user_data); > + SIGNAL_CONNECT(user_data->dlg.draw_area, "key_press_event", key_press_event, user_data); > > gtk_widget_show(user_data->dlg.draw_area); > gtk_box_pack_start(GTK_BOX(vbox), user_data->dlg.draw_area, TRUE, TRUE, 0); > > > _______________________________________________ > Ethereal-dev mailing list > Ethereal-dev@xxxxxxxxxxxx > http://www.ethereal.com/mailman/listinfo/ethereal-dev > > >
Powered by MHonArc 2.6.10