--- a/dom/canvas/WebGL2ContextMRTs.cpp
+++ b/dom/canvas/WebGL2ContextMRTs.cpp
@@ -89,79 +89,107 @@ WebGL2Context::ClearBufferfv_base(GLenum
}
gl->fClearBufferfv(buffer, drawbuffer, value);
}
void
WebGL2Context::ClearBufferiv(GLenum buffer, GLint drawbuffer, const dom::Int32Array& value)
{
+ if (IsContextLost()) {
+ return;
+ }
+
value.ComputeLengthAndData();
if (!ValidateClearBuffer("clearBufferiv", buffer, drawbuffer, value.Length())) {
return;
}
ClearBufferiv_base(buffer, drawbuffer, value.Data());
}
void
WebGL2Context::ClearBufferiv(GLenum buffer, GLint drawbuffer, const dom::Sequence<GLint>& value)
{
+ if (IsContextLost()) {
+ return;
+ }
+
if (!ValidateClearBuffer("clearBufferiv", buffer, drawbuffer, value.Length())) {
return;
}
ClearBufferiv_base(buffer, drawbuffer, value.Elements());
}
void
WebGL2Context::ClearBufferuiv(GLenum buffer, GLint drawbuffer, const dom::Uint32Array& value)
{
+ if (IsContextLost()) {
+ return;
+ }
+
value.ComputeLengthAndData();
if (!ValidateClearBuffer("clearBufferuiv", buffer, drawbuffer, value.Length())) {
return;
}
ClearBufferuiv_base(buffer, drawbuffer, value.Data());
}
void
WebGL2Context::ClearBufferuiv(GLenum buffer, GLint drawbuffer, const dom::Sequence<GLuint>& value)
{
+ if (IsContextLost()) {
+ return;
+ }
+
if (!ValidateClearBuffer("clearBufferuiv", buffer, drawbuffer, value.Length())) {
return;
}
ClearBufferuiv_base(buffer, drawbuffer, value.Elements());
}
void
WebGL2Context::ClearBufferfv(GLenum buffer, GLint drawbuffer, const dom::Float32Array& value)
{
+ if (IsContextLost()) {
+ return;
+ }
+
value.ComputeLengthAndData();
if (!ValidateClearBuffer("clearBufferfv", buffer, drawbuffer, value.Length())) {
return;
}
ClearBufferfv_base(buffer, drawbuffer, value.Data());
}
void
WebGL2Context::ClearBufferfv(GLenum buffer, GLint drawbuffer, const dom::Sequence<GLfloat>& value)
{
+ if (IsContextLost()) {
+ return;
+ }
+
if (!ValidateClearBuffer("clearBufferfv", buffer, drawbuffer, value.Length())) {
return;
}
ClearBufferfv_base(buffer, drawbuffer, value.Elements());
}
void
WebGL2Context::ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
{
+ if (IsContextLost()) {
+ return;
+ }
+
if (buffer != LOCAL_GL_DEPTH_STENCIL) {
return ErrorInvalidEnumInfo("clearBufferfi: buffer", buffer);
}
MakeContextCurrent();
gl->fClearBufferfi(buffer, drawbuffer, depth, stencil);
}
} // namespace mozilla