From 61781cf20928f4a9cb51d93c7c705f9ada75ca6d Mon Sep 17 00:00:00 2001 From: Tomaka17 Date: Thu, 7 Aug 2014 18:48:27 +0200 Subject: Call glViewport on windows init for win32 See #14 --- src/win32/ffi.rs | 3 +++ src/win32/init.rs | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/win32/ffi.rs b/src/win32/ffi.rs index 40dec56..3afa18a 100644 --- a/src/win32/ffi.rs +++ b/src/win32/ffi.rs @@ -717,6 +717,9 @@ extern "system" { // http://msdn.microsoft.com/en-us/library/windows/desktop/ms633519(v=vs.85).aspx pub fn GetWindowRect(hWnd: HWND, lpRect: *mut RECT) -> BOOL; + // + pub fn glViewport(x: libc::c_int, y: libc::c_int, w: libc::c_int, h: libc::c_int); + // http://msdn.microsoft.com/en-us/library/windows/desktop/ms684175(v=vs.85).aspx pub fn LoadLibraryW(lpFileName: LPCWSTR) -> HMODULE; diff --git a/src/win32/init.rs b/src/win32/init.rs index d2aec5e..7e7f399 100644 --- a/src/win32/init.rs +++ b/src/win32/init.rs @@ -323,14 +323,25 @@ pub fn new_window(builder: WindowBuilder) -> Result { }; // building the struct - tx.send(Ok(Window{ + let window = Window{ window: real_window, hdc: hdc, context: context, gl_library: gl_library, events_receiver: events_receiver, is_closed: AtomicBool::new(false), - })); + }; + + // calling glViewport + unsafe { + use libc; + let dimensions = window.get_inner_size().unwrap(); + ffi::glViewport(0, 0, dimensions.val0() as libc::c_int, + dimensions.val1() as libc::c_int); + } + + // sending + tx.send(Ok(window)); // now that the `Window` struct is initialized, the main `Window::new()` function will // return and this events loop will run in parallel -- cgit v1.2.3