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  }