Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Unified Diff: Source/core/html/canvas/WebGLRenderingContextBase.cpp

Issue 795833004: Use dictionaries for context creation attributes. Eliminate custom bindings. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/html/canvas/WebGLRenderingContextBase.cpp
diff --git a/Source/core/html/canvas/WebGLRenderingContextBase.cpp b/Source/core/html/canvas/WebGLRenderingContextBase.cpp
index b814a1b920247f8d51f2315cac8877997d5b7951..eb08f3420bb26f2efa24dee1c4063a12da55de17 100644
--- a/Source/core/html/canvas/WebGLRenderingContextBase.cpp
+++ b/Source/core/html/canvas/WebGLRenderingContextBase.cpp
@@ -42,6 +42,7 @@
#include "core/html/canvas/ANGLEInstancedArrays.h"
#include "core/html/canvas/CHROMIUMSubscribeUniform.h"
#include "core/html/canvas/CHROMIUMValuebuffer.h"
+#include "core/html/canvas/ContextAttributeHelpers.h"
#include "core/html/canvas/EXTBlendMinMax.h"
#include "core/html/canvas/EXTFragDepth.h"
#include "core/html/canvas/EXTShaderTextureLOD.h"
@@ -558,7 +559,7 @@ private:
RawPtrWillBeMember<WebGLRenderingContextBase> m_context;
};
-WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCanvas, PassOwnPtr<blink::WebGraphicsContext3D> context, WebGLContextAttributes* requestedAttributes)
+WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCanvas, PassOwnPtr<blink::WebGraphicsContext3D> context, const WebGLContextAttributes& requestedAttributes)
: CanvasRenderingContext(passedCanvas)
, ActiveDOMObject(&passedCanvas->document())
, m_contextLostMode(NotLostContext)
@@ -567,7 +568,7 @@ WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCa
, m_restoreAllowed(false)
, m_restoreTimer(this, &WebGLRenderingContextBase::maybeRestoreContext)
, m_generatedImageCache(4)
- , m_requestedAttributes(requestedAttributes->clone())
+ , m_requestedAttributes(requestedAttributes)
, m_synthesizedErrorsToConsole(true)
, m_numGLErrorsToConsoleAllowed(maxGLErrorsAllowedToConsole)
, m_multisamplingAllowed(false)
@@ -602,12 +603,12 @@ PassRefPtr<DrawingBuffer> WebGLRenderingContextBase::createDrawingBuffer(PassOwn
RefPtr<WebGLRenderingContextEvictionManager> contextEvictionManager = adoptRef(new WebGLRenderingContextEvictionManager());
blink::WebGraphicsContext3D::Attributes attrs;
- attrs.alpha = m_requestedAttributes->alpha();
- attrs.depth = m_requestedAttributes->depth();
- attrs.stencil = m_requestedAttributes->stencil();
- attrs.antialias = m_requestedAttributes->antialias();
- attrs.premultipliedAlpha = m_requestedAttributes->premultipliedAlpha();
- DrawingBuffer::PreserveDrawingBuffer preserve = m_requestedAttributes->preserveDrawingBuffer() ? DrawingBuffer::Preserve : DrawingBuffer::Discard;
+ attrs.alpha = m_requestedAttributes.alpha();
+ attrs.depth = m_requestedAttributes.depth();
+ attrs.stencil = m_requestedAttributes.stencil();
+ attrs.antialias = m_requestedAttributes.antialias();
+ attrs.premultipliedAlpha = m_requestedAttributes.premultipliedAlpha();
+ DrawingBuffer::PreserveDrawingBuffer preserve = m_requestedAttributes.preserveDrawingBuffer() ? DrawingBuffer::Preserve : DrawingBuffer::Discard;
return DrawingBuffer::create(context, clampedCanvasSize(), preserve, attrs, contextEvictionManager.release());
}
@@ -698,7 +699,7 @@ void WebGLRenderingContextBase::setupFlags()
if (Page* p = canvas()->document().page()) {
m_synthesizedErrorsToConsole = p->settings().webGLErrorsToConsoleEnabled();
- if (!m_multisamplingObserverRegistered && m_requestedAttributes->antialias()) {
+ if (!m_multisamplingObserverRegistered && m_requestedAttributes.antialias()) {
m_multisamplingAllowed = drawingBuffer()->multisample();
p->addMultisamplingChangedObserver(this);
m_multisamplingObserverRegistered = true;
@@ -823,7 +824,12 @@ WebGLRenderingContextBase::HowToClear WebGLRenderingContextBase::clearIfComposit
if (!drawingBuffer()->bufferClearNeeded() || (mask && m_framebufferBinding))
return Skipped;
- RefPtrWillBeRawPtr<WebGLContextAttributes> contextAttributes = getContextAttributes();
+ Nullable<WebGLContextAttributes> contextAttributes;
+ getContextAttributes(contextAttributes);
+ if (contextAttributes.isNull()) {
+ // Unlikely, but context was lost.
+ return Skipped;
+ }
// Determine if it's possible to combine the clear the user asked for and this clear.
bool combinedClear = mask && !m_scissorEnabled;
@@ -839,13 +845,13 @@ WebGLRenderingContextBase::HowToClear WebGLRenderingContextBase::clearIfComposit
}
webContext()->colorMask(true, true, true, true);
GLbitfield clearMask = GL_COLOR_BUFFER_BIT;
- if (contextAttributes->depth()) {
+ if (contextAttributes.get().depth()) {
if (!combinedClear || !m_depthMask || !(mask & GL_DEPTH_BUFFER_BIT))
webContext()->clearDepth(1.0f);
clearMask |= GL_DEPTH_BUFFER_BIT;
webContext()->depthMask(true);
}
- if (contextAttributes->stencil()) {
+ if (contextAttributes.get().stencil()) {
if (combinedClear && (mask & GL_STENCIL_BUFFER_BIT))
webContext()->clearStencil(m_clearStencil & m_stencilMask);
else
@@ -2091,15 +2097,15 @@ GLint WebGLRenderingContextBase::getAttribLocation(WebGLProgram* program, const
ScriptValue WebGLRenderingContextBase::getBufferParameter(ScriptState* scriptState, GLenum target, GLenum pname)
{
if (isContextLost())
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
if (target != GL_ARRAY_BUFFER && target != GL_ELEMENT_ARRAY_BUFFER) {
synthesizeGLError(GL_INVALID_ENUM, "getBufferParameter", "invalid target");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
if (pname != GL_BUFFER_SIZE && pname != GL_BUFFER_USAGE) {
synthesizeGLError(GL_INVALID_ENUM, "getBufferParameter", "invalid parameter name");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
GLint value = 0;
@@ -2109,22 +2115,19 @@ ScriptValue WebGLRenderingContextBase::getBufferParameter(ScriptState* scriptSta
return WebGLAny(scriptState, static_cast<unsigned>(value));
}
-PassRefPtrWillBeRawPtr<WebGLContextAttributes> WebGLRenderingContextBase::getContextAttributes()
+void WebGLRenderingContextBase::getContextAttributes(Nullable<WebGLContextAttributes>& result)
{
if (isContextLost())
- return nullptr;
- // We always need to return a new WebGLContextAttributes object to
- // prevent the user from mutating any cached version.
- blink::WebGraphicsContext3D::Attributes attrs = drawingBuffer()->getActualAttributes();
- RefPtrWillBeRawPtr<WebGLContextAttributes> attributes = m_requestedAttributes->clone();
+ return;
+ result.set(m_requestedAttributes);
// Some requested attributes may not be honored, so we need to query the underlying
// context/drawing buffer and adjust accordingly.
- if (m_requestedAttributes->depth() && !attrs.depth)
- attributes->setDepth(false);
- if (m_requestedAttributes->stencil() && !attrs.stencil)
- attributes->setStencil(false);
- attributes->setAntialias(drawingBuffer()->multisample());
- return attributes.release();
+ blink::WebGraphicsContext3D::Attributes attrs = drawingBuffer()->getActualAttributes();
+ if (m_requestedAttributes.depth() && !attrs.depth)
+ result.get().setDepth(false);
+ if (m_requestedAttributes.stencil() && !attrs.stencil)
+ result.get().setStencil(false);
+ result.get().setAntialias(drawingBuffer()->multisample());
}
GLenum WebGLRenderingContextBase::getError()
@@ -2193,11 +2196,11 @@ PassRefPtrWillBeRawPtr<WebGLExtension> WebGLRenderingContextBase::getExtension(c
ScriptValue WebGLRenderingContextBase::getFramebufferAttachmentParameter(ScriptState* scriptState, GLenum target, GLenum attachment, GLenum pname)
{
if (isContextLost() || !validateFramebufferFuncParameters("getFramebufferAttachmentParameter", target, attachment))
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
if (!m_framebufferBinding || !m_framebufferBinding->object()) {
synthesizeGLError(GL_INVALID_OPERATION, "getFramebufferAttachmentParameter", "no framebuffer bound");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
WebGLSharedObject* object = m_framebufferBinding->getAttachmentObject(attachment);
@@ -2207,7 +2210,7 @@ ScriptValue WebGLRenderingContextBase::getFramebufferAttachmentParameter(ScriptS
// OpenGL ES 2.0 specifies INVALID_ENUM in this case, while desktop GL
// specifies INVALID_OPERATION.
synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
ASSERT(object->isTexture() || object->isRenderbuffer());
@@ -2231,10 +2234,10 @@ ScriptValue WebGLRenderingContextBase::getFramebufferAttachmentParameter(ScriptS
return WebGLAny(scriptState, value);
}
synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name for renderbuffer attachment");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
default:
synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name for texture attachment");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
} else {
switch (pname) {
@@ -2249,10 +2252,10 @@ ScriptValue WebGLRenderingContextBase::getFramebufferAttachmentParameter(ScriptS
return WebGLAny(scriptState, value);
}
synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name for renderbuffer attachment");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
default:
synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name for renderbuffer attachment");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
}
}
@@ -2260,7 +2263,7 @@ ScriptValue WebGLRenderingContextBase::getFramebufferAttachmentParameter(ScriptS
ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* scriptState, GLenum pname)
{
if (isContextLost())
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
const int intZero = 0;
switch (pname) {
case GL_ACTIVE_TEXTURE:
@@ -2304,7 +2307,7 @@ ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* scriptState, GL
case GL_CURRENT_PROGRAM:
return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_currentProgram.get()));
case GL_DEPTH_BITS:
- if (!m_framebufferBinding && !m_requestedAttributes->depth())
+ if (!m_framebufferBinding && !m_requestedAttributes.depth())
return WebGLAny(scriptState, intZero);
return getIntParameter(scriptState, pname);
case GL_DEPTH_CLEAR_VALUE:
@@ -2403,7 +2406,7 @@ ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* scriptState, GL
case GL_STENCIL_BACK_WRITEMASK:
return getUnsignedIntParameter(scriptState, pname);
case GL_STENCIL_BITS:
- if (!m_framebufferBinding && !m_requestedAttributes->stencil())
+ if (!m_framebufferBinding && !m_requestedAttributes.stencil())
return WebGLAny(scriptState, intZero);
return getIntParameter(scriptState, pname);
case GL_STENCIL_CLEAR_VALUE:
@@ -2448,40 +2451,40 @@ ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* scriptState, GL
if (extensionEnabled(OESStandardDerivativesName))
return getUnsignedIntParameter(scriptState, GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES);
synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter name, OES_standard_derivatives not enabled");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
case WebGLDebugRendererInfo::UNMASKED_RENDERER_WEBGL:
if (extensionEnabled(WebGLDebugRendererInfoName))
return WebGLAny(scriptState, webContext()->getString(GL_RENDERER));
synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter name, WEBGL_debug_renderer_info not enabled");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
case WebGLDebugRendererInfo::UNMASKED_VENDOR_WEBGL:
if (extensionEnabled(WebGLDebugRendererInfoName))
return WebGLAny(scriptState, webContext()->getString(GL_VENDOR));
synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter name, WEBGL_debug_renderer_info not enabled");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
case GL_VERTEX_ARRAY_BINDING_OES: // OES_vertex_array_object
if (extensionEnabled(OESVertexArrayObjectName)) {
if (!m_boundVertexArrayObject->isDefaultObject())
return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_boundVertexArrayObject.get()));
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter name, OES_vertex_array_object not enabled");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: // EXT_texture_filter_anisotropic
if (extensionEnabled(EXTTextureFilterAnisotropicName))
return getUnsignedIntParameter(scriptState, GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT);
synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter name, EXT_texture_filter_anisotropic not enabled");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
case GL_MAX_COLOR_ATTACHMENTS_EXT: // EXT_draw_buffers BEGIN
if (extensionEnabled(WebGLDrawBuffersName))
return WebGLAny(scriptState, maxColorAttachments());
synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter name, WEBGL_draw_buffers not enabled");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
case GL_MAX_DRAW_BUFFERS_EXT:
if (extensionEnabled(WebGLDrawBuffersName))
return WebGLAny(scriptState, maxDrawBuffers());
synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter name, WEBGL_draw_buffers not enabled");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
default:
if (extensionEnabled(WebGLDrawBuffersName)
&& pname >= GL_DRAW_BUFFER0_EXT
@@ -2494,14 +2497,14 @@ ScriptValue WebGLRenderingContextBase::getParameter(ScriptState* scriptState, GL
return WebGLAny(scriptState, value);
}
synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter name");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
}
ScriptValue WebGLRenderingContextBase::getProgramParameter(ScriptState* scriptState, WebGLProgram* program, GLenum pname)
{
if (isContextLost() || !validateWebGLObject("getProgramParameter", program))
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
GLint value = 0;
switch (pname) {
@@ -2519,7 +2522,7 @@ ScriptValue WebGLRenderingContextBase::getProgramParameter(ScriptState* scriptSt
return WebGLAny(scriptState, value);
default:
synthesizeGLError(GL_INVALID_ENUM, "getProgramParameter", "invalid parameter name");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
}
@@ -2535,14 +2538,14 @@ String WebGLRenderingContextBase::getProgramInfoLog(WebGLProgram* program)
ScriptValue WebGLRenderingContextBase::getRenderbufferParameter(ScriptState* scriptState, GLenum target, GLenum pname)
{
if (isContextLost())
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
if (target != GL_RENDERBUFFER) {
synthesizeGLError(GL_INVALID_ENUM, "getRenderbufferParameter", "invalid target");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
if (!m_renderbufferBinding || !m_renderbufferBinding->object()) {
synthesizeGLError(GL_INVALID_OPERATION, "getRenderbufferParameter", "no renderbuffer bound");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
GLint value = 0;
@@ -2569,14 +2572,14 @@ ScriptValue WebGLRenderingContextBase::getRenderbufferParameter(ScriptState* scr
return WebGLAny(scriptState, m_renderbufferBinding->internalFormat());
default:
synthesizeGLError(GL_INVALID_ENUM, "getRenderbufferParameter", "invalid parameter name");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
}
ScriptValue WebGLRenderingContextBase::getShaderParameter(ScriptState* scriptState, WebGLShader* shader, GLenum pname)
{
if (isContextLost() || !validateWebGLObject("getShaderParameter", shader))
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
GLint value = 0;
switch (pname) {
case GL_DELETE_STATUS:
@@ -2589,7 +2592,7 @@ ScriptValue WebGLRenderingContextBase::getShaderParameter(ScriptState* scriptSta
return WebGLAny(scriptState, static_cast<unsigned>(value));
default:
synthesizeGLError(GL_INVALID_ENUM, "getShaderParameter", "invalid parameter name");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
}
@@ -2666,10 +2669,10 @@ Nullable<Vector<String>> WebGLRenderingContextBase::getSupportedExtensions()
ScriptValue WebGLRenderingContextBase::getTexParameter(ScriptState* scriptState, GLenum target, GLenum pname)
{
if (isContextLost())
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
WebGLTexture* tex = validateTextureBinding("getTexParameter", target, false);
if (!tex)
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
switch (pname) {
case GL_TEXTURE_MAG_FILTER:
case GL_TEXTURE_MIN_FILTER:
@@ -2687,20 +2690,20 @@ ScriptValue WebGLRenderingContextBase::getTexParameter(ScriptState* scriptState,
return WebGLAny(scriptState, value);
}
synthesizeGLError(GL_INVALID_ENUM, "getTexParameter", "invalid parameter name, EXT_texture_filter_anisotropic not enabled");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
default:
synthesizeGLError(GL_INVALID_ENUM, "getTexParameter", "invalid parameter name");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
}
ScriptValue WebGLRenderingContextBase::getUniform(ScriptState* scriptState, WebGLProgram* program, const WebGLUniformLocation* uniformLocation)
{
if (isContextLost() || !validateWebGLObject("getUniform", program))
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
if (!uniformLocation || uniformLocation->program() != program) {
synthesizeGLError(GL_INVALID_OPERATION, "getUniform", "no uniformlocation or not valid for this program");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
GLint location = uniformLocation->location();
@@ -2710,7 +2713,7 @@ ScriptValue WebGLRenderingContextBase::getUniform(ScriptState* scriptState, WebG
for (GLint i = 0; i < activeUniforms; i++) {
blink::WebGraphicsContext3D::ActiveInfo info;
if (!webContext()->getActiveUniform(objectOrZero(program), i, info))
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
String name = info.name;
StringBuilder nameBuilder;
// Strip "[0]" from the name if it's an array.
@@ -2800,7 +2803,7 @@ ScriptValue WebGLRenderingContextBase::getUniform(ScriptState* scriptState, WebG
default:
// Can't handle this type
synthesizeGLError(GL_INVALID_VALUE, "getUniform", "unhandled type");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
switch (baseType) {
case GL_FLOAT: {
@@ -2836,7 +2839,7 @@ ScriptValue WebGLRenderingContextBase::getUniform(ScriptState* scriptState, WebG
}
// If we get here, something went wrong in our unfortunately complex logic above
synthesizeGLError(GL_INVALID_VALUE, "getUniform", "unknown error");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
PassRefPtrWillBeRawPtr<WebGLUniformLocation> WebGLRenderingContextBase::getUniformLocation(WebGLProgram* program, const String& name)
@@ -2862,10 +2865,10 @@ PassRefPtrWillBeRawPtr<WebGLUniformLocation> WebGLRenderingContextBase::getUnifo
ScriptValue WebGLRenderingContextBase::getVertexAttrib(ScriptState* scriptState, GLuint index, GLenum pname)
{
if (isContextLost())
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
if (index >= m_maxVertexAttribs) {
synthesizeGLError(GL_INVALID_VALUE, "getVertexAttrib", "index out of range");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
const WebGLVertexArrayObjectOES::VertexAttribState& state = m_boundVertexArrayObject->getVertexAttribState(index);
@@ -2875,7 +2878,7 @@ ScriptValue WebGLRenderingContextBase::getVertexAttrib(ScriptState* scriptState,
switch (pname) {
case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
if (!state.bufferBinding || !state.bufferBinding->object())
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(state.bufferBinding.get()));
case GL_VERTEX_ATTRIB_ARRAY_ENABLED:
return WebGLAny(scriptState, state.enabled);
@@ -2891,7 +2894,7 @@ ScriptValue WebGLRenderingContextBase::getVertexAttrib(ScriptState* scriptState,
return WebGLAny(scriptState, DOMFloat32Array::create(m_vertexAttribValue[index].value, 4));
default:
synthesizeGLError(GL_INVALID_ENUM, "getVertexAttrib", "invalid parameter name");
- return WebGLAny(scriptState);
+ return ScriptValue::createNull(scriptState);
}
}
@@ -4596,7 +4599,7 @@ GLenum WebGLRenderingContextBase::boundFramebufferColorFormat()
{
if (m_framebufferBinding && m_framebufferBinding->object())
return m_framebufferBinding->colorBufferFormat();
- if (m_requestedAttributes->alpha())
+ if (m_requestedAttributes.alpha())
return GL_RGBA;
return GL_RGB;
}
@@ -5603,7 +5606,7 @@ void WebGLRenderingContextBase::maybeRestoreContext(Timer<WebGLRenderingContextB
#endif
}
- blink::WebGraphicsContext3D::Attributes attributes = m_requestedAttributes->attributes(canvas()->document().topDocument().url().string(), settings, version());
+ blink::WebGraphicsContext3D::Attributes attributes = toWebGraphicsContext3DAttributes(m_requestedAttributes, canvas()->document().topDocument().url().string(), settings, version());
OwnPtr<blink::WebGraphicsContext3D> context = adoptPtr(blink::Platform::current()->createOffscreenGraphicsContext3D(attributes, 0));
RefPtr<DrawingBuffer> buffer;
if (context) {
@@ -5742,8 +5745,9 @@ void WebGLRenderingContextBase::applyStencilTest()
if (m_framebufferBinding)
haveStencilBuffer = m_framebufferBinding->hasStencilBuffer();
else {
- RefPtrWillBeRawPtr<WebGLContextAttributes> attributes = getContextAttributes();
- haveStencilBuffer = attributes->stencil();
+ Nullable<WebGLContextAttributes> attributes;
+ getContextAttributes(attributes);
+ haveStencilBuffer = !attributes.isNull() && attributes.get().stencil();
}
enableOrDisable(GL_STENCIL_TEST,
m_stencilEnabled && haveStencilBuffer);
« no previous file with comments | « Source/core/html/canvas/WebGLRenderingContextBase.h ('k') | Source/core/html/canvas/WebGLRenderingContextBase.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698