9fans.net/go@v0.0.5/draw/subfontcache.go (about) 1 package draw 2 3 import "sync" 4 5 /* 6 * Easy versions of the cache routines; may be substituted by fancier ones for other purposes 7 */ 8 9 var lastfont struct { 10 sync.Mutex 11 name string 12 sub *subfont 13 } 14 15 func lookupsubfont(d *Display, name string) *subfont { 16 if d != nil && name == "*default*" { 17 return d.defaultSubfont 18 } 19 lastfont.Lock() 20 defer lastfont.Unlock() 21 if lastfont.name == name && d == lastfont.sub.Bits.Display { 22 lastfont.sub.ref++ 23 return lastfont.sub 24 } 25 return nil 26 } 27 28 func installsubfont(name string, subfont *subfont) { 29 lastfont.Lock() 30 defer lastfont.Unlock() 31 lastfont.name = name 32 lastfont.sub = subfont /* notice we don't free the old one; that's your business */ 33 } 34 35 func uninstallsubfont(subfont *subfont) { 36 lastfont.Lock() 37 defer lastfont.Unlock() 38 if subfont == lastfont.sub { 39 lastfont.name = "" 40 lastfont.sub = nil 41 } 42 }