Skip to content

Commit ec96cca

Browse files
committed
Use OpenGL renderer on MacOS older than 13.0
1 parent f7f0444 commit ec96cca

3 files changed

Lines changed: 16 additions & 3 deletions

File tree

plugin-canvas-slint/src/window_adapter.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ use cursor_icon::CursorIcon;
1010
use i_slint_core::{window::{WindowAdapter, WindowAdapterInternal}, renderer::Renderer, platform::{PlatformError, WindowEvent}};
1111
use i_slint_renderer_skia::{SkiaRenderer, SkiaSharedContext};
1212
use keyboard_types::Code;
13+
#[cfg(target_os="macos")]
14+
use plugin_canvas::is_macos_version_at_least;
1315
use plugin_canvas::keyboard::KeyboardModifiers;
1416
use plugin_canvas::{event::EventResponse, LogicalSize};
1517
use portable_atomic::AtomicF64;
@@ -60,10 +62,18 @@ impl PluginCanvasWindowAdapter {
6062

6163
let skia_context = SkiaSharedContext::default();
6264

65+
#[cfg(target_os="linux")]
66+
let renderer = SkiaRenderer::default(&skia_context);
67+
68+
#[cfg(target_os="macos")]
69+
let renderer = if is_macos_version_at_least(13, 0, 0) {
70+
SkiaRenderer::default_metal(&skia_context)
71+
} else {
72+
SkiaRenderer::default_opengl(&skia_context)
73+
};
74+
6375
#[cfg(target_os="windows")]
6476
let renderer = SkiaRenderer::default_direct3d(&skia_context);
65-
#[cfg(not(target_os="windows"))]
66-
let renderer = SkiaRenderer::default(&skia_context);
6777

6878
renderer.set_window_handle(plugin_canvas_window.clone(), plugin_canvas_window.clone(), slint_size, None)?;
6979

plugin-canvas/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@ pub use dimensions::{LogicalPosition, LogicalSize, PhysicalPosition, PhysicalSiz
1010
pub use event::{Event, MouseButton};
1111
pub use window::Window;
1212

13+
#[cfg(target_os="macos")]
14+
pub use platform::mac::is_macos_version_at_least;
15+
1316
mod platform;

plugin-canvas/src/platform/mac.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ pub mod keyboard;
22
pub mod view;
33
pub mod window;
44

5-
fn is_macos_version_at_least(major: isize, minor: isize, patch: isize) -> bool {
5+
pub fn is_macos_version_at_least(major: isize, minor: isize, patch: isize) -> bool {
66
let process_info = objc2_foundation::NSProcessInfo::processInfo();
77
let version = objc2_foundation::NSOperatingSystemVersion {
88
majorVersion: major,

0 commit comments

Comments
 (0)