9fans.net/go@v0.0.5/draw/memdraw/lsetrefresh.go (about) 1 package memdraw 2 3 func LSetRefresh(i *Image, fn Refreshfn, ptr interface{}) bool { 4 l := i.Layer 5 if l.Refreshfn != nil && fn != nil { /* just change functions */ 6 l.Refreshfn = fn 7 l.Refreshptr = ptr 8 return true 9 } 10 11 if l.Refreshfn == nil { /* is using backup image; just free it */ 12 Free(l.save) 13 l.save = nil 14 l.Refreshfn = fn 15 l.Refreshptr = ptr 16 return true 17 } 18 19 var err error 20 l.save, err = AllocImage(i.R, i.Pix) 21 if err != nil { 22 return false 23 } 24 /* easiest way is just to update the entire save area */ 25 l.Refreshfn(i, i.R, l.Refreshptr) 26 l.Refreshfn = nil 27 l.Refreshptr = nil 28 return true 29 }