Author: greatlrd Date: Thu Jul 26 22:31:27 2007 New Revision: 27874
URL: http://svn.reactos.org/svn/reactos?rev=27874&view=rev Log: 1. merge down 27767 (prevent metadc/metafile crashing a bit in win32k) 2. merge down parts of 27758 (fixing code layout)
Modified: branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c
Modified: branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_3/reactos/subsyst... ============================================================================== --- branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c (original) +++ branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c Thu Jul 26 22:31:27 2007 @@ -81,8 +81,9 @@ {GDI_OBJECT_TYPE_DIRECTDRAW, sizeof(DD_DIRECTDRAW), DD_Cleanup}, {GDI_OBJECT_TYPE_DD_SURFACE, sizeof(DD_SURFACE), DDSURF_Cleanup}, {GDI_OBJECT_TYPE_EXTPEN, sizeof(GDIBRUSHOBJ), EXTPEN_Cleanup}, - {GDI_OBJECT_TYPE_METADC, 0, GDI_CleanupDummy}, - {GDI_OBJECT_TYPE_METAFILE, 0, GDI_CleanupDummy}, + /* FIXME do not use normal DC struct for this */ + {GDI_OBJECT_TYPE_METADC, sizeof(DC), GDI_CleanupDummy}, + {GDI_OBJECT_TYPE_METAFILE, sizeof(DC), GDI_CleanupDummy}, {GDI_OBJECT_TYPE_ENHMETAFILE, 0, GDI_CleanupDummy}, {GDI_OBJECT_TYPE_ENHMETADC, 0, GDI_CleanupDummy}, {GDI_OBJECT_TYPE_MEMDC, 0, GDI_CleanupDummy},
Modified: branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_3/reactos/subsyst... ============================================================================== --- branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c (original) +++ branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c Thu Jul 26 22:31:27 2007 @@ -293,27 +293,28 @@ LPCWSTR Description) { PDC Dc; - HDC ret = NULL; + HDC ret = NULL; DWORD length = 0; HDC tempHDC; DWORD MemSize; + DWORD dwDesiredAccess;
tempHDC = hDCRef; if (hDCRef == NULL) { - /* FIXME ?? - * Shall we create hdc NtGdiHdcCompatible hdc ?? - */ - UNICODE_STRING DriverName; - RtlInitUnicodeString(&DriverName, L"DISPLAY"); - //IntGdiCreateDC(&DriverName, NULL, NULL, NULL, FALSE); + /* FIXME ?? + * Shall we create hdc NtGdiHdcCompatible hdc ?? + */ + UNICODE_STRING DriverName; + RtlInitUnicodeString(&DriverName, L"DISPLAY"); + //IntGdiCreateDC(&DriverName, NULL, NULL, NULL, FALSE); tempHDC = NtGdiOpenDCW( &DriverName, NULL, NULL, 0, // DCW 0 and ICW 1. NULL, (PVOID) NULL, - (PVOID) NULL ); + (PVOID) NULL ); }
GDIOBJ_SetOwnership(GdiHandleTable, tempHDC, PsGetCurrentProcess()); @@ -407,45 +408,44 @@ DPRINT1("Trying Create EnhMetaFile\n");
/* disk based metafile */ - DWORD dwDesiredAccess = GENERIC_WRITE | GENERIC_READ | SYNCHRONIZE | FILE_READ_ATTRIBUTES; + dwDesiredAccess = GENERIC_WRITE | GENERIC_READ | SYNCHRONIZE | FILE_READ_ATTRIBUTES; OBJECT_ATTRIBUTES ObjectAttributes; IO_STATUS_BLOCK IoStatusBlock; - IO_STATUS_BLOCK Iosb; + IO_STATUS_BLOCK Iosb; UNICODE_STRING NtPathU; - NTSTATUS Status; + NTSTATUS Status; ULONG FileAttributes = (FILE_ATTRIBUTE_VALID_FLAGS & ~FILE_ATTRIBUTE_DIRECTORY); - - if (!RtlDosPathNameToNtPathName_U (File, &NtPathU, NULL, NULL)) - { + + if (!RtlDosPathNameToNtPathName_U (File, &NtPathU, NULL, NULL)) + { DC_UnlockDc(Dc); if (hDCRef == NULL) { - NtGdiDeleteObjectApp(tempHDC); - } + NtGdiDeleteObjectApp(tempHDC); + } DPRINT1("Can not Create EnhMetaFile\n"); SetLastWin32Error(ERROR_PATH_NOT_FOUND); return NULL; } - - - InitializeObjectAttributes(&ObjectAttributes, &NtPathU, 0, NULL, NULL); + + InitializeObjectAttributes(&ObjectAttributes, &NtPathU, 0, NULL, NULL);
Status = NtCreateFile (&Dc->hFile, dwDesiredAccess, &ObjectAttributes, &IoStatusBlock, - NULL, FileAttributes, 0, FILE_OVERWRITE_IF, FILE_NON_DIRECTORY_FILE, - NULL, 0); + NULL, FileAttributes, 0, FILE_OVERWRITE_IF, FILE_NON_DIRECTORY_FILE, + NULL, 0);
RtlFreeHeap(RtlGetProcessHeap(), 0, NtPathU.Buffer);
if (!NT_SUCCESS(Status)) - { - Dc->hFile = NULL; - DC_UnlockDc(Dc); + { + Dc->hFile = NULL; + DC_UnlockDc(Dc); if (hDCRef == NULL) { - NtGdiDeleteObjectApp(tempHDC); + NtGdiDeleteObjectApp(tempHDC); } - DPRINT1("Create EnhMetaFile fail\n"); - SetLastWin32Error(ERROR_INVALID_HANDLE); + DPRINT1("Create EnhMetaFile fail\n"); + SetLastWin32Error(ERROR_INVALID_HANDLE); return NULL; }
@@ -462,20 +462,20 @@ }
if (NT_SUCCESS(Status)) - { - ret = tempHDC; - DC_UnlockDc(Dc); + { + ret = tempHDC; + DC_UnlockDc(Dc); } else { Dc->hFile = NULL; - DPRINT1("Write to EnhMetaFile fail\n"); - SetLastWin32Error(ERROR_CAN_NOT_COMPLETE); - ret = NULL; - DC_UnlockDc(Dc); + DPRINT1("Write to EnhMetaFile fail\n"); + SetLastWin32Error(ERROR_CAN_NOT_COMPLETE); + ret = NULL; + DC_UnlockDc(Dc); if (hDCRef == NULL) { - NtGdiDeleteObjectApp(tempHDC); + NtGdiDeleteObjectApp(tempHDC); } } } @@ -483,8 +483,8 @@ { DC_UnlockDc(Dc); } - - return ret; + + return ret; }