1*37da2899SCharles.Forsyth #include "lib9.h" 2*37da2899SCharles.Forsyth #include "draw.h" 3*37da2899SCharles.Forsyth 4*37da2899SCharles.Forsyth /* 5*37da2899SCharles.Forsyth * Easy versions of the cache routines; may be substituted by fancier ones for other purposes 6*37da2899SCharles.Forsyth */ 7*37da2899SCharles.Forsyth 8*37da2899SCharles.Forsyth static char *lastname; 9*37da2899SCharles.Forsyth Subfont *lastsubfont; 10*37da2899SCharles.Forsyth 11*37da2899SCharles.Forsyth Subfont* lookupsubfont(Display * d,char * name)12*37da2899SCharles.Forsythlookupsubfont(Display *d, char *name) 13*37da2899SCharles.Forsyth { 14*37da2899SCharles.Forsyth if(strcmp(name, "*default*") == 0) 15*37da2899SCharles.Forsyth return d->defaultsubfont; 16*37da2899SCharles.Forsyth if(lastname && strcmp(name, lastname)==0 && d==lastsubfont->bits->display){ 17*37da2899SCharles.Forsyth lastsubfont->ref++; 18*37da2899SCharles.Forsyth return lastsubfont; 19*37da2899SCharles.Forsyth } 20*37da2899SCharles.Forsyth return 0; 21*37da2899SCharles.Forsyth } 22*37da2899SCharles.Forsyth 23*37da2899SCharles.Forsyth void installsubfont(char * name,Subfont * subfont)24*37da2899SCharles.Forsythinstallsubfont(char *name, Subfont *subfont) 25*37da2899SCharles.Forsyth { 26*37da2899SCharles.Forsyth free(lastname); 27*37da2899SCharles.Forsyth lastname = strdup(name); 28*37da2899SCharles.Forsyth lastsubfont = subfont; /* notice we don't free the old one; that's your business */ 29*37da2899SCharles.Forsyth } 30*37da2899SCharles.Forsyth 31*37da2899SCharles.Forsyth void uninstallsubfont(Subfont * subfont)32*37da2899SCharles.Forsythuninstallsubfont(Subfont *subfont) 33*37da2899SCharles.Forsyth { 34*37da2899SCharles.Forsyth if(subfont == lastsubfont){ 35*37da2899SCharles.Forsyth lastname = 0; 36*37da2899SCharles.Forsyth lastsubfont = 0; 37*37da2899SCharles.Forsyth } 38*37da2899SCharles.Forsyth } 39