Skip to content
Snippets Groups Projects
Commit 8eeed94f authored by Alexandre Julliard's avatar Alexandre Julliard
Browse files

Export DestroyIcon32 from user32 and use GetProcAddress to call it

from FreeResource16.
parent 7e49205d
No related branches found
No related tags found
No related merge requests found
......@@ -672,6 +672,7 @@ debug_channels (accel caret class clipboard combo cursor dc dde ddeml dialog dri
@ stdcall CallWindowProc16(long long long long long) CallWindowProc16
@ stdcall CloseDriver16(long long long) CloseDriver16
@ stdcall CreateDialogIndirectParam16(long ptr long long long) CreateDialogIndirectParam16
@ stdcall DestroyIcon32(long long) DestroyIcon32
@ stdcall DefDriverProc16(long long long long long) DefDriverProc16
@ stdcall DialogBoxIndirectParam16(long long long long long) DialogBoxIndirectParam16
@ stdcall GetDriverModuleHandle16(long) GetDriverModuleHandle16
......
......@@ -80,9 +80,6 @@ extern HGLOBAL CURSORICON_Load( HINSTANCE hInstance, LPCWSTR name,
extern HGLOBAL CURSORICON_ExtCopy(HGLOBAL handle, UINT type,
INT desiredx, INT desiredy,
UINT flags);
extern WORD WINAPI CURSORICON_Destroy( HGLOBAL16 handle, UINT16 flags );
extern void CURSORICON_FreeModuleIcons( HMODULE hModule );
#endif /* __WINE_CURSORICON_H */
......@@ -17,7 +17,6 @@
#include "wine/winbase16.h"
#include "wine/exception.h"
#include "heap.h"
#include "callback.h"
#include "cursoricon.h"
#include "module.h"
#include "file.h"
......@@ -409,6 +408,9 @@ LPVOID WINAPI LockResource( HGLOBAL handle )
return LockResource16( handle );
}
typedef WORD WINAPI (*pDestroyIcon32Proc)( HGLOBAL16 handle, UINT16 flags );
/**********************************************************************
* FreeResource (KERNEL.63)
* FreeResource16 (KERNEL32.@)
......@@ -428,8 +430,11 @@ BOOL16 WINAPI FreeResource16( HGLOBAL16 handle )
GlobalFree16() */
if ( retv )
{
if ( Callout.DestroyIcon32 )
retv = Callout.DestroyIcon32( handle, CID_RESOURCE );
pDestroyIcon32Proc proc;
HMODULE user = GetModuleHandleA( "user32.dll" );
if (user && (proc = (pDestroyIcon32Proc)GetProcAddress( user, "DestroyIcon32" )))
retv = proc( handle, CID_RESOURCE );
else
retv = GlobalFree16( handle );
}
......
......@@ -1293,7 +1293,7 @@ HCURSOR16 WINAPI CopyCursor16( HINSTANCE16 hInstance, HCURSOR16 hCursor )
* the Win95 one exactly, especially the return values, which
* depend on the setting of various flags.
*/
WORD WINAPI CURSORICON_Destroy( HGLOBAL16 handle, UINT16 flags )
WORD WINAPI DestroyIcon32( HGLOBAL16 handle, UINT16 flags )
{
WORD retv;
......@@ -1330,7 +1330,7 @@ WORD WINAPI CURSORICON_Destroy( HGLOBAL16 handle, UINT16 flags )
*/
BOOL16 WINAPI DestroyIcon16( HICON16 hIcon )
{
return CURSORICON_Destroy( hIcon, 0 );
return DestroyIcon32( hIcon, 0 );
}
/***********************************************************************
......@@ -1338,7 +1338,7 @@ BOOL16 WINAPI DestroyIcon16( HICON16 hIcon )
*/
BOOL WINAPI DestroyIcon( HICON hIcon )
{
return CURSORICON_Destroy( hIcon, CID_WIN32 );
return DestroyIcon32( hIcon, CID_WIN32 );
}
/***********************************************************************
......@@ -1346,7 +1346,7 @@ BOOL WINAPI DestroyIcon( HICON hIcon )
*/
BOOL16 WINAPI DestroyCursor16( HCURSOR16 hCursor )
{
return CURSORICON_Destroy( hCursor, 0 );
return DestroyIcon32( hCursor, 0 );
}
/***********************************************************************
......@@ -1354,7 +1354,7 @@ BOOL16 WINAPI DestroyCursor16( HCURSOR16 hCursor )
*/
BOOL WINAPI DestroyCursor( HCURSOR hCursor )
{
return CURSORICON_Destroy( hCursor, CID_WIN32 );
return DestroyIcon32( hCursor, CID_WIN32 );
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment