Avanti Indietro Indice

5. Programmazione in MGR

Il manuale del programmatore di MGR, con l'interfaccia in linguaggio C alle applicazioni, si trova nella directory doc in formato troof/nroff. Esso copre i concetti generali, le chiamate alle funzioni/macro che controllano il server, una semplice applicazione, un indice e un glossario.

Il porting di programma client usato con versioni precedenti di MGR richiede qualche volta la sostituzione di

    #include <mgr/mgr.h>
con
    #include <term.h>
    #include <dump.h>
e i client che usano le vecchio stile b_XOR, B_CLEAR, e simili invece di BIT_XOR, BIT_CLR e simili possono venire sistemati scrivendo
    #define OLDMGRBITOPS
    #include <mgr/mgr.h>

Compilare codice per client richiede in genere opzioni di compilazione di questo tipo:

    -I/usr/mgr/include   -L/usr/mgr/lib -lmgr

Si può fare un po' di esperienza con le funzioni del server MGR in modo interattivo leggendo e sperimentando con il driver di terminale per GNU Emacs mgr.el che implementa la libreria di interfaccia a MGR in ELisp.

Il metodo usuale di procurarsi lo stato dal server può portare a dei problemi se il client si aspetta anche un grande volume di notifiche di eventi. Il problema sorge se una notifica (asincrona) arriva quando si aspetta la risposta ad una richiesta (sincrona). Se questo accade effettivamente (cosa inusuale) le funzioni di MGR per procurarsi lo stato dovranno essere integrate con il tuo loop per la gestione degli eventi.

Il solo servizio fondamentale di disegno mancante nel protocollo MGR sembra essere la colorazione di un area per aree diverse da rettangoli orizzontali. C'è del nuovo codice per la manipolazione della mappa globale dei colori, come per l'allocazione (suggerita) e deallocazione degli indici dei colori posseduti dalle finestre.

Se pensi di effettuare dell'hacking su server, puoi trovare il driver del mouse in mouse.* e mouse_get.*, le parti grotty dell'interfaccia alla tastiera in kbd.c, e l'interfaccia al display nelle directory src/libbitblit/*. La procedura main, la maggior parte delle inizializzazioni, e la parte di alto livello del loop di input si trovano in mgr.c, mentre l'interpretazione delle sequenze di escape è in put_window.c.


Avanti Indietro Indice