 
     false
 
-  # eventually this will only mark an area as needing drawing rather than the whole screen.
   # NOTE: For geometry changes, this gets called twice for the same element:
   #   once before and once after it "moves"
   #   As such, if we are invalidating rectangular areas, we need to do it immediately with each call.

  ###############################################

  draw: ->
    # log draw: clone {@_dirtyDrawArea}

    Element.resetStats()
    frameStartTime = currentSecond()


    @_attach @_getOrCreateCanvasElement options
    @engineStat = new EngineStat
    @_dirtyDrawAreas = null

    @pointerEventManager = new PointerEventManager canvasElement:@
    self.canvasElement ||= @
