+ /* Allocate ourself a new array to save the data in */
+ GArray *savedDataArray = g_array_new(FALSE, FALSE, sizeof(struct saveTimeAndTracefile*) );
+ struct saveTimeArgs args = { savedDataArray };
+ /* Call g_datalist_foreach_saveTracefilesTime for each element in the GData to save the time */
+ g_datalist_foreach(&newPtr->tracefiles, &g_datalist_foreach_saveTracefilesTime, &args);
+
+ /* Call to ltt_trace_time_span_get to find the current start and end time */
+ /* NOTE : This WILL change the current block of the tracefile (i.e. its timestamp) */
+ LttTime tmpStartTime = { 0, 0 };
+ LttTime tmpEndTime = { 0, 0 };
+ ltt_trace_time_span_get(newPtr, &tmpStartTime, &tmpEndTime);
+
+ /* Seek back to the correct time for each tracefile and free the allocated memory */
+ struct saveTimeAndTracefile *savedData;
+ unsigned int i;
+ for (i=0; i<savedDataArray->len; i++) {
+ savedData = g_array_index(savedDataArray, struct saveTimeAndTracefile*, i);
+ /* Seek back to the correct time */
+ /* Some time will not be consistent here (i.e. unitialized data) */
+ /* but the seek should work just fine with that */
+ ltt_tracefile_seek_time(savedData->tracefile, savedData->time);
+
+ /* Free the memory allocated for this saveTimeAndTracefile entry */
+ free( savedData );
+ }
+ /* Free the memory allocated for the GArray */
+ g_array_free(savedDataArray, TRUE);
+
+ /* Send the start and end time back to the java */
+ /* We do it last to make sure a problem won't leave us with unfred memory */
+ jclass startAccessClass = (*env)->GetObjectClass(env, jstart_time);
+ jmethodID startAccessFunction = (*env)->GetMethodID(env, startAccessClass, "setTimeFromC", "(J)V");
+ jlong startTime = (CONVERT_UINT64_TO_JLONG(tmpStartTime.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(tmpStartTime.tv_nsec);
+ (*env)->CallVoidMethod(env, jstart_time, startAccessFunction, startTime);
+
+ jclass endAccessClass = (*env)->GetObjectClass(env, jend_time);
+ jmethodID endAccessFunction = (*env)->GetMethodID(env, endAccessClass, "setTimeFromC", "(J)V");
+ jlong endTime = (CONVERT_UINT64_TO_JLONG(tmpEndTime.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(tmpEndTime.tv_nsec);
+ (*env)->CallVoidMethod(env, jend_time, endAccessFunction, endTime);
+}
+
+/* Function to print the content of a trace */
+JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1printTrace(JNIEnv *env, jobject jobj, jlong trace_ptr) {
+
+ LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);