diff --git a/lime/graphics/Image.hx b/lime/graphics/Image.hx index eb5360ee5..1af7c4ac0 100644 --- a/lime/graphics/Image.hx +++ b/lime/graphics/Image.hx @@ -317,6 +317,14 @@ class Image { destPoint.y = 0; //clamp destination point to 0 } + // TODO: Optimize + + if (sourceImage == this) { + + sourceImage = clone (); + + } + switch (type) { case CANVAS: @@ -801,12 +809,6 @@ class Image { case DATA: - //#if (js && html5) - //ImageCanvasUtil.convertToData (this); - //#end - - //ImageDataUtil.scroll (this, x, y); - copyPixels (this, rect, new Vector2 (x, y)); case FLASH: diff --git a/lime/graphics/utils/ImageCanvasUtil.hx b/lime/graphics/utils/ImageCanvasUtil.hx index feb2aaf43..dd9a1bdab 100644 --- a/lime/graphics/utils/ImageCanvasUtil.hx +++ b/lime/graphics/utils/ImageCanvasUtil.hx @@ -369,10 +369,12 @@ class ImageCanvasUtil { if ((x % image.width == 0) && (y % image.height == 0)) return; + var copy = image.clone (); + convertToCanvas (image, true); image.buffer.__srcContext.clearRect (x, y, image.width, image.height); - image.buffer.__srcContext.drawImage (image.buffer.__srcCanvas, x, y); + image.buffer.__srcContext.drawImage (copy.src, x, y); image.dirty = true; image.version++;