diff --git a/content/canvas/src/WebGLContextGL.cpp b/content/canvas/src/WebGLContextGL.cpp index a62caee967ec..e80bc1f3d32c 100644 --- a/content/canvas/src/WebGLContextGL.cpp +++ b/content/canvas/src/WebGLContextGL.cpp @@ -2400,8 +2400,14 @@ NS_IMETHODIMP WebGLContext::IsBuffer(nsIWebGLBuffer *bobj, WebGLboolean *retval) { PRBool isDeleted; - *retval = CanGetConcreteObject("isBuffer", bobj, 0, &isDeleted) && !isDeleted; + WebGLuint obj; + PRBool ok = GetGLName("isBuffer", bobj, &obj, 0, &isDeleted) && !isDeleted; + if (ok) { + MakeContextCurrent(); + ok = gl->fIsBuffer(obj); + } + *retval = ok; return NS_OK; } @@ -2409,8 +2415,14 @@ NS_IMETHODIMP WebGLContext::IsFramebuffer(nsIWebGLFramebuffer *fbobj, WebGLboolean *retval) { PRBool isDeleted; - *retval = CanGetConcreteObject("isFramebuffer", fbobj, 0, &isDeleted) && !isDeleted; + WebGLuint obj; + PRBool ok = GetGLName("isFramebuffer", fbobj, &obj, 0, &isDeleted) && !isDeleted; + if (ok) { + MakeContextCurrent(); + ok = gl->fIsFramebuffer(obj); + } + *retval = ok; return NS_OK; } @@ -2427,8 +2439,14 @@ NS_IMETHODIMP WebGLContext::IsRenderbuffer(nsIWebGLRenderbuffer *rbobj, WebGLboolean *retval) { PRBool isDeleted; - *retval = CanGetConcreteObject("isRenderBuffer", rbobj, 0, &isDeleted) && !isDeleted; + WebGLuint obj; + PRBool ok = GetGLName("isRenderBuffer", rbobj, &obj, 0, &isDeleted) && !isDeleted; + if (ok) { + MakeContextCurrent(); + ok = gl->fIsRenderbuffer(obj); + } + *retval = ok; return NS_OK; } @@ -2445,8 +2463,14 @@ NS_IMETHODIMP WebGLContext::IsTexture(nsIWebGLTexture *tobj, WebGLboolean *retval) { PRBool isDeleted; - *retval = CanGetConcreteObject("isTexture", tobj, 0, &isDeleted) && !isDeleted; + WebGLuint obj; + PRBool ok = GetGLName("isTexture", tobj, &obj, 0, &isDeleted) && !isDeleted; + if (ok) { + MakeContextCurrent(); + ok = gl->fIsTexture(obj); + } + *retval = ok; return NS_OK; }