Lorsqu'il est nécessaire de réaliser une animation graphique dans un programme MOTIF, certaines difficultés apparaissent. En effet lorsque le programme est entré dans la Mainloop le seul moyen de réaliser l'animation est de boucler dans un callback, mais la mainloop n'est plus active et on se trouve donc bloqué en attendant la fin de l'animation.

Tant que la boucle d'animation n'est pas finie la MainLoop n'a pas la main et ne traite donc pas les événements X.
Pour résoudre ce problème le widget GPHIGS propose une fonction spécifique, GPHIGS_ANIM_CB.
Cette fonction doit être appelée dans un callback.
Exemple d'une activation de l'animation via un pushButton
XtAddCallBack(w, XmNactivateCallback, GPHIGS_ANIM_CB, fctUser)
w est le widget pushButton
XmNactivateCallback est le nom du callback pour le push button
fctUser est la fonction utilisateur qui réalise l'animation
Cette fonction (fctUser) ne réalisera qu'un seul pas d'animation.
La première pression sur le pushbutton activera l'animation, la seconde la désactivera, cette opération pouvant être répétée autant de fois que nécessaire.