+//void
+//free_system_view(systemView * SystemView)
+//{
+// if(!SystemView)return;
+// //free_EventDB(SystemView->EventDB);
+// //free_SystemInfo(SystemView->SystemInfo);
+// //free_Options(SystemView->Options);
+// if(SystemView->Next)
+// free_system_view(SystemView->Next);
+// g_free(SystemView);
+//}
+
+//MD : The tab is now only referenced by the notebook. The destroy will
+//happend when notebook destroyed.
+//void free_tab(tab * Tab)
+//{
+// if(!Tab) return;
+// if(Tab->custom->vbox)
+// gtk_widget_destroy(Tab->custom->vbox);
+// if(Tab->Attributes)
+// g_object_unref(Tab->Attributes);
+
+// if(Tab->Next) free_tab(Tab->Next);
+// g_free(Tab);
+// Tab = NULL;
+//}
+
+void
+mainWindow_free(mainWindow * mw)
+{
+ guint i, nb;
+
+ if(mw){
+ //should free memory allocated dynamically first
+// free_system_view(mw->SystemView);
+//
+ //free_tab(mw->Tab);
+g_critical("begin remove");
+ lttv_hooks_destroy(mw->Traceset_Info->before_traceset);
+ lttv_hooks_destroy(mw->Traceset_Info->after_traceset);
+ lttv_hooks_destroy(mw->Traceset_Info->before_trace);
+ lttv_hooks_destroy(mw->Traceset_Info->after_trace);
+ lttv_hooks_destroy(mw->Traceset_Info->before_tracefile);
+ lttv_hooks_destroy(mw->Traceset_Info->after_tracefile);
+ lttv_hooks_destroy(mw->Traceset_Info->before_event);
+ lttv_hooks_destroy(mw->Traceset_Info->after_event);
+g_critical("end remove");
+
+
+ if(mw->Traceset_Info->path != NULL)
+ g_free(mw->Traceset_Info->path);
+ if(mw->Traceset_Info->TracesetContext != NULL)
+ lttv_context_fini(LTTV_TRACESET_CONTEXT(mw->Traceset_Info->TracesetContext));
+ if(mw->Traceset_Info->traceset != NULL) {
+ nb = lttv_traceset_number(mw->Traceset_Info->traceset);
+ for(i = 0 ; i < nb ; i++) {
+ ltt_trace_close(
+ lttv_traceset_get(mw->Traceset_Info->traceset, i));
+ }
+ }
+
+ lttv_traceset_destroy(mw->Traceset_Info->traceset);
+
+ g_object_unref(mw->Attributes);
+
+ g_free(mw->Traceset_Info);
+ mw->Traceset_Info = NULL;
+
+ Main_Window_List = g_slist_remove(Main_Window_List, mw);
+
+ g_free(mw);
+ mw = NULL;
+ }
+}
+
+void
+mainWindow_Destructor(mainWindow * mw)
+{
+ if(GTK_IS_WIDGET(mw->MWindow)){
+ gtk_widget_destroy(mw->MWindow);
+ // gtk_widget_destroy(mw->HelpContents);
+ // gtk_widget_destroy(mw->AboutBox);
+ mw = NULL;
+ }
+ //mainWindow_free called when the object mw in the widget is unref.
+ //mainWindow_free(mw);
+}
+
+