attemp at implementing DllCanUnload now for dcompos

Mike Hearn mh at codeweavers.com
Thu Dec 2 09:34:49 CST 2004


On Wed, 01 Dec 2004 22:13:23 -0500, James Hawkins wrote:
>  ULONG WINAPI IDirectMusicChordMapImpl_IUnknown_AddRef (LPUNKNOWN iface) {
>  	ICOM_THIS_MULTI(IDirectMusicChordMapImpl, UnknownVtbl, iface);
> -	TRACE("(%p): AddRef from %ld\n", This, This->ref);
> -	return ++(This->ref);
> +	TRACE("(%p): AddRef\n", This);
> +	
> +	LockModule();
> +	
> +	return 2; /* non-heap based object */
>  }

What makes you think this is a non-heap object? Almost all COM objects are
heap based except classfactories and process-wide singletons (internal to
COM typically). 

In particular this one maintains its own ref count. You shouldn't be
modifying the way objects to refcounting, you should just be adding the
LockModule/UnlockModule calls.




More information about the wine-devel mailing list