diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-01-11 21:30:15 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-01-11 21:30:15 -0500 |
commit | 97da59c3a3f51312eaa6064d974e84d0e9403fef (patch) | |
tree | 8ae1229d46a1c7da93ceeeaeca54b1ee7a47c657 | |
parent | bb8ee16b5b83366458bb23f5479bc6ea96cfa3e8 (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.c | 6 | ||||
-rw-r--r-- | trace-view-store.c | 3 |
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 | |||
29 | exit_clicked (GtkWidget *widget, gpointer data) | 29 | exit_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 | |||
38 | delete_event (GtkWidget *widget, GdkEvent *event, gpointer data) | 37 | delete_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); |