X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2FmainWin%2Fsrc%2Finit_module.c;h=a7332680e0b79e19c5b6d3575d4d4fed6341617c;hb=2176f95285d035b2bf5919c6921949d9713c49b6;hp=ed724a42439717446a443158760ae2d75339e9c6;hpb=c64c7ea1c886522c309e54bd74a2e506b7640e9e;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/mainWin/src/init_module.c b/ltt/branches/poly/lttv/modules/gui/mainWin/src/init_module.c index ed724a42..a7332680 100644 --- a/ltt/branches/poly/lttv/modules/gui/mainWin/src/init_module.c +++ b/ltt/branches/poly/lttv/modules/gui/mainWin/src/init_module.c @@ -84,9 +84,6 @@ static gboolean Window_Creation_Hook(void *hook_data, void *call_data) return FALSE; } - - - G_MODULE_EXPORT void init(LttvModule *self, int argc, char *argv[]) { LttvAttributeValue value; @@ -115,7 +112,8 @@ G_MODULE_EXPORT void init(LttvModule *self, int argc, char *argv[]) { void mainWindow_free(mainWindow * mw) { - guint i, nb; + guint i, nb, ref_count; + LttvTrace * trace; if(mw){ @@ -139,8 +137,10 @@ g_critical("end remove"); if(mw->Traceset_Info->traceset != NULL) { nb = lttv_traceset_number(mw->Traceset_Info->traceset); for(i = 0 ; i < nb ; i++) { - ltt_trace_close( - lttv_trace(lttv_traceset_get(mw->Traceset_Info->traceset, i))); + trace = lttv_traceset_get(mw->Traceset_Info->traceset, i); + ref_count = lttv_trace_get_ref_number(trace); + if(ref_count <= 1) + ltt_trace_close(lttv_trace(trace)); } } @@ -175,7 +175,7 @@ mainWindow_Destructor(mainWindow * mw) } -void destroy_walk(gpointer data, gpointer user_data) +void main_window_destroy_walk(gpointer data, gpointer user_data) { mainWindow_Destructor((mainWindow*)data); } @@ -199,8 +199,10 @@ G_MODULE_EXPORT void destroy() { g_critical("GUI destroy()"); - g_slist_foreach(Main_Window_List, destroy_walk, NULL ); - g_slist_free(Main_Window_List); + if(Main_Window_List){ + g_slist_foreach(Main_Window_List, main_window_destroy_walk, NULL ); + g_slist_free(Main_Window_List); + } }