aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-01-11 21:30:15 -0500
committerSteven Rostedt <rostedt@goodmis.org>2010-01-11 21:30:15 -0500
commit97da59c3a3f51312eaa6064d974e84d0e9403fef (patch)
tree8ae1229d46a1c7da93ceeeaeca54b1ee7a47c657
parentbb8ee16b5b83366458bb23f5479bc6ea96cfa3e8 (diff)
trace-view: Add ref counting of tracecmd_input handle
Have the TraceViewStore add its own reference to the tracecmd_input handle, so that it may close it upon destruction of the model. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--trace-view-main.c6
-rw-r--r--trace-view-store.c3
2 files changed, 7 insertions, 2 deletions
diff --git a/trace-view-main.c b/trace-view-main.c
index d98ddb7..a09ddb5 100644
--- a/trace-view-main.c
+++ b/trace-view-main.c
@@ -29,7 +29,6 @@ static void
29exit_clicked (GtkWidget *widget, gpointer data) 29exit_clicked (GtkWidget *widget, gpointer data)
30{ 30{
31 gtk_widget_destroy (GTK_WIDGET (data)); /* the user data points to the main window */ 31 gtk_widget_destroy (GTK_WIDGET (data)); /* the user data points to the main window */
32 tracecmd_close(handle);
33 gtk_main_quit (); 32 gtk_main_quit ();
34} 33}
35 34
@@ -38,7 +37,6 @@ static gint
38delete_event (GtkWidget *widget, GdkEvent *event, gpointer data) 37delete_event (GtkWidget *widget, GdkEvent *event, gpointer data)
39{ 38{
40 gtk_widget_destroy (widget); /* destroy the main window */ 39 gtk_widget_destroy (widget); /* destroy the main window */
41 tracecmd_close(handle);
42 gtk_main_quit (); 40 gtk_main_quit ();
43 return TRUE; 41 return TRUE;
44} 42}
@@ -256,6 +254,10 @@ void trace_view(int argc, char **argv)
256 /* The tree needs its columns loaded now */ 254 /* The tree needs its columns loaded now */
257 trace_view_load(trace_tree, handle, spin); 255 trace_view_load(trace_tree, handle, spin);
258 256
257 /* Let the handle be freed when the trace_view is */
258 if (handle)
259 tracecmd_close(handle);
260
259 label = gtk_label_new(" Search: "); 261 label = gtk_label_new(" Search: ");
260 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); 262 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
261 gtk_widget_show(label); 263 gtk_widget_show(label);
diff --git a/trace-view-store.c b/trace-view-store.c
index a25c698..e81c1a2 100644
--- a/trace-view-store.c
+++ b/trace-view-store.c
@@ -216,6 +216,8 @@ trace_view_store_finalize (GObject *object)
216 store->spin = NULL; 216 store->spin = NULL;
217 } 217 }
218 218
219 tracecmd_close(store->handle);
220
219 /* must chain up - finalize parent */ 221 /* must chain up - finalize parent */
220 (* parent_class->finalize) (object); 222 (* parent_class->finalize) (object);
221} 223}
@@ -992,6 +994,7 @@ trace_view_store_new (struct tracecmd_input *handle)
992 994
993 newstore->handle = handle; 995 newstore->handle = handle;
994 newstore->cpus = tracecmd_cpus(handle); 996 newstore->cpus = tracecmd_cpus(handle);
997 tracecmd_ref(handle);
995 998
996 newstore->cpu_list = g_new(TraceViewRecord *, newstore->cpus); 999 newstore->cpu_list = g_new(TraceViewRecord *, newstore->cpus);
997 g_assert(newstore->cpu_list != NULL); 1000 g_assert(newstore->cpu_list != NULL);