     super
     @_bitmapToElementMatrix = new Matrix
 
+  _releaseCachedBitmap: ->
+    if @_previousCacheSource
+      sourceToBitmapCache.release @_previousCacheSource
+      @_previousCacheSource = null
+
   _unregister: ->
-    sourceToBitmapCache.release @getSource()
+    @_releaseCachedBitmap()
     super
 
   @getter


    loaded: (url) -> @_loaded[url]

    temporaryPut: (duration, url, bitmap) ->
      @get url, Promise.resolve bitmap
      # log temporaryPut: {bitmap, duration, url}

      validate:   (v) -> !v || isPlainArray v

  _loadBitmapFromSource: (source) ->
    @_releaseCachedBitmap()
    @_previousCacheSource = source
    sourceToBitmapCache.get source
    .then (bitmap) =>
      @onNextReady => @queueEvent "load", => bitmap:bitmap
