Use the C++ wrapper to hold the reference to the trace class.
Note that the existing comment said it is a weak reference, but the code
shows otherwise.
Change-Id: Ic486a65ab40953c5d6a3ddb7d057d2caa85cf1c0
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8415
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12351
Tested-by: jenkins <jenkins@lttng.org>
g_ptr_array_free(trace->stream_iterators, TRUE);
BT_TRACE_PUT_REF_AND_RESET(trace->trace);
g_ptr_array_free(trace->stream_iterators, TRUE);
BT_TRACE_PUT_REF_AND_RESET(trace->trace);
- BT_TRACE_CLASS_PUT_REF_AND_RESET(trace->trace_class);
lttng_live_metadata_fini(trace);
delete trace;
lttng_live_metadata_fini(trace);
delete trace;
lttng_live_trace *trace = new lttng_live_trace {session->logger};
trace->session = session;
trace->id = trace_id;
lttng_live_trace *trace = new lttng_live_trace {session->logger};
trace->session = session;
trace->id = trace_id;
- trace->trace_class = NULL;
trace->trace = NULL;
trace->stream_iterators =
g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_stream_iterator_destroy);
trace->trace = NULL;
trace->stream_iterators =
g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_stream_iterator_destroy);
/* Owned by this. */
bt_trace *trace = nullptr;
/* Owned by this. */
bt_trace *trace = nullptr;
- /* Weak reference. */
- bt_trace_class *trace_class = nullptr;
+ bt2::TraceClass::Shared trace_class;
struct lttng_live_metadata *metadata = nullptr;
struct lttng_live_metadata *metadata = nullptr;
struct ctf_trace_class *tc =
ctf_metadata_decoder_borrow_ctf_trace_class(metadata->decoder.get());
struct ctf_trace_class *tc =
ctf_metadata_decoder_borrow_ctf_trace_class(metadata->decoder.get());
- trace->trace_class = ctf_metadata_decoder_get_ir_trace_class(metadata->decoder.get())
- .release()
- .libObjPtr();
- trace->trace = bt_trace_create(trace->trace_class);
+ trace->trace_class = ctf_metadata_decoder_get_ir_trace_class(metadata->decoder.get());
+ trace->trace = bt_trace_create(trace->trace_class->libObjPtr());
if (!trace->trace) {
BT_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger, "Failed to create bt_trace");
goto error;
if (!trace->trace) {
BT_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger, "Failed to create bt_trace");
goto error;
"Failed to configure ctf trace class");
goto error;
}
"Failed to configure ctf trace class");
goto error;
}
- if (!stream_classes_all_have_default_clock_class(trace->trace_class,
+ if (!stream_classes_all_have_default_clock_class(trace->trace_class->libObjPtr(),
metadata->logger)) {
/* Error logged in function. */
goto error;
}
metadata->logger)) {
/* Error logged in function. */
goto error;
}
- trace->clock_class = borrow_any_clock_class(trace->trace_class);
+ trace->clock_class = borrow_any_clock_class(trace->trace_class->libObjPtr());
}
/* The metadata was updated successfully. */
}
/* The metadata was updated successfully. */