Chromium Code Reviews| Index: chrome/browser/resources/file_manager/js/image_editor/commands.js |
| diff --git a/chrome/browser/resources/file_manager/js/image_editor/commands.js b/chrome/browser/resources/file_manager/js/image_editor/commands.js |
| index a08f0d5a775468754e738b3b639842987445090a..32dd9ced046c10647d49c6e9c2d8c93baf77dfbd 100644 |
| --- a/chrome/browser/resources/file_manager/js/image_editor/commands.js |
| +++ b/chrome/browser/resources/file_manager/js/image_editor/commands.js |
| @@ -18,9 +18,16 @@ function CommandQueue(document, canvas, saveFunction) { |
| this.redo_ = []; |
| this.subscribers_ = []; |
| - this.baselineImage_ = canvas; |
| this.currentImage_ = canvas; |
| + |
| + this.baselineImage_ = document.createElement('canvas'); |
| + this.baselineImage_.width = this.currentImage_.width; |
| + this.baselineImage_.height = this.currentImage_.height; |
| + var context = this.baselineImage_.getContext('2d'); |
| + context.drawImage(this.currentImage_, 0, 0); |
| + |
| this.previousImage_ = document.createElement('canvas'); |
| + this.previousImageAvailable_ = false; |
| this.saveFunction_ = saveFunction; |
| @@ -122,6 +129,7 @@ CommandQueue.prototype.doExecute_ = function(command, uiContext, callback) { |
| // Remember one previous image so that the first undo is as fast as possible. |
| this.previousImage_.width = this.currentImage_.width; |
| this.previousImage_.height = this.currentImage_.height; |
| + this.previousImageAvailable_ = true; |
| var context = this.previousImage_.getContext('2d'); |
| context.drawImage(this.currentImage_, 0, 0); |
| @@ -179,7 +187,8 @@ CommandQueue.prototype.undo = function() { |
| self.commit_(delay); |
| } |
| - if (this.previousImage_) { |
| + if (this.previousImageAvailable_) { |
| + console.log('TRYING, WITH: ' + this.previousImage_.width); |
|
yoshiki
2013/03/11 05:21:59
nit: Can you remove this?
mtomasz
2013/03/11 05:44:56
Done.
|
| // First undo after an execute call. |
| this.currentImage_.width = this.previousImage_.width; |
| this.currentImage_.height = this.previousImage_.height; |
| @@ -189,12 +198,16 @@ CommandQueue.prototype.undo = function() { |
| // Free memory. |
| this.previousImage_.width = 0; |
| this.previousImage_.height = 0; |
| + this.previousImageAvailable_ = false; |
| complete(); |
| // TODO(kaznacheev) Consider recalculating previousImage_ right here |
| // by replaying the commands in the background. |
| } else { |
| - this.currentImage_ = this.baselineImage_; |
| + this.currentImage_.width = this.baselineImage_.width; |
| + this.currentImage_.height = this.baselineImage_.height; |
| + var context = this.currentImage_.getContext('2d'); |
| + context.drawImage(this.baselineImage_, 0, 0); |
| var replay = function(index) { |
| if (index < self.undo_.length) |
| @@ -233,6 +246,10 @@ CommandQueue.prototype.close = function() { |
| // Free memory used by the undo buffer. |
| this.previousImage_.width = 0; |
| this.previousImage_.height = 0; |
| + this.previousImageAvailable_ = false; |
| + |
| + this.baselineImage_.width = 0; |
| + this.baselineImage_.height = 0; |
| }; |
| /** |