diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 98b6bf103ad..e7da659fcc7 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -1509,8 +1509,8 @@ BOOL WINAPI GetDeviceGammaRamp(HDC hDC, LPVOID ptr) if( dc ) { - if (dc->funcs->pGetDeviceGammaRamp) - ret = dc->funcs->pGetDeviceGammaRamp(dc->physDev, ptr); + PHYSDEV physdev = GET_DC_PHYSDEV( dc, pGetDeviceGammaRamp ); + ret = physdev->funcs->pGetDeviceGammaRamp( physdev, ptr ); release_dc_ptr( dc ); } return ret; @@ -1526,8 +1526,8 @@ BOOL WINAPI SetDeviceGammaRamp(HDC hDC, LPVOID ptr) if( dc ) { - if (dc->funcs->pSetDeviceGammaRamp) - ret = dc->funcs->pSetDeviceGammaRamp(dc->physDev, ptr); + PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetDeviceGammaRamp ); + ret = physdev->funcs->pSetDeviceGammaRamp( physdev, ptr ); release_dc_ptr( dc ); } return ret; diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c index 61cbfe53d5c..969d6607122 100644 --- a/dlls/gdi32/driver.c +++ b/dlls/gdi32/driver.c @@ -366,6 +366,11 @@ static INT CDECL nulldrv_EndPage( PHYSDEV dev ) return 0; } +static INT CDECL nulldrv_EnumICMProfiles( PHYSDEV dev, ICMENUMPROCW func, LPARAM lparam ) +{ + return -1; +} + static INT CDECL nulldrv_ExtDeviceMode( LPSTR buffer, HWND hwnd, DEVMODEA *output, LPSTR device, LPSTR port, DEVMODEA *input, LPSTR profile, DWORD mode ) { @@ -388,6 +393,16 @@ static BOOL CDECL nulldrv_GdiComment( PHYSDEV dev, UINT size, const BYTE *data ) return FALSE; } +static BOOL CDECL nulldrv_GetDeviceGammaRamp( PHYSDEV dev, void *ramp ) +{ + return FALSE; +} + +static BOOL CDECL nulldrv_GetICMProfile( PHYSDEV dev, LPDWORD size, LPWSTR filename ) +{ + return FALSE; +} + static COLORREF CDECL nulldrv_GetPixel( PHYSDEV dev, INT x, INT y ) { return 0; @@ -511,6 +526,11 @@ static DWORD CDECL nulldrv_SetLayout( PHYSDEV dev, DWORD layout ) return layout; } +static BOOL CDECL nulldrv_SetDeviceGammaRamp( PHYSDEV dev, void *ramp ) +{ + return FALSE; +} + static DWORD CDECL nulldrv_SetMapperFlags( PHYSDEV dev, DWORD flags ) { return flags; @@ -667,7 +687,7 @@ const DC_FUNCTIONS null_driver = nulldrv_EndDoc, /* pEndDoc */ nulldrv_EndPage, /* pEndPage */ NULL, /* pEndPath */ - NULL, /* pEnumICMProfiles */ + nulldrv_EnumICMProfiles, /* pEnumICMProfiles */ NULL, /* pEnumDeviceFonts */ nulldrv_ExcludeClipRect, /* pExcludeClipRect */ nulldrv_ExtDeviceMode, /* pExtDeviceMode */ @@ -684,8 +704,8 @@ const DC_FUNCTIONS null_driver = NULL, /* pGetCharWidth */ NULL, /* pGetDIBits */ NULL, /* pGetDeviceCaps */ - NULL, /* pGetDeviceGammaRamp */ - NULL, /* pGetICMProfile */ + nulldrv_GetDeviceGammaRamp, /* pGetDeviceGammaRamp */ + nulldrv_GetICMProfile, /* pGetICMProfile */ NULL, /* pGetNearestColor */ nulldrv_GetPixel, /* pGetPixel */ nulldrv_GetPixelFormat, /* pGetPixelFormat */ @@ -736,7 +756,7 @@ const DC_FUNCTIONS null_driver = NULL, /* pSetDIBits */ NULL, /* pSetDIBitsToDevice */ nulldrv_SetDeviceClipping, /* pSetDeviceClipping */ - NULL, /* pSetDeviceGammaRamp */ + nulldrv_SetDeviceGammaRamp, /* pSetDeviceGammaRamp */ nulldrv_SetLayout, /* pSetLayout */ nulldrv_SetMapMode, /* pSetMapMode */ nulldrv_SetMapperFlags, /* pSetMapperFlags */ diff --git a/dlls/gdi32/icm.c b/dlls/gdi32/icm.c index afbc0eee27c..d3a345d3bc2 100644 --- a/dlls/gdi32/icm.c +++ b/dlls/gdi32/icm.c @@ -40,30 +40,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(icm); struct enum_profiles { - BOOL unicode; - union - { - ICMENUMPROCA funcA; - ICMENUMPROCW funcW; - } callback; + ICMENUMPROCA funcA; LPARAM data; }; -INT CALLBACK enum_profiles_callback( LPWSTR filename, LPARAM lparam ) +static INT CALLBACK enum_profiles_callbackA( LPWSTR filename, LPARAM lparam ) { int len, ret = -1; struct enum_profiles *ep = (struct enum_profiles *)lparam; char *filenameA; - if (ep->unicode) - return ep->callback.funcW( filename, ep->data ); - len = WideCharToMultiByte( CP_ACP, 0, filename, -1, NULL, 0, NULL, NULL ); filenameA = HeapAlloc( GetProcessHeap(), 0, len ); if (filenameA) { WideCharToMultiByte( CP_ACP, 0, filename, -1, filenameA, len, NULL, NULL ); - ret = ep->callback.funcA( filenameA, ep->data ); + ret = ep->funcA( filenameA, ep->data ); HeapFree( GetProcessHeap(), 0, filenameA ); } return ret; @@ -74,26 +66,12 @@ INT CALLBACK enum_profiles_callback( LPWSTR filename, LPARAM lparam ) */ INT WINAPI EnumICMProfilesA(HDC hdc, ICMENUMPROCA func, LPARAM lparam) { - DC *dc; - INT ret = -1; - - TRACE("%p, %p, 0x%08lx\n", hdc, func, lparam); + struct enum_profiles ep; if (!func) return -1; - if ((dc = get_dc_ptr(hdc))) - { - if (dc->funcs->pEnumICMProfiles) - { - struct enum_profiles ep; - - ep.unicode = FALSE; - ep.callback.funcA = func; - ep.data = lparam; - ret = dc->funcs->pEnumICMProfiles(dc->physDev, enum_profiles_callback, (LPARAM)&ep); - } - release_dc_ptr(dc); - } - return ret; + ep.funcA = func; + ep.data = lparam; + return EnumICMProfilesW( hdc, enum_profiles_callbackA, (LPARAM)&ep ); } /*********************************************************************** @@ -109,15 +87,8 @@ INT WINAPI EnumICMProfilesW(HDC hdc, ICMENUMPROCW func, LPARAM lparam) if (!func) return -1; if ((dc = get_dc_ptr(hdc))) { - if (dc->funcs->pEnumICMProfiles) - { - struct enum_profiles ep; - - ep.unicode = TRUE; - ep.callback.funcW = func; - ep.data = lparam; - ret = dc->funcs->pEnumICMProfiles(dc->physDev, enum_profiles_callback, (LPARAM)&ep); - } + PHYSDEV physdev = GET_DC_PHYSDEV( dc, pEnumICMProfiles ); + ret = physdev->funcs->pEnumICMProfiles( physdev, func, lparam ); release_dc_ptr(dc); } return ret; @@ -173,8 +144,8 @@ BOOL WINAPI GetICMProfileW(HDC hdc, LPDWORD size, LPWSTR filename) if (dc) { - if (dc->funcs->pGetICMProfile) - ret = dc->funcs->pGetICMProfile(dc->physDev, size, filename); + PHYSDEV physdev = GET_DC_PHYSDEV( dc, pGetICMProfile ); + ret = physdev->funcs->pGetICMProfile( physdev, size, filename ); release_dc_ptr(dc); } return ret;