Fixed deadlock in layer

This commit is contained in:
Michael Jumper
2011-02-15 18:46:02 -08:00
parent fabeca7414
commit 25fd42afea

View File

@@ -151,13 +151,21 @@ function Layer(width, height) {
display.copyRect = function(srcLayer, srcx, srcy, w, h, x, y) {
var updateId = currentUpdate++;
// Synchronize copy operation with source layer
srcLayer.sync(function() {
function scheduleCopyRect() {
setUpdate(updateId, function() {
if (autosize != 0) fitRect(x, y, w, h);
displayContext.drawImage(srcLayer, srcx, srcy, w, h, x, y, w, h);
});
});
}
// If we ARE the source layer, no need to sync.
// Syncing would result in deadlock.
if (display === srcLayer)
scheduleCopyRect();
// Otherwise synchronize copy operation with source layer
else
srcLayer.sync(scheduleCopyRect);
};