diff --git a/content/canvas/src/WebGLContext.h b/content/canvas/src/WebGLContext.h index 2918913edea1..92333119f994 100644 --- a/content/canvas/src/WebGLContext.h +++ b/content/canvas/src/WebGLContext.h @@ -11,6 +11,7 @@ #include "WebGLShader.h" #include "WebGLBuffer.h" #include "WebGLProgram.h" +#include "WebGLUniformLocation.h" #include "WebGLRenderbuffer.h" #include "WebGLTexture.h" #include "WebGLVertexAttribData.h" @@ -71,7 +72,6 @@ class nsIPropertyBag; namespace mozilla { class WebGLFramebuffer; -class WebGLUniformLocation; class WebGLMemoryPressureObserver; class WebGLContextBoundObject; class WebGLActiveInfo; @@ -1621,52 +1621,6 @@ public: mDepthStencilAttachment; }; -class WebGLUniformLocation MOZ_FINAL - : public nsISupports - , public WebGLContextBoundObject -{ -public: - WebGLUniformLocation(WebGLContext *context, WebGLProgram *program, GLint location, const WebGLUniformInfo& info) - : WebGLContextBoundObject(context) - , mProgram(program) - , mProgramGeneration(program->Generation()) - , mLocation(location) - , mInfo(info) - { - mElementSize = info.ElementSize(); - } - - ~WebGLUniformLocation() { - } - - // needed for certain helper functions like ValidateObject. - // WebGLUniformLocation's can't be 'Deleted' in the WebGL sense. - bool IsDeleted() const { return false; } - - const WebGLUniformInfo &Info() const { return mInfo; } - - WebGLProgram *Program() const { return mProgram; } - GLint Location() const { return mLocation; } - uint32_t ProgramGeneration() const { return mProgramGeneration; } - int ElementSize() const { return mElementSize; } - - virtual JSObject* WrapObject(JSContext *cx, JSObject *scope); - - NS_DECL_CYCLE_COLLECTING_ISUPPORTS - NS_DECL_CYCLE_COLLECTION_CLASS(WebGLUniformLocation) - -protected: - // nsRefPtr, not WebGLRefPtr, so that we don't prevent the program from being explicitly deleted. - // we just want to avoid having a dangling pointer. - nsRefPtr mProgram; - - uint32_t mProgramGeneration; - GLint mLocation; - WebGLUniformInfo mInfo; - int mElementSize; - friend class WebGLProgram; -}; - class WebGLActiveInfo MOZ_FINAL : public nsISupports { diff --git a/content/canvas/src/WebGLUniformLocation.cpp b/content/canvas/src/WebGLUniformLocation.cpp index d5f49dbb9036..ef0df56ace74 100644 --- a/content/canvas/src/WebGLUniformLocation.cpp +++ b/content/canvas/src/WebGLUniformLocation.cpp @@ -14,6 +14,16 @@ WebGLUniformLocation::WrapObject(JSContext *cx, JSObject *scope) return dom::WebGLUniformLocationBinding::Wrap(cx, scope, this); } +WebGLUniformLocation::WebGLUniformLocation(WebGLContext *context, WebGLProgram *program, GLint location, const WebGLUniformInfo& info) + : WebGLContextBoundObject(context) + , mProgram(program) + , mProgramGeneration(program->Generation()) + , mLocation(location) + , mInfo(info) +{ + mElementSize = info.ElementSize(); +} + NS_IMPL_CYCLE_COLLECTION_CLASS(WebGLUniformLocation) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(WebGLUniformLocation) diff --git a/content/canvas/src/WebGLUniformLocation.h b/content/canvas/src/WebGLUniformLocation.h new file mode 100644 index 000000000000..e2d2236efef1 --- /dev/null +++ b/content/canvas/src/WebGLUniformLocation.h @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef WEBGLUNIFORMLOCATION_H_ +#define WEBGLUNIFORMLOCATION_H_ + +#include "WebGLObjectModel.h" + +namespace mozilla { + +class WebGLUniformLocation MOZ_FINAL + : public nsISupports + , public WebGLContextBoundObject +{ +public: + WebGLUniformLocation(WebGLContext *context, WebGLProgram *program, GLint location, const WebGLUniformInfo& info); + + ~WebGLUniformLocation() { + } + + // needed for certain helper functions like ValidateObject. + // WebGLUniformLocation's can't be 'Deleted' in the WebGL sense. + bool IsDeleted() const { return false; } + + const WebGLUniformInfo &Info() const { return mInfo; } + + WebGLProgram *Program() const { return mProgram; } + GLint Location() const { return mLocation; } + uint32_t ProgramGeneration() const { return mProgramGeneration; } + int ElementSize() const { return mElementSize; } + + virtual JSObject* WrapObject(JSContext *cx, JSObject *scope); + + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_CLASS(WebGLUniformLocation) + +protected: + // nsRefPtr, not WebGLRefPtr, so that we don't prevent the program from being explicitly deleted. + // we just want to avoid having a dangling pointer. + nsRefPtr mProgram; + + uint32_t mProgramGeneration; + GLint mLocation; + WebGLUniformInfo mInfo; + int mElementSize; + friend class WebGLProgram; +}; + +} // namespace mozilla + +#endif