-
- lttv_traceset_remove(traceset, i);
- lttv_trace_unref(trace_v); // Remove local reference
- if(!lttv_trace_get_ref_number(trace_v))
- lttv_trace_destroy(trace_v);
-
- tab->traceset_info->traceset_context =
- g_object_new(LTTV_TRACESET_STATS_TYPE, NULL);
- lttv_context_init(
- LTTV_TRACESET_CONTEXT(tab->
- traceset_info->traceset_context),traceset);
- //add state update hooks
- lttv_state_add_event_hooks(
- (LttvTracesetState*)tab->traceset_info->traceset_context);
-
- //Remove local reference to the traces.
- for(j=0; j<lttv_traceset_number(traceset); j++)
- {
- LttvTrace * trace = lttv_traceset_get(traceset, j);
- lttv_trace_unref(trace);
- }
+ trace_v = lttv_traceset_get(traceset, i);
+
+ if(lttv_trace_get_ref_number(trace_v) <= 2) {
+ /* ref 2 : traceset, local */
+ lttvwindowtraces_remove_trace(trace_v);
+ ltt_trace_close(lttv_trace(trace_v));
+ }
+
+ lttv_traceset_remove(traceset, i);
+ lttv_trace_unref(trace_v); // Remove local reference
+
+ if(!lttv_trace_get_ref_number(trace_v))
+ lttv_trace_destroy(trace_v);
+
+ tab->traceset_info->traceset_context =
+ g_object_new(LTTV_TRACESET_STATS_TYPE, NULL);
+ lttv_context_init(
+ LTTV_TRACESET_CONTEXT(tab->
+ traceset_info->traceset_context),traceset);
+ //add state update hooks
+ lttv_state_add_event_hooks(
+ (LttvTracesetState*)tab->traceset_info->traceset_context);
+
+ //Remove local reference to the traces.
+ for(j=0; j<lttv_traceset_number(traceset); j++)
+ {
+ LttvTrace * trace = lttv_traceset_get(traceset, j);
+ lttv_trace_unref(trace);
+ }