bool AndroidSurfaceTexture::Init(GLContext* aContext, GLuint aTexture) { if (!aTexture && !CanDetach()) { // We have no texture and cannot initialize detached, bail out return false; } if (NS_WARN_IF(NS_FAILED( SurfaceTexture::New(aTexture, ReturnTo(&mSurfaceTexture))))) { return false; } if (!aTexture) { mSurfaceTexture->DetachFromGLContext(); } mAttachedContext = aContext; if (NS_WARN_IF(NS_FAILED( Surface::New(mSurfaceTexture, ReturnTo(&mSurface))))) { return false; } mNativeWindow = AndroidNativeWindow::CreateFromSurface(jni::GetEnvForThread(), mSurface.Get()); MOZ_ASSERT(mNativeWindow, "Failed to create native window from surface"); mID = sInstances.Add(this); return true; }