5. Programmation pour MGR

Contenu de cette section

Le manuel des programmeurs MGR, l'interface des applications langage C, se trouvent dans le répertoire doc sous forme de fichier exploitable par troff/nroff. Il traite de concepts généraux, des appels fonction/macro contrôlant le serveur, d'un exemple d'application, avec index et glossaire. Porter le code client utilisé avec les anciennes versions de MGR demande le remplacement de

    #include <mgr/mgr.h>
par
    #include <term.h>
    #include <dump.h>
et des clients utilisant les vieux B_XOR, B_CLEAR, etc. au lieu de BIT_XOR, BIT_CLR et autres peuvent être adaptés en écrivant~:
    #define OLDMGRBITOPS
    #include <mgr/mgr.h>

Compiler le code client demande en général des options telles que~:

    -I/usr/mgr/include   -L/usr/mgr/lib -lmgr
Vous pouvez obtenir un aperçu de l'interactivité des fonctions serveur MGR en lisant et essayant le pilote de terminal mgr.el pour GNU Emacs, qui met en oeuvre la bibliothèque interface MGR en Elisp. L'habitude qui consiste à s'enquérir de l'état du serveur a pour risque de se casser la figure si le client attend en même temps un grand volume de notification d'événements. Ce problème arrive lorsque une notification d'événement (asynchrone) survient quand une réponse à une demande (synchrone) était attendue. Si cela arrive dans la pratique (non habituel) alors les fonctions de demande d'état MGR doivent être intégrées avec votre boucle de manipulation d'événement.

La seule fonction manquante pour les dessins dans le protocole MGR est celle de remplissage de surfaces autres que les rectangles. Il y a un nouveau code pour manipuler la carte des couleurs globale, et aussi pour l'allocation et la délivrance des indices de couleur appartenant à chaque fenêtre. Si vous voulez fouiller dans les progammes serveurs, vous trouverez le pilote de souris dans mouse.* et mouse_get, les abominables choses concernant l'interface clavier dans kbd.c, et l'interface vidéo dans les répertoires src/libbitblit/*. La procédure principale, plutôt l'initialisation, et la boucle d'entrée de niveau supérieur sont dans mgr.c, enfin l'interprétation des séquences d'échappement dans put_window.c.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre