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); |
