From d6dc1a2c6fafe5f446123e197d09011c2d5dcdb1 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Wed, 4 Dec 2013 11:58:05 +0100 Subject: [PATCH 1/2] Don't use WebGL if there is a major performance caveat --- src/ol/renderer/webgl/webglmaprenderer.js | 1 + src/ol/webgl/webgl.js | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index c8d014030c..3880918334 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -88,6 +88,7 @@ ol.renderer.webgl.Map = function(container, map) { this.gl_ = ol.webgl.getContext(this.canvas_, { antialias: true, depth: false, + failIfMajorPerformanceCaveat: true, preserveDrawingBuffer: false, stencil: false }); diff --git a/src/ol/webgl/webgl.js b/src/ol/webgl/webgl.js index 4e84847510..701ae5b6ed 100644 --- a/src/ol/webgl/webgl.js +++ b/src/ol/webgl/webgl.js @@ -59,7 +59,9 @@ ol.webgl.SUPPORTED = (function() { try { var canvas = /** @type {HTMLCanvasElement} */ (goog.dom.createElement(goog.dom.TagName.CANVAS)); - return !goog.isNull(ol.webgl.getContext(canvas)); + return !goog.isNull(ol.webgl.getContext(canvas, { + failIfMajorPerformanceCaveat: true + })); } catch (e) { return false; } From 0d3583bd8d0a43e0a19f428523f25d9bbb952de8 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Wed, 4 Dec 2013 11:59:29 +0100 Subject: [PATCH 2/2] Improve type checking in WebGL support test --- src/ol/webgl/webgl.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/ol/webgl/webgl.js b/src/ol/webgl/webgl.js index 701ae5b6ed..8720d354d6 100644 --- a/src/ol/webgl/webgl.js +++ b/src/ol/webgl/webgl.js @@ -52,17 +52,21 @@ ol.webgl.getContext = function(canvas, opt_attributes) { * @const * @type {boolean} */ -ol.webgl.SUPPORTED = (function() { - if (!('WebGLRenderingContext' in goog.global)) { - return false; - } - try { - var canvas = /** @type {HTMLCanvasElement} */ - (goog.dom.createElement(goog.dom.TagName.CANVAS)); - return !goog.isNull(ol.webgl.getContext(canvas, { - failIfMajorPerformanceCaveat: true - })); - } catch (e) { - return false; - } -})(); +ol.webgl.SUPPORTED = ( + /** + * @return {boolean} WebGL supported. + */ + function() { + if (!('WebGLRenderingContext' in goog.global)) { + return false; + } + try { + var canvas = /** @type {HTMLCanvasElement} */ + (goog.dom.createElement(goog.dom.TagName.CANVAS)); + return !goog.isNull(ol.webgl.getContext(canvas, { + failIfMajorPerformanceCaveat: true + })); + } catch (e) { + return false; + } + })();