Commit ac572bc4 authored by Gabriel Ivăncescu's avatar Gabriel Ivăncescu Committed by Alexandre Julliard

mshtml: Move ccref from the node to the dispex.

parent d4770578
......@@ -2094,6 +2094,7 @@ void init_dispatch(DispatchEx *dispex, IUnknown *outer, dispex_static_data_t *da
dispex->IDispatchEx_iface.lpVtbl = &DispatchExVtbl;
dispex->outer = outer;
dispex->dynamic_data = NULL;
ccref_init(&dispex->ccref, 1);
if(data->vtbl && data->vtbl->get_compat_mode) {
/* delayed init */
......
......@@ -501,7 +501,7 @@ static ULONG WINAPI HTMLDOMNode_AddRef(IHTMLDOMNode *iface)
HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
LONG ref;
ref = ccref_incr(&This->ccref, (nsISupports*)&This->IHTMLDOMNode_iface);
ref = ccref_incr(&This->event_target.dispex.ccref, (nsISupports*)&This->IHTMLDOMNode_iface);
TRACE("(%p) ref=%ld\n", This, ref);
......@@ -511,7 +511,7 @@ static ULONG WINAPI HTMLDOMNode_AddRef(IHTMLDOMNode *iface)
static ULONG WINAPI HTMLDOMNode_Release(IHTMLDOMNode *iface)
{
HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
LONG ref = ccref_decr(&This->ccref, (nsISupports*)&This->IHTMLDOMNode_iface, &node_ccp);
LONG ref = ccref_decr(&This->event_target.dispex.ccref, (nsISupports*)&This->IHTMLDOMNode_iface, &node_ccp);
TRACE("(%p) ref=%ld\n", This, ref);
......@@ -1490,7 +1490,6 @@ void HTMLDOMNode_Init(HTMLDocumentNode *doc, HTMLDOMNode *node, nsIDOMNode *nsno
node->IHTMLDOMNode2_iface.lpVtbl = &HTMLDOMNode2Vtbl;
node->IHTMLDOMNode3_iface.lpVtbl = &HTMLDOMNode3Vtbl;
ccref_init(&node->ccref, 1);
EventTarget_Init(&node->event_target, (IUnknown*)&node->IHTMLDOMNode_iface, dispex_data, doc->document_mode);
if(&doc->node != node)
......@@ -1582,7 +1581,7 @@ static nsresult NSAPI HTMLDOMNode_traverse(void *ccp, void *p, nsCycleCollection
TRACE("%p\n", This);
describe_cc_node(&This->ccref, "HTMLDOMNode", cb);
describe_cc_node(&This->event_target.dispex.ccref, "HTMLDOMNode", cb);
if(This->nsnode)
note_cc_edge((nsISupports*)This->nsnode, "This->nsnode", cb);
......
......@@ -337,6 +337,11 @@ typedef struct dispex_dynamic_data_t dispex_dynamic_data_t;
#define MSHTML_CUSTOM_DISPID_CNT (MSHTML_DISPID_CUSTOM_MAX-MSHTML_DISPID_CUSTOM_MIN)
typedef struct DispatchEx DispatchEx;
typedef struct nsCycleCollectionTraversalCallback nsCycleCollectionTraversalCallback;
typedef struct {
UINT_PTR x;
} nsCycleCollectingAutoRefCnt;
/*
dispex is our base IDispatchEx implementation for all mshtml objects, and the vtbl allows
......@@ -393,23 +398,18 @@ struct DispatchEx {
IDispatchEx IDispatchEx_iface;
IUnknown *outer;
nsCycleCollectingAutoRefCnt ccref;
dispex_data_t *info;
dispex_dynamic_data_t *dynamic_data;
};
typedef struct {
UINT_PTR x;
} nsCycleCollectingAutoRefCnt;
typedef struct {
void *vtbl;
int ref_flags;
void *callbacks;
} ExternalCycleCollectionParticipant;
typedef struct nsCycleCollectionTraversalCallback nsCycleCollectionTraversalCallback;
typedef struct {
nsresult (NSAPI *traverse)(void*,void*,nsCycleCollectionTraversalCallback*);
nsresult (NSAPI *unlink)(void*);
......@@ -851,8 +851,6 @@ struct HTMLDOMNode {
IHTMLDOMNode3 IHTMLDOMNode3_iface;
const NodeImplVtbl *vtbl;
nsCycleCollectingAutoRefCnt ccref;
nsIDOMNode *nsnode;
HTMLDocumentNode *doc;
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment