-void TRACE_paje_dump_buffer (void)
-{
- paje_event_t event;
- while (xbt_dynar_length (buffer) > 0){
- double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
- if (head_timestamp > TRACE_last_timestamp_to_dump){
- break;
+void TRACE_paje_dump_buffer (int force)
+{
+ DEBUG2("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
+ if (force){
+ paje_event_t event;
+ unsigned int i;
+ xbt_dynar_foreach(buffer, i, event){
+ event->print (event);
+ event->free (event);
+ }
+ xbt_dynar_free (&buffer);
+ buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
+ }else{
+ paje_event_t event;
+ while (xbt_dynar_length (buffer) > 0){
+ double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
+ if (head_timestamp > TRACE_last_timestamp_to_dump){
+ break;
+ }
+ xbt_dynar_remove_at (buffer, 0, &event);
+ event->print (event);
+ event->free (event);