ole32: Don't release the registered drop targets in OleUninitialize.

Do it in DLL_PROCESS_DETACH instead.
This commit is contained in:
Rob Shearman 2007-04-05 11:33:52 +01:00 committed by Alexandre Julliard
parent 47432cba45
commit 63ea015c65
4 changed files with 4 additions and 9 deletions

View File

@ -3402,6 +3402,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
case DLL_PROCESS_DETACH:
if (TRACE_ON(ole)) CoRevokeMallocSpy();
OLEDD_UnInitialize();
COMPOBJ_UninitProcess();
RPC_UnregisterAllChannelHooks();
OLE32_hInstance = 0;

View File

@ -242,6 +242,8 @@ HRESULT WINAPI RunningObjectTableImpl_UnInitialize(void);
/* This function decomposes a String path to a String Table containing all the elements ("\" or "subDirectory" or "Directory" or "FileName") of the path */
int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR** stringTable);
/* Drag and drop */
void OLEDD_UnInitialize(void);
/* Apartment Functions */

View File

@ -147,7 +147,6 @@ extern void OLEClipbrd_Initialize(void);
* These are the prototypes of the utility methods used for OLE Drag n Drop
*/
static void OLEDD_Initialize(void);
static void OLEDD_UnInitialize(void);
static DropTargetNode* OLEDD_FindDropTarget(
HWND hwndOfTarget);
static void OLEDD_FreeDropTarget(DropTargetNode*);
@ -253,11 +252,6 @@ void WINAPI OleUninitialize(void)
*/
OLEClipbrd_UnInitialize();
/*
* Drag and Drop
*/
OLEDD_UnInitialize();
/*
* OLE shared menu
*/
@ -1915,7 +1909,7 @@ static void OLEDD_FreeDropTarget(DropTargetNode *dropTargetInfo)
*
* Releases the OLE drag and drop data structures.
*/
static void OLEDD_UnInitialize(void)
void OLEDD_UnInitialize(void)
{
/*
* Simply empty the list.

View File

@ -136,11 +136,9 @@ START_TEST(dragdrop)
ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been called\n");
OleUninitialize();
todo_wine
ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been called\n");
hr = RevokeDragDrop(GetDesktopWindow());
todo_wine
ok_ole_success(hr, "RevokeDragDrop");
ok(droptarget_release_called == 1, "DropTarget_Release should have been called once, not %d times\n", droptarget_release_called);