42 lines · 850 B · Go
RawDownload
package draw9 import "sync" /* * Easy versions of the cache routines; may be substituted by fancier ones for other purposes */ var lastfont struct {	sync.Mutex	name string	sub  *Subfont} func lookupsubfont(d *Display, name string) *Subfont {	if d != nil && name == "*default*" {		return d.DefaultSubfont	}	lastfont.Lock()	defer lastfont.Unlock()	if lastfont.name == name && d == lastfont.sub.Bits.Display {		lastfont.sub.Ref++		return lastfont.sub	}	return nil} func installsubfont(name string, subfont *Subfont) {	lastfont.Lock()	defer lastfont.Unlock()	lastfont.name = name	lastfont.sub = subfont /* notice we don't free the old one; that's your business */} func uninstallsubfont(subfont *Subfont) {	lastfont.Lock()	defer lastfont.Unlock()	if subfont == lastfont.sub {		lastfont.name = ""		lastfont.sub = nil	}}