anchor.diff:  			      (* ,width-var (stride ,m-texture)))))
   	   (cairo:with-context-from-surface (,surface-var)
   	     ,@body)))
  -       (pushg ,m-texture ,m-arr)
  +       (when ,update? (pushg ,m-texture ,m-arr))
          ,m-arr)))
   
   
  
positive.code: 	(m-arr (gensym)))
      
      `(let* ((,m-texture (or ,texture *texture* (get-default-texture)))
  	    (,m-arr (pullg ,m-texture))
  	    (,width-var  (clinch:width  ,m-texture))
  	    (,height-var (clinch:height ,m-texture)))
         
  
negative.code: 
  
  (defmacro draw ((&key texture
  		      array
  		      (surface-var 'cairo::*surface*)
  		      (width-var   (gensym))
  		      (height-var  (gensym))
  		      (bits-var    (gensym))
  		      (cairo-format :argb32)
  		      (update? t))
  		&body body)
    "Takes a texture object, maps its data and creates a cairo:surface for it then destroys the surface when done.
         texture:      A texture object to operate on.
  