Expose display device name as UTF-8.
This makes interaction with libOVR simpler, as it provides the display
device name in the same encoding.
diff --git a/include/GLFW/glfw3native.h b/include/GLFW/glfw3native.h
index 13c9f81..1e176a1 100644
--- a/include/GLFW/glfw3native.h
+++ b/include/GLFW/glfw3native.h
@@ -112,7 +112,7 @@
* @return The the display device name of the specified monitor.
* @ingroup native
*/
-GLFWAPI const WCHAR* glfwGetWin32Monitor(GLFWmonitor* monitor);
+GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
/*! @brief Returns the `HWND` of the specified window.
* @return The `HWND` of the specified window.
diff --git a/src/win32_monitor.c b/src/win32_monitor.c
index bc528b1..ee44d5d 100644
--- a/src/win32_monitor.c
+++ b/src/win32_monitor.c
@@ -160,6 +160,12 @@
wcscpy(monitors[found]->win32.adapterName, adapter.DeviceName);
wcscpy(monitors[found]->win32.displayName, display.DeviceName);
+ WideCharToMultiByte(CP_UTF8, 0,
+ display.DeviceName, -1,
+ monitors[found]->win32.nativeName,
+ sizeof(monitors[found]->win32.nativeName),
+ NULL, NULL);
+
if (adapter.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE &&
displayIndex == 0)
{
@@ -320,10 +326,10 @@
////// GLFW native API //////
//////////////////////////////////////////////////////////////////////////
-GLFWAPI const WCHAR* glfwGetWin32Monitor(GLFWmonitor* handle)
+GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* handle)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
- return monitor->win32.displayName;
+ return monitor->win32.nativeName;
}
diff --git a/src/win32_platform.h b/src/win32_platform.h
index 09dab72..465e487 100644
--- a/src/win32_platform.h
+++ b/src/win32_platform.h
@@ -205,6 +205,7 @@
// This size matches the static size of DISPLAY_DEVICE.DeviceName
WCHAR adapterName[32];
WCHAR displayName[32];
+ char nativeName[64];
GLboolean modeChanged;
} _GLFWmonitorWin32;