GDI/tests: link to {G|S}etRelAbs() during runtime
Saulius Krasuckas
saulius2 at ar.fi.lt
Fri Oct 21 05:06:48 CDT 2005
I am sure FreeLibrary() call wasn't necessary, but that might change in
future (if gdi.dll gets linked only during runtime). Because of this I
didn't want to FreeLibarary() right after last call to GetProcAddress(),
so added it at the end of the test. Feel free to correct the test. :-)
Log message:
Saulius Krasuckas <saulius.krasuckas at ieee.org>
Link to {G|S}etRelAbs() during runtime as Win9x miss them.
Index: dlls/gdi/tests/metafile.c
===================================================================
RCS file: /home/wine/wine/dlls/gdi/tests/metafile.c,v
retrieving revision 1.17
diff -p -u -r1.17 metafile.c
--- dlls/gdi/tests/metafile.c 19 Oct 2005 18:28:14 -0000 1.17
+++ dlls/gdi/tests/metafile.c 21 Oct 2005 09:16:34 -0000
@@ -35,6 +35,26 @@ static BOOL emr_processed = FALSE;
#define LINE_X 55.0f
#define LINE_Y 15.0f
+static HMODULE hGDI;
+static INT (WINAPI * pGetRelAbs)(HDC, DWORD);
+static INT (WINAPI * pSetRelAbs)(HDC, DWORD);
+
+#define GDI_GET_PROC(func) \
+ p ## func = (void *)GetProcAddress(hGDI, #func); \
+ if(!p ## func) \
+ trace("GetProcAddress(%s)\n", #func); \
+
+static void init_function_pointers(void)
+{
+ hGDI = LoadLibraryA("gdi.dll");
+ if(!hGDI) {
+ trace("Could not load gdi.dll\n");
+ return;
+ }
+ GDI_GET_PROC(GetRelAbs);
+ GDI_GET_PROC(SetRelAbs);
+}
+
static int CALLBACK emf_enum_proc(HDC hdc, HANDLETABLE *handle_table,
const ENHMETARECORD *emr, int n_objs, LPARAM param)
{
@@ -65,7 +85,8 @@ static int CALLBACK emf_enum_proc(HDC hd
/* GetBkMode, GetRelAbs do not get reset to the default value */
ok(GetBkMode(hdc) == OPAQUE, "bk mode %d\n", GetBkMode(hdc));
- ok(GetRelAbs(hdc, 0) == RELATIVE, "relabs %d\n", GetRelAbs(hdc, 0));
+ if(pSetRelAbs && pGetRelAbs)
+ ok(pGetRelAbs(hdc, 0) == RELATIVE, "relabs %d\n", pGetRelAbs(hdc, 0));
n_record = 0;
break;
@@ -209,7 +230,7 @@ static void test_ExtTextOut(void)
SetPolyFillMode(hdcDisplay, WINDING);
SetStretchBltMode(hdcDisplay, HALFTONE);
- SetRelAbs(hdcDisplay, RELATIVE);
+ if(pSetRelAbs) pSetRelAbs(hdcDisplay, RELATIVE);
SetBkMode(hdcDisplay, OPAQUE);
ret = EnumEnhMetaFile(hdcDisplay, hMetafile, emf_enum_proc, dx, &rc);
@@ -787,6 +808,8 @@ static void test_gdiis(void)
START_TEST(metafile)
{
+ init_function_pointers();
+
/* For enhanced metafiles (enhmfdrv) */
test_ExtTextOut();
@@ -801,4 +824,6 @@ START_TEST(metafile)
test_mf_conversions();
test_gdiis();
+
+ FreeLibrary(hGDI);
}
More information about the wine-patches
mailing list