mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 747825. Make the WebGLContext a wrapper cache. r=peterv
This commit is contained in:
parent
9f4754b67b
commit
6cb0048f56
@ -1193,22 +1193,33 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(WebGLContext)
|
|||||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(WebGLContext)
|
NS_IMPL_CYCLE_COLLECTING_RELEASE(WebGLContext)
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_CLASS(WebGLContext)
|
NS_IMPL_CYCLE_COLLECTION_CLASS(WebGLContext)
|
||||||
|
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(WebGLContext)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRACE_END
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(WebGLContext)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(WebGLContext)
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mCanvasElement)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mCanvasElement)
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSTARRAY(mEnabledExtensions)
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSTARRAY(mEnabledExtensions)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
|
||||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||||
|
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(WebGLContext)
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(WebGLContext)
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mCanvasElement)
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mCanvasElement)
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSTARRAY_OF_NSCOMPTR(mEnabledExtensions)
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSTARRAY_OF_NSCOMPTR(mEnabledExtensions)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
|
||||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||||
|
|
||||||
DOMCI_DATA(WebGLRenderingContext, WebGLContext)
|
DOMCI_DATA(WebGLRenderingContext, WebGLContext)
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(WebGLContext)
|
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(WebGLContext)
|
||||||
|
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIDOMWebGLRenderingContext)
|
NS_INTERFACE_MAP_ENTRY(nsIDOMWebGLRenderingContext)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsICanvasRenderingContextInternal)
|
NS_INTERFACE_MAP_ENTRY(nsICanvasRenderingContextInternal)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
|
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsITimerCallback)
|
NS_INTERFACE_MAP_ENTRY(nsITimerCallback)
|
||||||
|
// If the exact way we cast to nsISupports here ever changes, fix our
|
||||||
|
// PreCreate hook!
|
||||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMWebGLRenderingContext)
|
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMWebGLRenderingContext)
|
||||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(WebGLRenderingContext)
|
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(WebGLRenderingContext)
|
||||||
NS_INTERFACE_MAP_END
|
NS_INTERFACE_MAP_END
|
||||||
|
@ -523,7 +523,8 @@ class WebGLContext :
|
|||||||
public nsICanvasRenderingContextInternal,
|
public nsICanvasRenderingContextInternal,
|
||||||
public nsSupportsWeakReference,
|
public nsSupportsWeakReference,
|
||||||
public nsITimerCallback,
|
public nsITimerCallback,
|
||||||
public WebGLRectangleObject
|
public WebGLRectangleObject,
|
||||||
|
public nsWrapperCache
|
||||||
{
|
{
|
||||||
friend class WebGLMemoryMultiReporterWrapper;
|
friend class WebGLMemoryMultiReporterWrapper;
|
||||||
friend class WebGLExtensionLoseContext;
|
friend class WebGLExtensionLoseContext;
|
||||||
@ -536,7 +537,12 @@ public:
|
|||||||
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||||
|
|
||||||
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(WebGLContext, nsIDOMWebGLRenderingContext)
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(WebGLContext,
|
||||||
|
nsIDOMWebGLRenderingContext)
|
||||||
|
|
||||||
|
nsINode* GetParentObject() {
|
||||||
|
return HTMLCanvasElement();
|
||||||
|
}
|
||||||
|
|
||||||
NS_DECL_NSIDOMWEBGLRENDERINGCONTEXT
|
NS_DECL_NSIDOMWEBGLRENDERINGCONTEXT
|
||||||
|
|
||||||
|
@ -10908,8 +10908,20 @@ WebGLExtensionSH::PreCreate(nsISupports *nativeObj, JSContext *cx,
|
|||||||
|
|
||||||
WebGLExtension *ext = static_cast<WebGLExtension*>(nativeObj);
|
WebGLExtension *ext = static_cast<WebGLExtension*>(nativeObj);
|
||||||
WebGLContext *webgl = ext->Context();
|
WebGLContext *webgl = ext->Context();
|
||||||
nsHTMLCanvasElement *canvas = webgl->HTMLCanvasElement();
|
nsINode *node = webgl->GetParentObject();
|
||||||
nsINode *node = static_cast<nsINode*>(canvas);
|
|
||||||
|
return WrapNativeParent(cx, globalObj, node, node, parentObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsWebGLViewportHandlerSH::PreCreate(nsISupports *nativeObj, JSContext *cx,
|
||||||
|
JSObject *globalObj, JSObject **parentObj)
|
||||||
|
{
|
||||||
|
*parentObj = globalObj;
|
||||||
|
|
||||||
|
WebGLContext *webgl = static_cast<WebGLContext*>(
|
||||||
|
static_cast<nsIDOMWebGLRenderingContext*>(nativeObj));
|
||||||
|
nsINode *node = webgl->GetParentObject();
|
||||||
|
|
||||||
return WrapNativeParent(cx, globalObj, node, node, parentObj);
|
return WrapNativeParent(cx, globalObj, node, node, parentObj);
|
||||||
}
|
}
|
||||||
|
@ -1612,6 +1612,9 @@ public:
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHOD PreCreate(nsISupports *nativeObj, JSContext *cx,
|
||||||
|
JSObject *globalObj, JSObject **parentObj);
|
||||||
|
|
||||||
static nsIClassInfo *doCreate(nsDOMClassInfoData* aData)
|
static nsIClassInfo *doCreate(nsDOMClassInfoData* aData)
|
||||||
{
|
{
|
||||||
return new nsWebGLViewportHandlerSH(aData);
|
return new nsWebGLViewportHandlerSH(aData);
|
||||||
|
Loading…
Reference in New Issue
Block a user