Get rid of W->A calls: EnumDisplaySettingsA/W
Stefan Leichter
Stefan.Leichter at camLine.com
Sat Nov 16 11:37:31 CST 2002
Hello,
looks like the "Janitorial Projects" for the "Fun Wine Projects" is something
i can partly do. I have started at the end ;-).
Changelog
------------
moved implementation of EnumDisplaySettings from ascii to unicode
--- windows/user.c.sav Wed Oct 30 22:56:24 2002
+++ windows/user.c Sat Nov 16 18:44:26 2002
@@ -35,6 +35,7 @@
#include "sysmetrics.h"
#include "local.h"
#include "module.h"
+#include "winternl.h"
#include "wine/debug.h"
WINE_DECLARE_DEBUG_CHANNEL(hook);
@@ -337,17 +338,17 @@
}
/***********************************************************************
- * EnumDisplaySettingsA (USER32.@)
+ * EnumDisplaySettingsW (USER32.@)
* FIXME: Currently uses static list of modes.
*
* RETURNS
- * TRUE if nth setting exists found (described in the LPDEVMODEA struct)
+ * TRUE if nth setting exists found (described in the LPDEVMODEW struct)
* FALSE if we do not have the nth setting
*/
-BOOL WINAPI EnumDisplaySettingsA(
- LPCSTR name, /* [in] huh? */
+BOOL WINAPI EnumDisplaySettingsW(
+ LPCWSTR name, /* [in] huh? */
DWORD n, /* [in] nth entry in display settings list*/
- LPDEVMODEA devmode /* [out] devmode for that setting */
+ LPDEVMODEW devmode /* [out] devmode for that setting */
) {
#define NRMODES 5
#define NRDEPTHS 4
@@ -356,7 +357,7 @@
} modes[NRMODES]={{512,384},{640,400},{640,480},{800,600},{1024,768}};
int depths[4] = {8,16,24,32};
- TRACE_(system)("(%s,%ld,%p)\n",name,n,devmode);
+ TRACE_(system)("(%s,%ld,%p)\n",debugstr_w(name),n,devmode);
devmode->dmDisplayFlags = 0;
devmode->dmDisplayFrequency = 85;
if (n==0 || n == (DWORD)-1 || n == (DWORD)-2) {
@@ -375,27 +376,28 @@
}
/***********************************************************************
- * EnumDisplaySettingsW (USER32.@)
+ * EnumDisplaySettingsA (USER32.@)
*/
-BOOL WINAPI EnumDisplaySettingsW(LPCWSTR name,DWORD n,LPDEVMODEW devmode)
+BOOL WINAPI EnumDisplaySettingsA(LPCSTR name,DWORD n,LPDEVMODEA devmode)
{
- DEVMODEA devmodeA;
+ DEVMODEW devmodeW;
BOOL ret;
- DWORD len = WideCharToMultiByte( CP_ACP, 0, name, -1, NULL, 0, NULL, NULL );
- LPSTR nameA = HeapAlloc( GetProcessHeap(), 0, len );
+ UNICODE_STRING nameW;
+
+ if (name) RtlCreateUnicodeStringFromAsciiz(&nameW, name);
+ else nameW.Buffer = NULL;
- WideCharToMultiByte( CP_ACP, 0, name, -1, nameA, len, NULL, NULL );
- ret = EnumDisplaySettingsA(nameA,n,&devmodeA);
+ ret = EnumDisplaySettingsW(nameW.Buffer,n,&devmodeW);
if (ret)
{
- devmode->dmBitsPerPel = devmodeA.dmBitsPerPel;
- devmode->dmPelsHeight = devmodeA.dmPelsHeight;
- devmode->dmPelsWidth = devmodeA.dmPelsWidth;
- devmode->dmDisplayFlags = devmodeA.dmDisplayFlags;
- devmode->dmDisplayFrequency = devmodeA.dmDisplayFrequency;
+ devmode->dmBitsPerPel = devmodeW.dmBitsPerPel;
+ devmode->dmPelsHeight = devmodeW.dmPelsHeight;
+ devmode->dmPelsWidth = devmodeW.dmPelsWidth;
+ devmode->dmDisplayFlags = devmodeW.dmDisplayFlags;
+ devmode->dmDisplayFrequency = devmodeW.dmDisplayFrequency;
/* FIXME: convert rest too, if they are ever returned */
}
- HeapFree(GetProcessHeap(),0,nameA);
+ RtlFreeUnicodeString(&nameW);
return ret;
}
More information about the wine-patches
mailing list