[GDI32]
[reactos.git] / reactos / dll / win32 / gdi32 / objects / dc.c
index bc713ff..ddc33e5 100644 (file)
@@ -322,7 +322,7 @@ DeleteObject(HGDIOBJ hObject)
   /* From Wine: DeleteObject does not SetLastError() on a null object */
   if(!hObject) return FALSE;
 
-  if (0 != (HandleToUlong(hObject) & GDI_HANDLE_STOCK_MASK))
+  if (0 != ((DWORD) hObject & GDI_HANDLE_STOCK_MASK))
   { // Relax! This is a normal return!
      DPRINT("Trying to delete system object 0x%x\n", hObject);
      return TRUE;
@@ -673,7 +673,7 @@ GetRelAbs(
 /*
  * @implemented
  */
-DWORD
+INT
 WINAPI
 SetRelAbs(
        HDC hdc,
@@ -1540,7 +1540,6 @@ SelectObject(HDC hDC,
     PDC_ATTR pDc_Attr;
     HGDIOBJ hOldObj = NULL;
     UINT uType;
-//    PTEB pTeb;
 
     if(!GdiGetHandleUserData(hDC, GDI_OBJECT_TYPE_DC, (PVOID)&pDc_Attr))
     {
@@ -1559,7 +1558,7 @@ SelectObject(HDC hDC,
     switch (uType)
     {
         case GDI_OBJECT_TYPE_REGION:
-            return ULongToHandle(ExtSelectClipRgn(hDC, hGdiObj, RGN_COPY));
+            return (HGDIOBJ)ExtSelectClipRgn(hDC, hGdiObj, RGN_COPY);
 
         case GDI_OBJECT_TYPE_BITMAP:
             return NtGdiSelectBitmap(hDC, hGdiObj);
@@ -1582,29 +1581,23 @@ SelectObject(HDC hDC,
         case GDI_OBJECT_TYPE_FONT:
             hOldObj = pDc_Attr->hlfntNew;
             if (hOldObj == hGdiObj) return hOldObj;
-#if 0
+
             pDc_Attr->ulDirty_ &= ~SLOW_WIDTHS;
             pDc_Attr->ulDirty_ |= DIRTY_CHARSET;
             pDc_Attr->hlfntNew = hGdiObj;
-            pTeb = NtCurrentTeb();
-            if (((pTeb->GdiTebBatch.HDC == 0) ||
-                 (pTeb->GdiTebBatch.HDC == hDC)) &&
-                ((pTeb->GdiTebBatch.Offset + sizeof(GDIBSOBJECT)) <= GDIBATCHBUFSIZE) &&
-               (!(pDc_Attr->ulDirty_ & DC_DIBSECTION)))
+
+            if (!(pDc_Attr->ulDirty_ & DC_DIBSECTION))
             {
-              PGDIBSOBJECT pgO = (PGDIBSOBJECT)(&pTeb->GdiTebBatch.Buffer[0] +
-                                                pTeb->GdiTebBatch.Offset);
-              pgO->gbHdr.Cmd = GdiBCSelObj;
-              pgO->gbHdr.Size = sizeof(GDIBSOBJECT);
-              pgO->hgdiobj = hGdiObj;
-
-              pTeb->GdiTebBatch.Offset += sizeof(GDIBSOBJECT);
-              pTeb->GdiTebBatch.HDC = hDC;
-              pTeb->GdiBatchCount++;
-              if (pTeb->GdiBatchCount >= GDI_BatchLimit) NtGdiFlush();
-              return hOldObj;
+                PGDIBSOBJECT pgO;
+
+                pgO = GdiAllocBatchCommand(hDC, GdiBCSelObj);
+                if (pgO)
+                {
+                    pgO->hgdiobj = hGdiObj;
+                    return hOldObj;
+                }
             }
-#endif
+
             // default for select object font
             return NtGdiSelectFont(hDC, hGdiObj);