#include <u.h>
#include <libc.h>
#include <draw.h>

/*
 * Easy versions of the cache routines; may be substituted by fancier ones for other purposes
 */

static char	*lastname;
Subfont	*lastsubfont;

Subfont*
lookupsubfont(Display *d, char *name)
{
	if(strcmp(name, "*default*") == 0)
		return d->defaultsubfont;
	if(lastname && strcmp(name, lastname)==0 && d==lastsubfont->bits->display){
		lastsubfont->ref++;
		return lastsubfont;
	}
	return 0;
}

void
installsubfont(char *name, Subfont *subfont)
{
	free(lastname);
	lastname = strdup(name);
	lastsubfont = subfont;	/* notice we don't free the old one; that's your business */
}

void
uninstallsubfont(Subfont *subfont)
{
	if(subfont == lastsubfont){
		lastname = 0;
		lastsubfont = 0;
	}
}
