diff options
author | Solly Ross <sross@redhat.com> | 2014-09-22 21:37:04 -0400 |
---|---|---|
committer | Solly Ross <sross@redhat.com> | 2014-09-22 21:37:04 -0400 |
commit | 0b0b0433b55e97107574a82ff5b0f755d17ec4dd (patch) | |
tree | 7a8d8c052edaa6e6afa8c0017f1226c95b26e9b1 | |
parent | 3b4fd003c2ba6e0294282ea203e6ead6e9275317 (diff) | |
download | novnc-0b0b0433b55e97107574a82ff5b0f755d17ec4dd.tar.gz |
Fix Race Condition in Display#clear on IE10
There was a race condition in Display#clear on IE10
because we resize and then clear that causes the canvas
to not actually end up cleared. Clearing the current
viewport first solves the issue. It doesn't appear to
affect other platforms, so it's inside a engine check
(`Util.Engine.trident === 6`). Once we stop supporting
IE10, we should just remove this, because it's not the best
to have Engine-specific code.
-rw-r--r-- | include/display.js | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/display.js b/include/display.js index d2876a7..8763fa4 100644 --- a/include/display.js +++ b/include/display.js @@ -312,6 +312,12 @@ var Display; this.resize(this._logo.width, this._logo.height); this.blitStringImage(this._logo.data, 0, 0); } else { + if (Util.Engine.trident === 6) { + // NB(directxman12): there's a bug in IE10 where we can fail to actually + // clear the canvas here because of the resize. + // Clearing the current viewport first fixes the issue + this._drawCtx.clearRect(0, 0, this._viewportLoc.w, this._viewportLoc.h); + } this.resize(640, 20); this._drawCtx.clearRect(0, 0, this._viewportLoc.w, this._viewportLoc.h); } |