Get rid of USER_HEAP_* macros

Dimitrie O. Paun dpaun at rogers.com
Tue May 10 16:01:13 CDT 2005


No need for yet another API for local functions.

ChangeLog
    Dimi Paun <dimi at lattica.com>
    Get rid of USER_HEAP_* macros.


Index: dlls/user/menu.c
===================================================================
RCS file: /var/cvs/wine/dlls/user/menu.c,v
retrieving revision 1.27
diff -u -p -r1.27 menu.c
--- dlls/user/menu.c	10 May 2005 13:17:33 -0000	1.27
+++ dlls/user/menu.c	10 May 2005 19:44:16 -0000
@@ -54,6 +55,7 @@
 #include "controls.h"
 #include "user_private.h"
 #include "wine/debug.h"
+#include "local.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(menu);
 WINE_DECLARE_DEBUG_CHANNEL(accel);
@@ -306,7 +308,7 @@ static void do_debug_print_menuitem(cons
  */
 static POPUPMENU *MENU_GetMenu(HMENU hMenu)
 {
-    POPUPMENU *menu = USER_HEAP_LIN_ADDR(hMenu);
+    POPUPMENU *menu = hMenu ? MapSL(MAKESEGPTR(USER_HeapSel, LOWORD(hMenu))) : 0;
     if (!menu || menu->wMagic != MENU_MAGIC)
     {
         WARN("invalid menu handle=%p, ptr=%p, magic=%x\n", hMenu, menu, menu? menu->wMagic:0);
@@ -3616,8 +3618,10 @@ HMENU WINAPI CreateMenu(void)
 {
     HMENU hMenu;
     LPPOPUPMENU menu;
-    if (!(hMenu = USER_HEAP_ALLOC( sizeof(POPUPMENU) ))) return 0;
-    menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
+
+    hMenu = (HMENU)(LONG_PTR)LOCAL_Alloc(USER_HeapSel, LMEM_FIXED, sizeof(POPUPMENU));
+    if (!hMenu) return 0;
+    menu = MapSL(MAKESEGPTR(USER_HeapSel, LOWORD(hMenu)));
 
     ZeroMemory(menu, sizeof(POPUPMENU));
     menu->wMagic = MENU_MAGIC;
@@ -3665,7 +3669,7 @@ BOOL WINAPI DestroyMenu( HMENU hMenu )
             }
             HeapFree( GetProcessHeap(), 0, lppop->items );
         }
-        USER_HEAP_FREE( hMenu );
+	LOCAL_Free( USER_HeapSel, LOWORD(hMenu) );
     }
     return (hMenu != MENU_DefSysPopup);
 }
Index: dlls/user/user_private.h
===================================================================
RCS file: /var/cvs/wine/dlls/user/user_private.h,v
retrieving revision 1.11
diff -u -p -r1.11 user_private.h
--- dlls/user/user_private.h	27 Apr 2005 10:23:24 -0000	1.11
+++ dlls/user/user_private.h	10 May 2005 19:38:42 -0000
@@ -28,18 +28,9 @@
 #include "winuser.h"
 #include "winreg.h"
 #include "winternl.h"
-#include "local.h"
+#include "wine/winbase16.h"
 
-extern WORD USER_HeapSel;
-
-#define USER_HEAP_ALLOC(size) \
-            ((HANDLE)(ULONG_PTR)LOCAL_Alloc( USER_HeapSel, LMEM_FIXED, (size) ))
-#define USER_HEAP_REALLOC(handle,size) \
-            ((HANDLE)(ULONG_PTR)LOCAL_ReAlloc( USER_HeapSel, LOWORD(handle), (size), LMEM_FIXED ))
-#define USER_HEAP_FREE(handle) \
-            LOCAL_Free( USER_HeapSel, LOWORD(handle) )
-#define USER_HEAP_LIN_ADDR(handle)  \
-         ((handle) ? MapSL(MAKESEGPTR(USER_HeapSel, LOWORD(handle))) : NULL)
+extern HANDLE16 USER_HeapSel;
 
 #define GET_WORD(ptr)  (*(const WORD *)(ptr))
 #define GET_DWORD(ptr) (*(const DWORD *)(ptr))
Index: dlls/user/winpos.c
===================================================================
RCS file: /var/cvs/wine/dlls/user/winpos.c,v
retrieving revision 1.2
diff -u -p -r1.2 winpos.c
--- dlls/user/winpos.c	27 Apr 2005 10:23:24 -0000	1.2
+++ dlls/user/winpos.c	10 May 2005 19:43:54 -0000
@@ -30,12 +30,16 @@
 #include "wingdi.h"
 #include "winerror.h"
 #include "ntstatus.h"
+#include "wine/winbase16.h"
 #include "wine/winuser16.h"
 #include "wine/server.h"
 #include "controls.h"
 #include "user_private.h"
 #include "win.h"
 #include "winpos.h"
+#include "local.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(win);
@@ -1235,9 +1239,10 @@ HDWP WINAPI BeginDeferWindowPos( INT cou
     /* Windows allows zero count, in which case it allocates context for 8 moves */
     if (count == 0) count = 8;
 
-    handle = USER_HEAP_ALLOC( sizeof(DWP) + (count-1)*sizeof(WINDOWPOS) );
+    handle = (HDWP)(LONG_PTR)LOCAL_Alloc(USER_HeapSel, LMEM_FIXED, 
+                                         sizeof(DWP) + (count-1)*sizeof(WINDOWPOS));
     if (!handle) return 0;
-    pDWP = (DWP *) USER_HEAP_LIN_ADDR( handle );
+    pDWP = MapSL(MAKESEGPTR(USER_HeapSel, LOWORD(handle)));
     pDWP->actualCount    = 0;
     pDWP->suggestedCount = count;
     pDWP->valid          = TRUE;
@@ -1253,8 +1258,7 @@ HDWP WINAPI BeginDeferWindowPos( INT cou
  *		DeferWindowPos (USER32.@)
  */
 HDWP WINAPI DeferWindowPos( HDWP hdwp, HWND hwnd, HWND hwndAfter,
-                                INT x, INT y, INT cx, INT cy,
-                                UINT flags )
+                            INT x, INT y, INT cx, INT cy, UINT flags )
 {
     DWP *pDWP;
     int i;
@@ -1266,7 +1270,9 @@ HDWP WINAPI DeferWindowPos( HDWP hdwp, H
     hwnd = WIN_GetFullHandle( hwnd );
     if (hwnd == GetDesktopWindow()) return 0;
 
-    if (!(pDWP = USER_HEAP_LIN_ADDR( hdwp ))) return 0;
+    if (!hdwp) return 0;
+    pDWP = MapSL(MAKESEGPTR(USER_HeapSel, LOWORD(hdwp)));
+    if (!pDWP) return 0;
 
     USER_Lock();
 
@@ -1301,14 +1307,14 @@ HDWP WINAPI DeferWindowPos( HDWP hdwp, H
     }
     if (pDWP->actualCount >= pDWP->suggestedCount)
     {
-        newhdwp = USER_HEAP_REALLOC( hdwp,
-                      sizeof(DWP) + pDWP->suggestedCount*sizeof(WINDOWPOS) );
+        INT size = sizeof(DWP) + pDWP->suggestedCount*sizeof(WINDOWPOS);
+        newhdwp = (HDWP)(LONG_PTR)LOCAL_ReAlloc(USER_HeapSel, LOWORD(hdwp), size, LMEM_FIXED);
         if (!newhdwp)
         {
             retvalue = 0;
             goto END;
         }
-        pDWP = (DWP *) USER_HEAP_LIN_ADDR( newhdwp );
+        pDWP = MapSL(MAKESEGPTR(USER_HeapSel, LOWORD(newhdwp)));
         pDWP->suggestedCount++;
     }
     pDWP->winPos[pDWP->actualCount].hwnd = hwnd;
@@ -1338,13 +1344,14 @@ BOOL WINAPI EndDeferWindowPos( HDWP hdwp
 
     TRACE("%p\n", hdwp);
 
-    pDWP = (DWP *) USER_HEAP_LIN_ADDR( hdwp );
+    if (!hdwp) return FALSE;
+    pDWP = MapSL(MAKESEGPTR(USER_HeapSel, LOWORD(hdwp)));
     if (!pDWP) return FALSE;
     for (i = 0, winpos = pDWP->winPos; i < pDWP->actualCount; i++, winpos++)
     {
         if (!USER_Driver.pSetWindowPos || !(res = USER_Driver.pSetWindowPos( winpos ))) break;
     }
-    USER_HEAP_FREE( hdwp );
+    LOCAL_Free( USER_HeapSel, LOWORD(hdwp) );
     return res;
 }
 

-- 
Dimi.



More information about the wine-patches mailing list