ole32: Don't release the registered drop targets in OleUninitialize.
Do it in DLL_PROCESS_DETACH instead.
This commit is contained in:
parent
47432cba45
commit
63ea015c65
|
@ -3402,6 +3402,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
|
||||||
|
|
||||||
case DLL_PROCESS_DETACH:
|
case DLL_PROCESS_DETACH:
|
||||||
if (TRACE_ON(ole)) CoRevokeMallocSpy();
|
if (TRACE_ON(ole)) CoRevokeMallocSpy();
|
||||||
|
OLEDD_UnInitialize();
|
||||||
COMPOBJ_UninitProcess();
|
COMPOBJ_UninitProcess();
|
||||||
RPC_UnregisterAllChannelHooks();
|
RPC_UnregisterAllChannelHooks();
|
||||||
OLE32_hInstance = 0;
|
OLE32_hInstance = 0;
|
||||||
|
|
|
@ -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 */
|
/* 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);
|
int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR** stringTable);
|
||||||
|
|
||||||
|
/* Drag and drop */
|
||||||
|
void OLEDD_UnInitialize(void);
|
||||||
|
|
||||||
/* Apartment Functions */
|
/* Apartment Functions */
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,6 @@ extern void OLEClipbrd_Initialize(void);
|
||||||
* These are the prototypes of the utility methods used for OLE Drag n Drop
|
* These are the prototypes of the utility methods used for OLE Drag n Drop
|
||||||
*/
|
*/
|
||||||
static void OLEDD_Initialize(void);
|
static void OLEDD_Initialize(void);
|
||||||
static void OLEDD_UnInitialize(void);
|
|
||||||
static DropTargetNode* OLEDD_FindDropTarget(
|
static DropTargetNode* OLEDD_FindDropTarget(
|
||||||
HWND hwndOfTarget);
|
HWND hwndOfTarget);
|
||||||
static void OLEDD_FreeDropTarget(DropTargetNode*);
|
static void OLEDD_FreeDropTarget(DropTargetNode*);
|
||||||
|
@ -253,11 +252,6 @@ void WINAPI OleUninitialize(void)
|
||||||
*/
|
*/
|
||||||
OLEClipbrd_UnInitialize();
|
OLEClipbrd_UnInitialize();
|
||||||
|
|
||||||
/*
|
|
||||||
* Drag and Drop
|
|
||||||
*/
|
|
||||||
OLEDD_UnInitialize();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OLE shared menu
|
* OLE shared menu
|
||||||
*/
|
*/
|
||||||
|
@ -1915,7 +1909,7 @@ static void OLEDD_FreeDropTarget(DropTargetNode *dropTargetInfo)
|
||||||
*
|
*
|
||||||
* Releases the OLE drag and drop data structures.
|
* Releases the OLE drag and drop data structures.
|
||||||
*/
|
*/
|
||||||
static void OLEDD_UnInitialize(void)
|
void OLEDD_UnInitialize(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Simply empty the list.
|
* Simply empty the list.
|
||||||
|
|
|
@ -136,11 +136,9 @@ START_TEST(dragdrop)
|
||||||
|
|
||||||
ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been called\n");
|
ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been called\n");
|
||||||
OleUninitialize();
|
OleUninitialize();
|
||||||
todo_wine
|
|
||||||
ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been called\n");
|
ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been called\n");
|
||||||
|
|
||||||
hr = RevokeDragDrop(GetDesktopWindow());
|
hr = RevokeDragDrop(GetDesktopWindow());
|
||||||
todo_wine
|
|
||||||
ok_ole_success(hr, "RevokeDragDrop");
|
ok_ole_success(hr, "RevokeDragDrop");
|
||||||
ok(droptarget_release_called == 1, "DropTarget_Release should have been called once, not %d times\n", droptarget_release_called);
|
ok(droptarget_release_called == 1, "DropTarget_Release should have been called once, not %d times\n", droptarget_release_called);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue