Jacek Caban : gdi32: Remove no longer used disk-based metafile special-cases.

Alexandre Julliard julliard at winehq.org
Tue Jun 29 15:58:27 CDT 2021


Module: wine
Branch: master
Commit: 80aed7cae6fe88c10af73c5550f0157093ff8bc0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=80aed7cae6fe88c10af73c5550f0157093ff8bc0

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Jun 29 13:41:58 2021 +0200

gdi32: Remove no longer used disk-based metafile special-cases.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/gdi_private.h |  1 -
 dlls/gdi32/metafile.c    | 79 ++----------------------------------------------
 dlls/gdi32/mfdrv/init.c  | 10 ++----
 3 files changed, 5 insertions(+), 85 deletions(-)

diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index 71493c185b6..62fd9045b98 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -464,7 +464,6 @@ extern void lp_to_dp( DC *dc, POINT *points, INT count ) DECLSPEC_HIDDEN;
 
 /* metafile.c */
 extern HMETAFILE MF_Create_HMETAFILE(METAHEADER *mh) DECLSPEC_HIDDEN;
-extern METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mr, LPCVOID filename, BOOL unicode ) DECLSPEC_HIDDEN;
 
 /* Format of comment record added by GetWinMetaFileBits */
 #include <pshpack2.h>
diff --git a/dlls/gdi32/metafile.c b/dlls/gdi32/metafile.c
index 1c831ef83ef..12fd10c98c9 100644
--- a/dlls/gdi32/metafile.c
+++ b/dlls/gdi32/metafile.c
@@ -60,15 +60,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(metafile);
 
-#include "pshpack1.h"
-typedef struct
-{
-    DWORD dw1, dw2, dw3;
-    WORD w4;
-    CHAR filename[0x100];
-} METAHEADERDISK;
-#include "poppack.h"
-
 
 /******************************************************************
  *         MF_AddHandle
@@ -231,56 +222,6 @@ HMETAFILE WINAPI GetMetaFileW( LPCWSTR lpFilename )
 }
 
 
-/******************************************************************
- *         MF_LoadDiskBasedMetaFile
- *
- * Creates a new memory-based metafile from a disk-based one.
- */
-static METAHEADER *MF_LoadDiskBasedMetaFile(METAHEADER *mh)
-{
-    METAHEADERDISK *mhd;
-    HANDLE hfile;
-    METAHEADER *mh2;
-
-    if(mh->mtType != METAFILE_DISK) {
-        ERR("Not a disk based metafile\n");
-	return NULL;
-    }
-    mhd = (METAHEADERDISK *)((char *)mh + sizeof(METAHEADER));
-
-    if((hfile = CreateFileA(mhd->filename, GENERIC_READ, FILE_SHARE_READ, NULL,
-			    OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE) {
-        WARN("Can't open file of disk based metafile\n");
-        return NULL;
-    }
-    mh2 = MF_ReadMetaFile(hfile);
-    CloseHandle(hfile);
-    return mh2;
-}
-
-/******************************************************************
- *         MF_CreateMetaHeaderDisk
- *
- * Take a memory based METAHEADER and change it to a disk based METAHEADER
- * associated with filename.  Note: Trashes contents of old one.
- */
-METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mh, LPCVOID filename, BOOL uni )
-{
-    METAHEADERDISK *mhd;
-
-    mh = HeapReAlloc( GetProcessHeap(), 0, mh,
-		      sizeof(METAHEADER) + sizeof(METAHEADERDISK));
-    mh->mtType = METAFILE_DISK;
-    mhd = (METAHEADERDISK *)((char *)mh + sizeof(METAHEADER));
-
-    if( uni )
-        WideCharToMultiByte(CP_ACP, 0, filename, -1, 
-                   mhd->filename, sizeof mhd->filename, NULL, NULL);
-    else
-        lstrcpynA( mhd->filename, filename, sizeof mhd->filename );
-    return mh;
-}
-
 /* return a copy of the metafile bits, to be freed with HeapFree */
 static METAHEADER *get_metafile_bits( HMETAFILE hmf )
 {
@@ -288,13 +229,8 @@ static METAHEADER *get_metafile_bits( HMETAFILE hmf )
 
     if (!mh) return NULL;
 
-    if (mh->mtType != METAFILE_DISK)
-    {
-        ret = HeapAlloc( GetProcessHeap(), 0, mh->mtSize * 2 );
-        if (ret) memcpy( ret, mh, mh->mtSize * 2 );
-    }
-    else ret = MF_LoadDiskBasedMetaFile( mh );
-
+    ret = HeapAlloc( GetProcessHeap(), 0, mh->mtSize * 2 );
+    if (ret) memcpy( ret, mh, mh->mtSize * 2 );
     GDI_ReleaseObj( hmf );
     return ret;
 }
@@ -1092,16 +1028,7 @@ UINT WINAPI GetMetaFileBitsEx( HMETAFILE hmf, UINT nSize, LPVOID buf )
 
     TRACE("(%p,%d,%p)\n", hmf, nSize, buf);
     if (!mh) return 0;  /* FIXME: error code */
-    if(mh->mtType == METAFILE_DISK)
-    {
-        mh = MF_LoadDiskBasedMetaFile( mh );
-        if (!mh)
-        {
-            GDI_ReleaseObj( hmf );
-            return 0;
-        }
-        mf_copy = TRUE;
-    }
+
     mfSize = mh->mtSize * 2;
     if (buf)
     {
diff --git a/dlls/gdi32/mfdrv/init.c b/dlls/gdi32/mfdrv/init.c
index d64e754da84..b093e1abd63 100644
--- a/dlls/gdi32/mfdrv/init.c
+++ b/dlls/gdi32/mfdrv/init.c
@@ -330,22 +330,17 @@ HDC WINAPI CreateMetaFileW( LPCWSTR filename )
 
     if (!(dc = MFDRV_AllocMetaFile())) return 0;
     physDev = (METAFILEDRV_PDEVICE *)dc->physDev;
+    physDev->mh->mtType = METAFILE_MEMORY;
 
     if (filename)  /* disk based metafile */
     {
-        physDev->mh->mtType = METAFILE_DISK;
         if ((hFile = CreateFileW(filename, GENERIC_WRITE, 0, NULL,
 				CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
             free_dc_ptr( dc );
             return 0;
         }
 	physDev->hFile = hFile;
-
-	/* Grow METAHEADER to include filename */
-	physDev->mh = MF_CreateMetaHeaderDisk(physDev->mh, filename, TRUE);
     }
-    else  /* memory based metafile */
-	physDev->mh->mtType = METAFILE_MEMORY;
 
     TRACE("returning %p\n", physDev->dev.hdc);
     ret = physDev->dev.hdc;
@@ -413,9 +408,8 @@ static DC *MFDRV_CloseMetaFile( HDC hdc )
 	return 0;
     }
 
-    if (physDev->mh->mtType == METAFILE_DISK)  /* disk based metafile */
+    if (physDev->hFile)  /* disk based metafile */
     {
-	physDev->mh->mtType = METAFILE_MEMORY; /* This is what windows does */
         if (!WriteFile(physDev->hFile, physDev->mh, physDev->mh->mtSize * 2,
                        &bytes_written, NULL)) {
             free_dc_ptr( dc );




More information about the wine-cvs mailing list