--- rpl/modules/motif/motif.rplc 2017/07/05 13:53:40 1.3 +++ rpl/modules/motif/motif.rplc 2017/07/17 21:35:32 1.6 @@ -5,10 +5,18 @@ libraryName(motif); exportExternalFunctions( + XSynchronize, + XtAddCallback, XtAppExitMainLoop, XtAppInitialize, XtAppMainLoop, - XtCreateWidget); + XtCreatePopupShell, + XtCreateWidget, + XtDestroyWidget, + XtPopdown, + XtPopup, + XtRealizeWidget, + XtRemoveCallback); declareSubroutine(onLoading) notice(stdout, "\nMotif library V2R1 for RPL/2 (C) 2017 BERTRAND Joel\n"); @@ -56,11 +64,29 @@ declareSubroutine(onLoading) createVariable(XtGrabExclusive); createVariable(XmSTRING); + + setFalse(initializationDone); + nullify(lCallbacks); endSubroutine declareSubroutine(onClosing) // Destruction des variables spécifiques declareObject(variable); + declareDaisyChain(current); + declareDaisyChain(next); + + current = lCallbacks; + + repeatWhile(not nullified(current)) + next = current; + nextElementOfDaisyChain(next); + variable = fetchElementFromDaisyChain(current); + freeObject(variable); + free(current); + current = next; + endWhile + + nullify(lCallbacks); #define purgeVariable(var) \ do { \