[YAROTOWS] Reintegrate the branch. For a brighter future.
[reactos.git] / reactos / dll / win32 / gdi32 / objects / dc.c
index f6b0f90..eb9dcf2 100644 (file)
@@ -15,7 +15,7 @@ IntCreateDICW ( LPCWSTR   lpwszDriver,
 {
  UNICODE_STRING Device, Output;
  HDC hDC = NULL;
- BOOL Display = FALSE, Default = TRUE;
+ BOOL Display = FALSE, Default = FALSE;
  ULONG UMdhpdev = 0;
 
  HANDLE hspool = NULL;
@@ -31,7 +31,7 @@ IntCreateDICW ( LPCWSTR   lpwszDriver,
 
  if ((!lpwszDevice) && (!lpwszDriver))
  {
-     Default = FALSE;  // Ask Win32k to set Default device.
+     Default = TRUE;  // Ask Win32k to set Default device.
      Display = TRUE;   // Most likely to be DISPLAY.
  }
  else
@@ -60,7 +60,7 @@ IntCreateDICW ( LPCWSTR   lpwszDriver,
     DPRINT1("Not a DISPLAY device! %wZ\n", &Device);
  }
 
- hDC = NtGdiOpenDCW( (Default ? &Device : NULL),
+ hDC = NtGdiOpenDCW( (Default ? NULL : &Device),
                      (PDEVMODEW) lpInitData,
                      (lpwszOutput ? &Output : NULL),
                       iType,             // DCW 0 and ICW 1.
@@ -318,7 +318,7 @@ WINAPI
 DeleteObject(HGDIOBJ hObject)
 {
   UINT Type = 0;
-    
+
   /* From Wine: DeleteObject does not SetLastError() on a null object */
   if(!hObject) return FALSE;
 
@@ -332,7 +332,7 @@ DeleteObject(HGDIOBJ hObject)
 
   Type = GDI_HANDLE_GET_TYPE(hObject);
 
-  if ((Type == GDI_OBJECT_TYPE_METAFILE) || 
+  if ((Type == GDI_OBJECT_TYPE_METAFILE) ||
       (Type == GDI_OBJECT_TYPE_ENHMETAFILE))
      return FALSE;
 
@@ -348,7 +348,7 @@ DeleteObject(HGDIOBJ hObject)
      case GDI_OBJECT_TYPE_METADC:
        return MFDRV_DeleteObject( hObject );
      case GDI_OBJECT_TYPE_EMF:
-     {          
+     {
        PLDC pLDC = GdiGetLDC(hObject);
        if ( !pLDC ) return FALSE;
        return EMFDRV_DeleteObject( hObject );
@@ -533,7 +533,7 @@ GetDeviceCaps(HDC hDC,
         return NtGdiGetDeviceCaps(hDC,i);
   }
   DPRINT("Device CAPS2\n");
-  
+
   switch (i)
   {
     case DRIVERVERSION:
@@ -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))
     {
@@ -1582,35 +1581,29 @@ 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);
 
 #if 0
         case GDI_OBJECT_TYPE_METADC:
-            return MFDRV_SelectObject( hDC, hGdiObj); 
+            return MFDRV_SelectObject( hDC, hGdiObj);
         case GDI_OBJECT_TYPE_EMF:
             PLDC pLDC = GdiGetLDC(hDC);
             if ( !pLDC ) return NULL;