Zebediah Figura : quartz: Always return S_FALSE from DllCanUnloadNow().
Alexandre Julliard
julliard at winehq.org
Thu Aug 26 15:22:29 CDT 2021
Module: wine
Branch: master
Commit: 9a4a722fcce622af77b1a1a0892f7f71a48c6ac6
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9a4a722fcce622af77b1a1a0892f7f71a48c6ac6
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Wed Aug 25 17:10:36 2021 -0500
quartz: Always return S_FALSE from DllCanUnloadNow().
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/quartz/acmwrapper.c | 2 --
dlls/quartz/avidec.c | 2 --
dlls/quartz/dsoundrender.c | 2 --
dlls/quartz/filesource.c | 2 --
dlls/quartz/filtergraph.c | 2 --
dlls/quartz/filtermapper.c | 2 --
dlls/quartz/main.c | 24 ++----------------------
dlls/quartz/memallocator.c | 2 --
dlls/quartz/passthrough.c | 2 --
dlls/quartz/quartz_private.h | 2 --
dlls/quartz/systemclock.c | 2 --
dlls/quartz/videorenderer.c | 2 --
dlls/quartz/vmr9.c | 10 ++--------
13 files changed, 4 insertions(+), 52 deletions(-)
diff --git a/dlls/quartz/acmwrapper.c b/dlls/quartz/acmwrapper.c
index 81e856a00df..a07bdfef0ca 100644
--- a/dlls/quartz/acmwrapper.c
+++ b/dlls/quartz/acmwrapper.c
@@ -484,8 +484,6 @@ static void acm_wrapper_destroy(struct strmbase_filter *iface)
FreeMediaType(&filter->mt);
strmbase_filter_cleanup(&filter->filter);
free(filter);
-
- InterlockedDecrement(&object_locks);
}
static HRESULT acm_wrapper_init_stream(struct strmbase_filter *iface)
diff --git a/dlls/quartz/avidec.c b/dlls/quartz/avidec.c
index b1e07fe5879..3d947e1b1bf 100644
--- a/dlls/quartz/avidec.c
+++ b/dlls/quartz/avidec.c
@@ -538,8 +538,6 @@ static void avi_decompressor_destroy(struct strmbase_filter *iface)
strmbase_filter_cleanup(&filter->filter);
free(filter);
-
- InterlockedDecrement(&object_locks);
}
static HRESULT avi_decompressor_init_stream(struct strmbase_filter *iface)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c
index 68c88ea5a15..9ecdb280cc6 100644
--- a/dlls/quartz/dsoundrender.c
+++ b/dlls/quartz/dsoundrender.c
@@ -549,8 +549,6 @@ static void dsound_render_destroy(struct strmbase_filter *iface)
strmbase_passthrough_cleanup(&filter->passthrough);
strmbase_filter_cleanup(&filter->filter);
free(filter);
-
- InterlockedDecrement(&object_locks);
}
static struct strmbase_pin *dsound_render_get_pin(struct strmbase_filter *iface, unsigned int index)
diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c
index cf5fe457715..e5e7b482984 100644
--- a/dlls/quartz/filesource.c
+++ b/dlls/quartz/filesource.c
@@ -351,8 +351,6 @@ static void async_reader_destroy(struct strmbase_filter *iface)
strmbase_filter_cleanup(&filter->filter);
free(filter);
-
- InterlockedDecrement(&object_locks);
}
static HRESULT async_reader_query_interface(struct strmbase_filter *iface, REFIID iid, void **out)
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index a1f3757a202..47b9da9510b 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -475,8 +475,6 @@ static ULONG WINAPI FilterGraphInner_Release(IUnknown *iface)
DeleteCriticalSection(&This->event_cs);
DeleteCriticalSection(&This->cs);
free(This);
-
- InterlockedDecrement(&object_locks);
}
return ref;
}
diff --git a/dlls/quartz/filtermapper.c b/dlls/quartz/filtermapper.c
index b3210fdcd59..230273891d4 100644
--- a/dlls/quartz/filtermapper.c
+++ b/dlls/quartz/filtermapper.c
@@ -487,8 +487,6 @@ static ULONG WINAPI Inner_Release(IUnknown *iface)
if (ref == 0)
{
CoTaskMemFree(This);
-
- InterlockedDecrement(&object_locks);
}
return ref;
diff --git a/dlls/quartz/main.c b/dlls/quartz/main.c
index 303cc30a931..ed7080b76b9 100644
--- a/dlls/quartz/main.c
+++ b/dlls/quartz/main.c
@@ -24,11 +24,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(quartz);
extern HRESULT WINAPI QUARTZ_DllGetClassObject(REFCLSID, REFIID, LPVOID *) DECLSPEC_HIDDEN;
-extern HRESULT WINAPI QUARTZ_DllCanUnloadNow(void) DECLSPEC_HIDDEN;
extern BOOL WINAPI QUARTZ_DllMain(HINSTANCE, DWORD, LPVOID) DECLSPEC_HIDDEN;
-LONG object_locks = 0;
-
BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
{
if (reason == DLL_PROCESS_DETACH && !reserved)
@@ -127,21 +124,15 @@ static HRESULT WINAPI DSCF_CreateInstance(IClassFactory *iface, IUnknown *pOuter
if (SUCCEEDED(hres = This->create_instance(pOuter, &punk)))
{
- InterlockedIncrement(&object_locks);
hres = IUnknown_QueryInterface(punk, riid, ppobj);
IUnknown_Release(punk);
}
return hres;
}
-static HRESULT WINAPI DSCF_LockServer(IClassFactory *iface, BOOL dolock)
+static HRESULT WINAPI DSCF_LockServer(IClassFactory *iface, BOOL lock)
{
- IClassFactoryImpl *This = impl_from_IClassFactory(iface);
- FIXME("(%p)->(%d),stub!\n",This,dolock);
- if(dolock)
- InterlockedIncrement(&object_locks);
- else
- InterlockedDecrement(&object_locks);
+ FIXME("iface %p, lock %d, stub!\n", iface, lock);
return S_OK;
}
@@ -199,17 +190,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
return QUARTZ_DllGetClassObject( rclsid, riid, ppv );
}
-/***********************************************************************
- * DllCanUnloadNow (QUARTZ.@)
- */
-HRESULT WINAPI DllCanUnloadNow(void)
-{
- if (!object_locks && QUARTZ_DllCanUnloadNow() == S_OK)
- return S_OK;
- return S_FALSE;
-}
-
-
#define OUR_GUID_ENTRY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
{ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } , #name },
diff --git a/dlls/quartz/memallocator.c b/dlls/quartz/memallocator.c
index cc13f776cfb..531fbe874cf 100644
--- a/dlls/quartz/memallocator.c
+++ b/dlls/quartz/memallocator.c
@@ -911,8 +911,6 @@ static void StdMemAllocator_Destroy(IMemAllocator *iface)
DeleteCriticalSection(&This->csState);
CoTaskMemFree(This);
-
- InterlockedDecrement(&object_locks);
}
HRESULT mem_allocator_create(IUnknown *lpUnkOuter, IUnknown **out)
diff --git a/dlls/quartz/passthrough.c b/dlls/quartz/passthrough.c
index 7f81ae8a1be..2f8fe9dc370 100644
--- a/dlls/quartz/passthrough.c
+++ b/dlls/quartz/passthrough.c
@@ -80,8 +80,6 @@ static ULONG WINAPI seeking_passthrough_Release(IUnknown *iface)
{
strmbase_passthrough_cleanup(&passthrough->passthrough);
free(passthrough);
-
- InterlockedDecrement(&object_locks);
}
return refcount;
}
diff --git a/dlls/quartz/quartz_private.h b/dlls/quartz/quartz_private.h
index de83c2535db..c706d906a26 100644
--- a/dlls/quartz/quartz_private.h
+++ b/dlls/quartz/quartz_private.h
@@ -58,8 +58,6 @@ static inline const char *debugstr_time(REFERENCE_TIME time)
return wine_dbg_sprintf("%s", rev);
}
-extern LONG object_locks;
-
/* see IAsyncReader::Request on MSDN for the explanation of this */
#define MEDIATIME_FROM_BYTES(x) ((LONGLONG)(x) * 10000000)
#define BYTES_FROM_MEDIATIME(time) ((time) / 10000000)
diff --git a/dlls/quartz/systemclock.c b/dlls/quartz/systemclock.c
index 73a923a7b99..cebe4846f04 100644
--- a/dlls/quartz/systemclock.c
+++ b/dlls/quartz/systemclock.c
@@ -115,8 +115,6 @@ static ULONG WINAPI system_clock_inner_Release(IUnknown *iface)
clock->cs.DebugInfo->Spare[0] = 0;
DeleteCriticalSection(&clock->cs);
heap_free(clock);
-
- InterlockedDecrement(&object_locks);
}
return refcount;
}
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c
index 1a59a9b5213..1dbb8a02181 100644
--- a/dlls/quartz/videorenderer.c
+++ b/dlls/quartz/videorenderer.c
@@ -130,8 +130,6 @@ static void video_renderer_destroy(struct strmbase_renderer *iface)
video_window_cleanup(&filter->window);
strmbase_renderer_cleanup(&filter->renderer);
free(filter);
-
- InterlockedDecrement(&object_locks);
}
static HRESULT video_renderer_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c
index 2562b74932a..4bde811c6d7 100644
--- a/dlls/quartz/vmr9.c
+++ b/dlls/quartz/vmr9.c
@@ -528,12 +528,6 @@ static void vmr_disconnect(struct strmbase_renderer *This)
}
}
-static void vmr_free(struct quartz_vmr *filter)
-{
- free(filter);
- InterlockedDecrement(&object_locks);
-}
-
static void vmr_destroy(struct strmbase_renderer *iface)
{
struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
@@ -563,7 +557,7 @@ static void vmr_destroy(struct strmbase_renderer *iface)
FreeLibrary(filter->hD3d9);
strmbase_renderer_cleanup(&filter->renderer);
if (!filter->IVMRSurfaceAllocatorNotify9_refcount)
- vmr_free(filter);
+ free(filter);
}
static HRESULT vmr_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
@@ -1955,7 +1949,7 @@ static ULONG WINAPI VMR9SurfaceAllocatorNotify_Release(IVMRSurfaceAllocatorNotif
TRACE("%p decreasing refcount to %u.\n", iface, refcount);
if (!refcount && !filter->renderer.filter.refcount)
- vmr_free(filter);
+ free(filter);
return refcount;
}
More information about the wine-cvs
mailing list