Initial port of the detailed event view
[lttv.git] / lttv / lttv / tracecontext.c
index e937789c1e5ac499fd8df0f1e9817aac92f7a44a..5f6455a42f4be31b1d8bd4db7efba9ebce502e8f 100644 (file)
 
 #include <string.h>
 #include <lttv/lttv.h>
-#include <lttv/tracecontext.h>
+#include <lttv/traceset-process.h>
 #include <ltt/event.h>
 #include <ltt/trace.h>
+#ifdef BABEL_NOFILTER
 #include <lttv/filter.h>
+#endif
 #include <errno.h>
 #include <ltt/time.h>
 #include <lttv/event.h>
@@ -36,6 +38,8 @@
 #include <babeltrace/ctf/events.h>
 #include <babeltrace/ctf/iterator.h>
 
+
+#ifdef BABEL_CLEANUP
 gint compare_tracefile(gconstpointer a, gconstpointer b)
 {
        gint comparison = 0;
@@ -71,7 +75,7 @@ struct _LttvTracesetContextPosition {
                                        * set, else, a position is set (may be end
                                        * of trace, with ep->len == 0) */
 };
-
+#endif
 void lttv_context_init(LttvTracesetContext *self, LttvTraceset *ts)
 {
        LTTV_TRACESET_CONTEXT_GET_CLASS(self)->init(self, ts);
@@ -206,6 +210,8 @@ init(LttvTracesetContext *self, LttvTraceset *ts)
                                        &begin_pos,
                                        NULL);
        self->event_hooks = lttv_hooks_new();
+       self->tmpState = g_new(LttvTraceState *, 1);
+
        for(i = 0 ; i < nb_trace ; i++) {
                tc = LTTV_TRACESET_CONTEXT_GET_CLASS(self)->new_trace_context(self);
                self->traces[i] = tc;
@@ -236,7 +242,9 @@ init(LttvTracesetContext *self, LttvTraceset *ts)
 
        }
        self->sync_position = lttv_traceset_context_position_new(self);
+#ifdef BABEL_CLEANUP   
        self->pqueue = g_tree_new(compare_tracefile);
+#endif
        lttv_process_traceset_seek_time(self, ltt_time_zero);
        lttv_traceset_context_compute_time_span(self, &self->time_span);
 
@@ -685,15 +693,14 @@ guint lttv_process_traceset_middle(LttvTracesetContext *self,
        
        unsigned count = 0;
                
+        gint last_ret = 0;
        struct bt_ctf_event *bt_event;
        
        LttvEvent event;
-       /* TODO ybrosseau 2012-03-16: Put in really in the traceset */
-       LttvTraceState state;
 
        while(TRUE) {
 
-               if((count >= nb_events) && (nb_events != G_MAXULONG)) {
+               if(last_ret == TRUE || ((count >= nb_events) && (nb_events != G_MAXULONG))) {
                        break;
                }
 
@@ -702,9 +709,11 @@ guint lttv_process_traceset_middle(LttvTracesetContext *self,
                        count++;
 
                        event.bt_event = bt_event;
-                       event.state = &state;
-
-                       lttv_hooks_call(self->event_hooks, &event);
+                       /* TODO ybrosseau 2012-04-01: use bt_ctf_get_trace_handle 
+                          to retrieve the right state container */
+                       event.state = self->tmpState;
+                       
+                       last_ret = lttv_hooks_call(self->event_hooks, &event);
 
                        if(bt_iter_next(bt_ctf_get_iter(self->iter)) < 0) {
                                printf("ERROR NEXT\n");
This page took 0.024854 seconds and 4 git commands to generate.