diff options
author | Stefan Kost <ensonic@users.sf.net> | 2010-10-10 22:40:19 +0300 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2010-10-10 22:41:48 +0300 |
commit | 68b85680e0340702821e0be9579d9d842ee0d352 (patch) | |
tree | 247309786057618e6c7683ee2f541728b3bad1fe | |
parent | 0bf25b5effcf301fc29e5dae32736f49d02dfbac (diff) |
ui: show number of events, queries and messages
-rw-r--r-- | src/ui/gsttlui.c | 6 | ||||
-rw-r--r-- | src/ui/gsttlui.h | 3 | ||||
-rw-r--r-- | src/ui/log-buffer.c | 16 | ||||
-rw-r--r-- | src/ui/log-buffer.h | 14 | ||||
-rw-r--r-- | src/ui/main-window.c | 74 |
5 files changed, 94 insertions, 19 deletions
diff --git a/src/ui/gsttlui.c b/src/ui/gsttlui.c index 3f957c2..0f5cee5 100644 --- a/src/ui/gsttlui.c +++ b/src/ui/gsttlui.c @@ -23,7 +23,10 @@ /* g_quarks */ GQuark log_event_type_rusage; +GQuark log_event_type_ev; GQuark log_event_type_ev_qos; +GQuark log_event_type_msg; +GQuark log_event_type_qry; GQuark log_event_type_topo_bin_add; GQuark log_event_type_topo_bin_rem; GQuark log_event_type_topo_element_add; @@ -110,7 +113,10 @@ main (gint argc, gchar *argv[]) /* create g_quarks */ log_event_type_rusage = g_quark_from_static_string ("rusage"); + log_event_type_ev = g_quark_from_static_string ("ev"); log_event_type_ev_qos = g_quark_from_static_string ("ev_qos"); + log_event_type_msg = g_quark_from_static_string ("msg"); + log_event_type_qry = g_quark_from_static_string ("qry"); log_event_type_topo_bin_add = g_quark_from_static_string ("topo_bin_add"); log_event_type_topo_bin_rem = g_quark_from_static_string ("topo_bin_rem"); log_event_type_topo_element_add = g_quark_from_static_string ("topo_element_add"); diff --git a/src/ui/gsttlui.h b/src/ui/gsttlui.h index 728c434..920e938 100644 --- a/src/ui/gsttlui.h +++ b/src/ui/gsttlui.h @@ -94,7 +94,10 @@ /* g_quarks */ extern GQuark log_event_type_rusage; +extern GQuark log_event_type_ev; extern GQuark log_event_type_ev_qos; +extern GQuark log_event_type_msg; +extern GQuark log_event_type_qry; extern GQuark log_event_type_topo_bin_add; extern GQuark log_event_type_topo_bin_rem; extern GQuark log_event_type_topo_element_add; diff --git a/src/ui/log-buffer.c b/src/ui/log-buffer.c index 16e45e2..611c181 100644 --- a/src/ui/log-buffer.c +++ b/src/ui/log-buffer.c @@ -68,6 +68,9 @@ struct _GstTLLogBufferPrivate { guint num_elems_current, num_elems_total; guint num_pads_current, num_pads_total; guint num_gppads_current, num_gppads_total; + guint num_ev_total; + guint num_msg_total; + guint num_qry_total; }; static guint signals[LAST_SIGNAL] = {0,}; @@ -94,7 +97,7 @@ g_ptr_array_set_ (GPtrArray *arr, guint ix, gchar *data) /* enum */ -GType +GType gsttl_log_buffer_mode_get_type (void) { static GType type = 0; @@ -209,12 +212,21 @@ add_log_line (GstTLLogBuffer *self, gchar *line) ev->qkey = log_event_type_rusage; ev->data.rusage.cpuload = atoi(values[3]); } else if(!strncmp (values[0], "ev_", 3)) { + ev->qkey = log_event_type_ev; + self->priv->num_ev_total++; + ev->data.ev.num_total = self->priv->num_ev_total; if(!strcmp (&values[0][3], "qos") && ix >= 7) { ev->qkey = log_event_type_ev_qos; ev->data.ev_qos.qos = atoi(values[7]); } - } else if(!strncmp (values[0], "mgs_", 4)) { + } else if(!strncmp (values[0], "msg_", 4)) { + ev->qkey = log_event_type_msg; + self->priv->num_msg_total++; + ev->data.msg.num_total = self->priv->num_msg_total; } else if(!strncmp (values[0], "qry_", 4)) { + ev->qkey = log_event_type_qry; + self->priv->num_qry_total++; + ev->data.qry.num_total = self->priv->num_qry_total; } else if(!strncmp (values[0], "topo_", 5)) { if(!strcmp (&values[0][5], "bin_add") && ix >= 7) { ev->qkey = log_event_type_topo_bin_add; diff --git a/src/ui/log-buffer.h b/src/ui/log-buffer.h index caae93e..420541a 100644 --- a/src/ui/log-buffer.h +++ b/src/ui/log-buffer.h @@ -54,9 +54,23 @@ typedef struct { struct { gint arena, hblkhd, uordblks, fordblks; } mallinfo; + + struct { + guint num_total; + } ev; struct { + guint num_total; guint qos; } ev_qos; + + struct { + guint num_total; + } msg; + + struct { + guint num_total; + } qry; + struct { guint bin_ix; guint elem_ix; diff --git a/src/ui/main-window.c b/src/ui/main-window.c index 788d091..53f9d28 100644 --- a/src/ui/main-window.c +++ b/src/ui/main-window.c @@ -82,6 +82,12 @@ typedef struct { GooCanvasItem *ci_line; } GstTLLink; +typedef enum { + GSTTL_GRAPH_REFRESH_ELEMENTS = 0, + GSTTL_GRAPH_REFRESH_PADS, + GSTTL_GRAPH_REFRESH_LINKS +} GstTLRefreshMode; + struct _GstTLMainWindowPrivate { /* used to validate if dispose has run */ gboolean dispose_has_run; @@ -98,8 +104,9 @@ struct _GstTLMainWindowPrivate { /* statistic pane widgets */ GtkLabel *running_time; GtkProgressBar *cpu_load, *qos_prop; - GtkLabel *bin_ct_label, *elem_ct_label, *pad_ct_label; - GtkLabel *gppad_ct_label; + GtkLabel *bin_ct_label, *elem_ct_label; + GtkLabel *pad_ct_label, *gppad_ct_label; + GtkLabel *ev_ct_label, *msg_ct_label, *qry_ct_label; /* time control widgets */ GtkToggleButton *record_button, *replay_button; @@ -114,12 +121,6 @@ struct _GstTLMainWindowPrivate { GPtrArray *links; }; -typedef enum { - GSTTL_GRAPH_REFRESH_ELEMENTS = 0, - GSTTL_GRAPH_REFRESH_PADS, - GSTTL_GRAPH_REFRESH_LINKS -} GstTLRefreshMode; - G_DEFINE_TYPE (GstTLMainWindow, gsttl_main_window, GTK_TYPE_WINDOW); #define LABEL_FONT_SIZE_NUM 7.0 @@ -195,7 +196,10 @@ refresh_layout (GstTLMainWindow *self, GstTLRefreshMode mode) gint gw,gh; guint *bin_z_order, z_ix; - /* FIXME: use mode to avoid some work if e.g. only a link has been changed */ + /* FIXME: use mode to avoid some work if e.g. only a link has been changed + * unfortunately graphviz does not seem to like even modifications and + * relayouting + */ // destroy old graph gvFreeLayout (self->priv->gvc,self->priv->graph); @@ -730,6 +734,7 @@ on_new_log_event (GstTLLogBuffer *lb, GstTLLogEvent *ev, gpointer user_data) static gdouble last_ts_ts = -rate_limit; static gdouble last_cpu_ts = -rate_limit; static gdouble last_qos_ts = -rate_limit; + /* FIXME: maybe rate-limmit num_{ev,msg,qry} fields too */ if((ev->ts - last_ts_ts) > rate_limit) { gtk_label_set_text (self->priv->running_time, ev->ts_str); @@ -750,9 +755,13 @@ on_new_log_event (GstTLLogBuffer *lb, GstTLLogEvent *ev, gpointer user_data) } else if(ev->qkey == log_event_type_ev_qos) { if(ev->data.ev_qos.qos <= 999) { if((ev->ts - last_qos_ts) > rate_limit) { - gchar fmt[6]; + gchar fmt[10]; + + // update statistics + snprintf (fmt, 10, "%u", ev->data.ev_qos.num_total); + gtk_label_set_text (self->priv->ev_ct_label, fmt); - snprintf (fmt, 6, "%3u %%", ev->data.ev_qos.qos); + snprintf (fmt, 10, "%3u %%", ev->data.ev_qos.qos); if(ev->data.ev_qos.qos <= 100) { gtk_progress_bar_set_fraction (self->priv->qos_prop, ((gdouble)ev->data.ev_qos.qos / 100.0)); } else { @@ -762,6 +771,21 @@ on_new_log_event (GstTLLogBuffer *lb, GstTLLogEvent *ev, gpointer user_data) last_qos_ts = ev->ts; } } + } else if(ev->qkey == log_event_type_ev) { + gchar fmt[10]; + + snprintf (fmt, 10, "%u", ev->data.ev.num_total); + gtk_label_set_text (self->priv->ev_ct_label, fmt); + } else if(ev->qkey == log_event_type_msg) { + gchar fmt[10]; + + snprintf (fmt, 10, "%u", ev->data.msg.num_total); + gtk_label_set_text (self->priv->msg_ct_label, fmt); + } else if(ev->qkey == log_event_type_qry) { + gchar fmt[10]; + + snprintf (fmt, 10, "%u", ev->data.qry.num_total); + gtk_label_set_text (self->priv->qry_ct_label, fmt); } else if(ev->qkey == log_event_type_topo_bin_add || ev->qkey == log_event_type_topo_bin_rem) { gchar fmt[20]; GPtrArray *earr = self->priv->elements; @@ -1193,18 +1217,13 @@ gsttl_main_window_init (GstTLMainWindow *self) /* FIXME: add more to the statistics pane * Number of Threads - * Number of GhostPads - * * Number of Buffers sent - * Number of Events sent - * Number of Message sent - * Number of Queries sent * * Max CPU load * Max QOS ratio * Cur/Max Memory usage */ - stats = gtk_table_new ( /*rows */ 4, /* columns */ 4, FALSE); + stats = gtk_table_new ( /*rows */ 4, /* columns */ 8, FALSE); gtk_table_set_col_spacing (GTK_TABLE (stats), 1, 6); /* first column */ @@ -1257,6 +1276,27 @@ gsttl_main_window_init (GstTLMainWindow *self) gtk_table_attach (GTK_TABLE (stats), GTK_WIDGET (self->priv->gppad_ct_label), 5, 6, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + /* fourth column */ + gtk_table_attach (GTK_TABLE (stats), gtk_label_new (_("Events")), + 6, 7, 0, 1, GTK_FILL, GTK_FILL, 6, 0); + gtk_table_attach (GTK_TABLE (stats), gtk_label_new (_("Messages")), + 6, 7, 1, 2, GTK_FILL, GTK_FILL, 6, 0); + gtk_table_attach (GTK_TABLE (stats), gtk_label_new (_("Queries")), + 6, 7, 2, 3, GTK_FILL, GTK_FILL, 6, 0); + + self->priv->ev_ct_label = GTK_LABEL (gtk_label_new ("0")); + gtk_label_set_single_line_mode (self->priv->ev_ct_label, TRUE); + gtk_table_attach (GTK_TABLE (stats), GTK_WIDGET (self->priv->ev_ct_label), + 7, 8, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + self->priv->msg_ct_label = GTK_LABEL (gtk_label_new ("0")); + gtk_label_set_single_line_mode (self->priv->msg_ct_label, TRUE); + gtk_table_attach (GTK_TABLE (stats), GTK_WIDGET (self->priv->msg_ct_label), + 7, 8, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + self->priv->qry_ct_label = GTK_LABEL (gtk_label_new ("0")); + gtk_label_set_single_line_mode (self->priv->qry_ct_label, TRUE); + gtk_table_attach (GTK_TABLE (stats), GTK_WIDGET (self->priv->qry_ct_label), + 7, 8, 2, 3, GTK_FILL, GTK_FILL, 0, 0); + gtk_box_pack_start (GTK_BOX (box), stats, FALSE, FALSE, 3); } |