summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2010-10-10 22:40:19 +0300
committerStefan Kost <ensonic@users.sf.net>2010-10-10 22:41:48 +0300
commit68b85680e0340702821e0be9579d9d842ee0d352 (patch)
tree247309786057618e6c7683ee2f541728b3bad1fe
parent0bf25b5effcf301fc29e5dae32736f49d02dfbac (diff)
ui: show number of events, queries and messages
-rw-r--r--src/ui/gsttlui.c6
-rw-r--r--src/ui/gsttlui.h3
-rw-r--r--src/ui/log-buffer.c16
-rw-r--r--src/ui/log-buffer.h14
-rw-r--r--src/ui/main-window.c74
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);
}