mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-10-18 07:51:33 +11:00
219 lines
8.1 KiB
Diff
219 lines
8.1 KiB
Diff
From 86af6b6387918ea93fe5ce4cae2764a1d196061e Mon Sep 17 00:00:00 2001
|
|
From: Patrick Horlebein <patrick@ilovepatrick.de>
|
|
Date: Mon, 29 Dec 2014 13:26:44 +0100
|
|
Subject: [PATCH 1/5] Started adding support for selection OpenGL versions on
|
|
OS X. Needs issue #176 to be fixed.
|
|
|
|
---
|
|
src/osx/mod.rs | 27 +++++++++++++++++++++++----
|
|
1 file changed, 23 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/src/osx/mod.rs b/src/osx/mod.rs
|
|
index 7df6603..59b6577 100644
|
|
--- a/src/osx/mod.rs
|
|
+++ b/src/osx/mod.rs
|
|
@@ -44,6 +44,15 @@ static mut alt_pressed: bool = false;
|
|
static DELEGATE_NAME: &'static [u8] = b"glutin_window_delegate\0";
|
|
static DELEGATE_STATE_IVAR: &'static [u8] = b"glutin_state";
|
|
|
|
+// TODO: Should be added to cocoa bindings
|
|
+#[allow(non_camel_case_types)]
|
|
+#[deriving(Show)]
|
|
+enum NSOpenGLPFAOpenGLProfiles {
|
|
+ NSOpenGLProfileVersionLegacy = 0x1000,
|
|
+ NSOpenGLProfileVersion3_2Core = 0x3200,
|
|
+ NSOpenGLProfileVersion4_1Core = 0x4100
|
|
+}
|
|
+
|
|
struct DelegateState<'a> {
|
|
is_closed: bool,
|
|
context: id,
|
|
@@ -68,7 +77,7 @@ impl Window {
|
|
unimplemented!()
|
|
}
|
|
|
|
- Window::new_impl(builder.dimensions, builder.title.as_slice(), builder.monitor, builder.vsync, builder.visible)
|
|
+ Window::new_impl(builder.dimensions, builder.title.as_slice(), builder.monitor, builder.vsync, builder.visible, builder.gl_version)
|
|
}
|
|
}
|
|
|
|
@@ -130,7 +139,7 @@ extern fn window_did_resize(this: id, _: id) -> id {
|
|
|
|
impl Window {
|
|
fn new_impl(dimensions: Option<(uint, uint)>, title: &str, monitor: Option<MonitorID>,
|
|
- vsync: bool, visible: bool) -> Result<Window, CreationError> {
|
|
+ vsync: bool, visible: bool, gl_version: Option<(uint, uint)>) -> Result<Window, CreationError> {
|
|
let app = match Window::create_app() {
|
|
Some(app) => app,
|
|
None => { return Err(OsError(format!("Couldn't create NSApplication"))); },
|
|
@@ -144,7 +153,7 @@ impl Window {
|
|
None => { return Err(OsError(format!("Couldn't create NSView"))); },
|
|
};
|
|
|
|
- let context = match Window::create_context(view, vsync) {
|
|
+ let context = match Window::create_context(view, vsync, gl_version) {
|
|
Some(context) => context,
|
|
None => { return Err(OsError(format!("Couldn't create OpenGL context"))); },
|
|
};
|
|
@@ -260,7 +269,16 @@ impl Window {
|
|
}
|
|
}
|
|
|
|
- fn create_context(view: id, vsync: bool) -> Option<id> {
|
|
+ fn create_context(view: id, vsync: bool, gl_version: Option<(uint, uint)>) -> Option<id> {
|
|
+ let profile = {
|
|
+ match gl_version {
|
|
+ None => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersionLegacy as uint,
|
|
+ Some((0...2, _)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersionLegacy as uint,
|
|
+ Some((3, 0)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersionLegacy as uint,
|
|
+ Some((3, 1...2)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersion3_2Core as uint,
|
|
+ Some((_, _)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersion4_1Core as uint,
|
|
+ }
|
|
+ };
|
|
unsafe {
|
|
let attributes = [
|
|
NSOpenGLPFADoubleBuffer as uint,
|
|
@@ -269,6 +287,7 @@ impl Window {
|
|
NSOpenGLPFAAlphaSize as uint, 8,
|
|
NSOpenGLPFADepthSize as uint, 24,
|
|
NSOpenGLPFAStencilSize as uint, 8,
|
|
+ NSOpenGLPFAOpenGLProfile as uint, profile,
|
|
0
|
|
];
|
|
|
|
--
|
|
1.9.3 (Apple Git-50)
|
|
|
|
|
|
From 1b0064f9f780ab8a53e7b5a7a33f2fd8c53aab08 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Horlebein <patrick@ilovepatrick.de>
|
|
Date: Mon, 29 Dec 2014 13:27:24 +0100
|
|
Subject: [PATCH 2/5] Fixed deprecation warnings
|
|
|
|
---
|
|
src/osx/mod.rs | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/osx/mod.rs b/src/osx/mod.rs
|
|
index 59b6577..e2b9bc2 100644
|
|
--- a/src/osx/mod.rs
|
|
+++ b/src/osx/mod.rs
|
|
@@ -475,8 +475,8 @@ impl Window {
|
|
}
|
|
|
|
pub fn get_proc_address(&self, _addr: &str) -> *const () {
|
|
- let symbol_name: CFString = from_str(_addr).unwrap();
|
|
- let framework_name: CFString = from_str("com.apple.opengl").unwrap();
|
|
+ let symbol_name = _addr.parse::<CFString>().unwrap();
|
|
+ let framework_name = "com.apple.opengl".parse::<CFString>().unwrap();
|
|
let framework = unsafe {
|
|
CFBundleGetBundleWithIdentifier(framework_name.as_concrete_TypeRef())
|
|
};
|
|
--
|
|
1.9.3 (Apple Git-50)
|
|
|
|
|
|
From 09cf026a9de2e1aef43307d64d41a0251159c113 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Horlebein <patrick@ilovepatrick.de>
|
|
Date: Mon, 29 Dec 2014 13:46:44 +0100
|
|
Subject: [PATCH 3/5] Minor match clause cleanup
|
|
|
|
---
|
|
src/osx/mod.rs | 4 +---
|
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
|
|
|
diff --git a/src/osx/mod.rs b/src/osx/mod.rs
|
|
index e2b9bc2..ce02779 100644
|
|
--- a/src/osx/mod.rs
|
|
+++ b/src/osx/mod.rs
|
|
@@ -272,9 +272,7 @@ impl Window {
|
|
fn create_context(view: id, vsync: bool, gl_version: Option<(uint, uint)>) -> Option<id> {
|
|
let profile = {
|
|
match gl_version {
|
|
- None => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersionLegacy as uint,
|
|
- Some((0...2, _)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersionLegacy as uint,
|
|
- Some((3, 0)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersionLegacy as uint,
|
|
+ None | Some((0...2, _)) | Some((3, 0)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersionLegacy as uint,
|
|
Some((3, 1...2)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersion3_2Core as uint,
|
|
Some((_, _)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersion4_1Core as uint,
|
|
}
|
|
--
|
|
1.9.3 (Apple Git-50)
|
|
|
|
|
|
From b0dddb2d3f10c90128ab250838b314acca131061 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Horlebein <patrick@ilovepatrick.de>
|
|
Date: Tue, 30 Dec 2014 17:01:37 +0100
|
|
Subject: [PATCH 4/5] Fixed missing std::ascii::AsciiExt import
|
|
|
|
---
|
|
src/osx/mod.rs | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/src/osx/mod.rs b/src/osx/mod.rs
|
|
index ce02779..739aa77 100644
|
|
--- a/src/osx/mod.rs
|
|
+++ b/src/osx/mod.rs
|
|
@@ -4,6 +4,7 @@ pub use self::headless::HeadlessContext;
|
|
use {CreationError, Event};
|
|
use CreationError::OsError;
|
|
use libc;
|
|
+use std::ascii::AsciiExt;
|
|
|
|
#[cfg(feature = "window")]
|
|
use WindowBuilder;
|
|
--
|
|
1.9.3 (Apple Git-50)
|
|
|
|
|
|
From 0e64651db8f19378d7c183b21c0e7d692380e570 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Horlebein <patrick@ilovepatrick.de>
|
|
Date: Tue, 30 Dec 2014 17:02:49 +0100
|
|
Subject: [PATCH 5/5] Removed NSOpenGLPFAOpenGLProfiles enum in favor of the
|
|
one defined in the AppKit bindings
|
|
|
|
---
|
|
src/osx/mod.rs | 19 ++++---------------
|
|
1 file changed, 4 insertions(+), 15 deletions(-)
|
|
|
|
diff --git a/src/osx/mod.rs b/src/osx/mod.rs
|
|
index 739aa77..83c51a3 100644
|
|
--- a/src/osx/mod.rs
|
|
+++ b/src/osx/mod.rs
|
|
@@ -45,15 +45,6 @@ static mut alt_pressed: bool = false;
|
|
static DELEGATE_NAME: &'static [u8] = b"glutin_window_delegate\0";
|
|
static DELEGATE_STATE_IVAR: &'static [u8] = b"glutin_state";
|
|
|
|
-// TODO: Should be added to cocoa bindings
|
|
-#[allow(non_camel_case_types)]
|
|
-#[deriving(Show)]
|
|
-enum NSOpenGLPFAOpenGLProfiles {
|
|
- NSOpenGLProfileVersionLegacy = 0x1000,
|
|
- NSOpenGLProfileVersion3_2Core = 0x3200,
|
|
- NSOpenGLProfileVersion4_1Core = 0x4100
|
|
-}
|
|
-
|
|
struct DelegateState<'a> {
|
|
is_closed: bool,
|
|
context: id,
|
|
@@ -271,12 +262,10 @@ impl Window {
|
|
}
|
|
|
|
fn create_context(view: id, vsync: bool, gl_version: Option<(uint, uint)>) -> Option<id> {
|
|
- let profile = {
|
|
- match gl_version {
|
|
- None | Some((0...2, _)) | Some((3, 0)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersionLegacy as uint,
|
|
- Some((3, 1...2)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersion3_2Core as uint,
|
|
- Some((_, _)) => NSOpenGLPFAOpenGLProfiles::NSOpenGLProfileVersion4_1Core as uint,
|
|
- }
|
|
+ let profile = match gl_version {
|
|
+ None | Some((0...2, _)) | Some((3, 0)) => NSOpenGLProfileVersionLegacy as uint,
|
|
+ Some((3, 1...2)) => NSOpenGLProfileVersion3_2Core as uint,
|
|
+ Some((_, _)) => NSOpenGLProfileVersion4_1Core as uint,
|
|
};
|
|
unsafe {
|
|
let attributes = [
|
|
--
|
|
1.9.3 (Apple Git-50)
|
|
|