Win32 Unicode fixes.

This commit is contained in:
Camilla Berglund 2012-07-06 13:55:54 +02:00
parent 78bc624ba9
commit db066b4f46
3 changed files with 15 additions and 7 deletions

View File

@ -199,7 +199,15 @@ int _glfwPlatformGetVideoModes(_GLFWmonitor* monitor, GLFWvidmode* list, int ma
for (;;)
{
if (!EnumDisplaySettings(monitor->Win32.name, deviceModeNum, &deviceMode))
BOOL result;
WCHAR* wideName = _glfwCreateWideStringFromUTF8(monitor->Win32.name);
if (!wideName)
break;
result = EnumDisplaySettings(wideName, deviceModeNum, &deviceMode);
free(wideName);
if (!result)
break;
if (vidModesCount >= maxcount)

View File

@ -58,21 +58,20 @@ _GLFWmonitor** _glfwCreateMonitor(_GLFWmonitor** current,
*current = malloc(sizeof(_GLFWmonitor));
memset(*current, 0, sizeof(_GLFWmonitor));
dc = CreateDC("DISPLAY", monitor->DeviceString, NULL, NULL);
dc = CreateDC(L"DISPLAY", monitor->DeviceString, NULL, NULL);
(*current)->physicalWidth = GetDeviceCaps(dc, HORZSIZE);
(*current)->physicalHeight = GetDeviceCaps(dc, VERTSIZE);
DeleteDC(dc);
(*current)->name = malloc(strlen(monitor->DeviceName) + 1);
memcpy((*current)->name, monitor->DeviceName, strlen(monitor->DeviceName) + 1);
(*current)->name[strlen(monitor->DeviceName)] = '\0';
(*current)->name = _glfwCreateUTF8FromWideString(monitor->DeviceName);
(*current)->screenX = setting->dmPosition.x;
(*current)->screenY = setting->dmPosition.y;
memcpy((*current)->Win32.name, adapter->DeviceName, 32);
(*current)->Win32.name = _glfwCreateUTF8FromWideString(adapter->DeviceName);
return &((*current)->next);
}
@ -82,6 +81,7 @@ _GLFWmonitor* _glfwDestroyMonitor(_GLFWmonitor* monitor)
result = monitor->next;
free(monitor->Win32.name);
free(monitor->name);
free(monitor);

View File

@ -219,7 +219,7 @@ typedef struct _GLFWlibraryWin32
//------------------------------------------------------------------------
typedef struct _GLFWmonitorWin32
{
char name[32];
char* name;
} _GLFWmonitorWin32;