summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSolly Ross <sross@redhat.com>2014-09-22 21:37:04 -0400
committerSolly Ross <sross@redhat.com>2014-09-22 21:37:04 -0400
commit0b0b0433b55e97107574a82ff5b0f755d17ec4dd (patch)
tree7a8d8c052edaa6e6afa8c0017f1226c95b26e9b1
parent3b4fd003c2ba6e0294282ea203e6ead6e9275317 (diff)
downloadnovnc-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.js6
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);
}