mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-24 06:11:30 +11:00
Merge pull request #485 from fkaa/cocoa-crash-and-burn
Make legacy functions crash on osx core contexts
This commit is contained in:
commit
eb73c2514e
|
@ -32,6 +32,7 @@ version = "0"
|
||||||
|
|
||||||
[target.x86_64-apple-darwin.dependencies]
|
[target.x86_64-apple-darwin.dependencies]
|
||||||
objc = "0.1"
|
objc = "0.1"
|
||||||
|
cgl = "0"
|
||||||
cocoa = "0"
|
cocoa = "0"
|
||||||
core-foundation = "0"
|
core-foundation = "0"
|
||||||
core-graphics = "0"
|
core-graphics = "0"
|
||||||
|
|
|
@ -17,7 +17,7 @@ fn main() { println!("This example requires glutin to be compiled with the `wind
|
||||||
#[cfg(feature = "window")]
|
#[cfg(feature = "window")]
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
||||||
let window = glutin::Window::new().unwrap();
|
let window = glutin::WindowBuilder::new().with_gl_profile(glutin::GlProfile::Compatibility).build().unwrap();
|
||||||
window.set_title("A fantastic window!");
|
window.set_title("A fantastic window!");
|
||||||
unsafe { window.make_current() };
|
unsafe { window.make_current() };
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ fn main() {
|
||||||
};
|
};
|
||||||
|
|
||||||
let window = glutin::WindowBuilder::new()
|
let window = glutin::WindowBuilder::new()
|
||||||
|
.with_gl_profile(glutin::GlProfile::Compatibility)
|
||||||
.with_title("Hello world!".to_string())
|
.with_title("Hello world!".to_string())
|
||||||
.with_fullscreen(monitor)
|
.with_fullscreen(monitor)
|
||||||
.build()
|
.build()
|
||||||
|
|
|
@ -16,7 +16,7 @@ fn main() { println!("This example requires glutin to be compiled with the `wind
|
||||||
|
|
||||||
#[cfg(feature = "window")]
|
#[cfg(feature = "window")]
|
||||||
fn main() {
|
fn main() {
|
||||||
let window = glutin::Window::new().unwrap();
|
let window = glutin::WindowBuilder::new().with_gl_profile(glutin::GlProfile::Compatibility).build().unwrap();
|
||||||
window.set_title("glutin - Cursor grabbing test");
|
window.set_title("glutin - Cursor grabbing test");
|
||||||
unsafe { window.make_current() };
|
unsafe { window.make_current() };
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,9 @@ fn main() { println!("This example requires glutin to be compiled with the `wind
|
||||||
|
|
||||||
#[cfg(feature = "window")]
|
#[cfg(feature = "window")]
|
||||||
fn main() {
|
fn main() {
|
||||||
let window1 = glutin::Window::new().unwrap();
|
let window1 = glutin::WindowBuilder::new().with_gl_profile(glutin::GlProfile::Compatibility).build().unwrap();
|
||||||
let window2 = glutin::Window::new().unwrap();
|
let window2 = glutin::WindowBuilder::new().with_gl_profile(glutin::GlProfile::Compatibility).build().unwrap();
|
||||||
let window3 = glutin::Window::new().unwrap();
|
let window3 = glutin::WindowBuilder::new().with_gl_profile(glutin::GlProfile::Compatibility).build().unwrap();
|
||||||
|
|
||||||
let t1 = thread::spawn(move || {
|
let t1 = thread::spawn(move || {
|
||||||
run(window1, (0.0, 1.0, 0.0, 1.0));
|
run(window1, (0.0, 1.0, 0.0, 1.0));
|
||||||
|
|
|
@ -19,7 +19,9 @@ fn resize_callback(width: u32, height: u32) {
|
||||||
|
|
||||||
#[cfg(feature = "window")]
|
#[cfg(feature = "window")]
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut window = glutin::WindowBuilder::new().with_decorations(false).with_transparency(true)
|
let mut window = glutin::WindowBuilder::new().with_gl_profile(glutin::GlProfile::Compatibility)
|
||||||
|
.with_decorations(false)
|
||||||
|
.with_transparency(true)
|
||||||
.build().unwrap();
|
.build().unwrap();
|
||||||
window.set_title("A fantastic window!");
|
window.set_title("A fantastic window!");
|
||||||
window.set_window_resize_callback(Some(resize_callback as fn(u32, u32)));
|
window.set_window_resize_callback(Some(resize_callback as fn(u32, u32)));
|
||||||
|
|
|
@ -23,7 +23,9 @@ fn main() {
|
||||||
println!("Vsync example. This example may panic if your driver or your system forces \
|
println!("Vsync example. This example may panic if your driver or your system forces \
|
||||||
you out of vsync. This is intended when `build_strict` is used.");
|
you out of vsync. This is intended when `build_strict` is used.");
|
||||||
|
|
||||||
let mut window = glutin::WindowBuilder::new().with_vsync().build_strict().unwrap();
|
let mut window = glutin::WindowBuilder::new().with_gl_profile(glutin::GlProfile::Compatibility)
|
||||||
|
.with_vsync()
|
||||||
|
.build_strict().unwrap();
|
||||||
window.set_window_resize_callback(Some(resize_callback as fn(u32, u32)));
|
window.set_window_resize_callback(Some(resize_callback as fn(u32, u32)));
|
||||||
unsafe { window.make_current() };
|
unsafe { window.make_current() };
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ fn resize_callback(width: u32, height: u32) {
|
||||||
|
|
||||||
#[cfg(feature = "window")]
|
#[cfg(feature = "window")]
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut window = glutin::Window::new().unwrap();
|
let mut window = glutin::WindowBuilder::new().with_gl_profile(glutin::GlProfile::Compatibility).build().unwrap();
|
||||||
window.set_title("A fantastic window!");
|
window.set_title("A fantastic window!");
|
||||||
window.set_window_resize_callback(Some(resize_callback as fn(u32, u32)));
|
window.set_window_resize_callback(Some(resize_callback as fn(u32, u32)));
|
||||||
unsafe { window.make_current() };
|
unsafe { window.make_current() };
|
||||||
|
|
|
@ -17,6 +17,10 @@ use native_monitor::NativeMonitorId;
|
||||||
use objc::runtime::{Class, Object, Sel, BOOL, YES, NO};
|
use objc::runtime::{Class, Object, Sel, BOOL, YES, NO};
|
||||||
use objc::declare::ClassDecl;
|
use objc::declare::ClassDecl;
|
||||||
|
|
||||||
|
use cgl;
|
||||||
|
use cgl::{CGLEnable, kCGLCECrashOnRemovedFunctions, CGLSetParameter, kCGLCPSurfaceOpacity};
|
||||||
|
use cgl::CGLContextObj as CGL_CGLContextObj;
|
||||||
|
|
||||||
use cocoa::base::{id, nil};
|
use cocoa::base::{id, nil};
|
||||||
use cocoa::foundation::{NSAutoreleasePool, NSDate, NSDefaultRunLoopMode, NSPoint, NSRect, NSSize,
|
use cocoa::foundation::{NSAutoreleasePool, NSDate, NSDefaultRunLoopMode, NSPoint, NSRect, NSSize,
|
||||||
NSString, NSUInteger};
|
NSString, NSUInteger};
|
||||||
|
@ -572,6 +576,8 @@ impl Window {
|
||||||
let value = if builder.vsync { 1 } else { 0 };
|
let value = if builder.vsync { 1 } else { 0 };
|
||||||
cxt.setValues_forParameter_(&value, NSOpenGLContextParameter::NSOpenGLCPSwapInterval);
|
cxt.setValues_forParameter_(&value, NSOpenGLContextParameter::NSOpenGLCPSwapInterval);
|
||||||
|
|
||||||
|
CGLEnable(cxt.CGLContextObj(), kCGLCECrashOnRemovedFunctions);
|
||||||
|
|
||||||
Ok((cxt, pf))
|
Ok((cxt, pf))
|
||||||
} else {
|
} else {
|
||||||
Err(CreationError::NotSupported)
|
Err(CreationError::NotSupported)
|
||||||
|
|
|
@ -46,6 +46,8 @@ extern crate dwmapi;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate objc;
|
extern crate objc;
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
|
extern crate cgl;
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
extern crate cocoa;
|
extern crate cocoa;
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
extern crate core_foundation;
|
extern crate core_foundation;
|
||||||
|
|
Loading…
Reference in a new issue