X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fctf.c;h=e59e3573b8709b6440e37f8560ca3dfe1e737298;hp=a2403a77ab8d8906e18e59cb41d6a68684e2ba7a;hb=15d4fe3c66b4bc1453f82c075634e325e3008162;hpb=86b06ede131de636cd9ee62ea79d37f86e75c257 diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index a2403a77..e59e3573 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -699,6 +699,9 @@ void ctf_packet_seek(struct stream_pos *stream_pos, size_t index, int whence) break; } case SEEK_SET: + packet_index = &g_array_index(pos->packet_cycles_index, + struct packet_index, index); + pos->last_events_discarded = packet_index->events_discarded; pos->cur_index = index; file_stream->parent.prev_real_timestamp = 0; file_stream->parent.prev_real_timestamp_end = 0; @@ -1264,6 +1267,7 @@ int create_stream_packet_index(struct ctf_trace *td, packet_index.timestamp_begin = 0; packet_index.timestamp_end = 0; packet_index.events_discarded = 0; + packet_index.events_discarded_len = 0; /* read and check header, set stream id (and check) */ if (file_stream->parent.trace_packet_header) { @@ -1517,7 +1521,7 @@ int ctf_open_file_stream_read(struct ctf_trace *td, const char *path, int flags, if (ret) goto error_def; /* - * For now, only a single slock is supported. + * For now, only a single clock per trace is supported. */ file_stream->parent.current_clock = td->single_clock; ret = create_stream_packet_index(td, file_stream); @@ -1746,7 +1750,7 @@ int ctf_open_mmap_stream_read(struct ctf_trace *td, goto error_index; /* - * For now, only a single slock is supported. + * For now, only a single clock per trace is supported. */ file_stream->parent.current_clock = td->single_clock; @@ -1900,35 +1904,13 @@ void ctf_close_trace(struct trace_descriptor *tdp) continue; for (j = 0; j < stream->streams->len; j++) { struct ctf_file_stream *file_stream; - file_stream = container_of(g_ptr_array_index(stream->streams, j), struct ctf_file_stream, parent); + file_stream = container_of(g_ptr_array_index(stream->streams, j), + struct ctf_file_stream, parent); ctf_close_file_stream(file_stream); } - - } - g_ptr_array_free(td->streams, TRUE); - } - - if (td->event_declarations) { - for (i = 0; i < td->event_declarations->len; i++) { - struct bt_ctf_event_decl *event; - - event = g_ptr_array_index(td->event_declarations, i); - if (event->context_decl) - g_ptr_array_free(event->context_decl, TRUE); - if (event->fields_decl) - g_ptr_array_free(event->fields_decl, TRUE); - if (event->packet_header_decl) - g_ptr_array_free(event->packet_header_decl, TRUE); - if (event->event_context_decl) - g_ptr_array_free(event->event_context_decl, TRUE); - if (event->event_header_decl) - g_ptr_array_free(event->event_header_decl, TRUE); - if (event->packet_context_decl) - g_ptr_array_free(event->packet_context_decl, TRUE); - g_free(event); } - g_ptr_array_free(td->event_declarations, TRUE); } + ctf_destroy_metadata(td); closedir(td->dir); g_free(td); }