diff options
Diffstat (limited to 'src/win32/init.rs')
-rw-r--r-- | src/win32/init.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/win32/init.rs b/src/win32/init.rs index 0a77cb7..5cf4021 100644 --- a/src/win32/init.rs +++ b/src/win32/init.rs @@ -20,7 +20,8 @@ use CursorState; use GlRequest; use PixelFormat; -use std::ffi::{CStr, CString}; +use std::ffi::{CStr, CString, OsStr}; +use std::os::windows::ffi::OsStrExt; use std::sync::mpsc::channel; use libc; @@ -38,8 +39,9 @@ pub fn new_window(builder: BuilderAttribs<'static>, builder_sharelists: Option<C -> Result<Window, CreationError> { // initializing variables to be sent to the task - let title = builder.title.utf16_units() - .chain(Some(0).into_iter()).collect::<Vec<u16>>(); // title to utf16 + + let title = OsStr::from_str(&builder.title).encode_wide().chain(Some(0).into_iter()) + .collect::<Vec<_>>(); let (tx, rx) = channel(); @@ -265,8 +267,8 @@ unsafe fn init(title: Vec<u16>, builder: BuilderAttribs<'static>, } unsafe fn register_window_class() -> Vec<u16> { - let class_name: Vec<u16> = "Window Class".utf16_units().chain(Some(0).into_iter()) - .collect::<Vec<u16>>(); + let class_name = OsStr::from_str("Window Class").encode_wide().chain(Some(0).into_iter()) + .collect::<Vec<_>>(); let class = winapi::WNDCLASSEXW { cbSize: mem::size_of::<winapi::WNDCLASSEXW>() as winapi::UINT, @@ -515,10 +517,10 @@ unsafe fn set_pixel_format(hdc: &WindowWrapper, id: libc::c_int) -> Result<(), C } unsafe fn load_opengl32_dll() -> Result<winapi::HMODULE, CreationError> { - let name = "opengl32.dll".utf16_units().chain(Some(0).into_iter()) - .collect::<Vec<u16>>().as_ptr(); + let name = OsStr::from_str("opengl32.dll").encode_wide().chain(Some(0).into_iter()) + .collect::<Vec<_>>(); - let lib = kernel32::LoadLibraryW(name); + let lib = kernel32::LoadLibraryW(name.as_ptr()); if lib.is_null() { return Err(OsError(format!("LoadLibrary function failed: {}", |