slint/internal/backends/linuxkms/lib.rs
Simon Hausmann 3b51c8e30a
LinuxKMS: Add support for synthetic display rotations (#4166)
This patch adds support for the `SLINT_KMS_ROTATION` environment
variable, that instructs the Skia/FemtoVG renderers to rotate
the scene before rendering.
2023-12-18 17:49:05 +01:00

69 lines
1.9 KiB
Rust

// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.1 OR LicenseRef-Slint-commercial
#![doc = include_str!("README.md")]
#![doc(html_logo_url = "https://slint.dev/logo/slint-logo-square-light.svg")]
#[cfg(target_os = "linux")]
mod fullscreenwindowadapter;
#[cfg(target_os = "linux")]
use std::os::fd::AsFd;
#[cfg(target_os = "linux")]
type DeviceOpener<'a> = dyn Fn(&std::path::Path) -> Result<std::sync::Arc<dyn AsFd>, i_slint_core::platform::PlatformError>
+ 'a;
#[cfg(target_os = "linux")]
mod display;
#[cfg(target_os = "linux")]
mod renderer {
#[cfg(any(feature = "renderer-skia-opengl", feature = "renderer-skia-vulkan"))]
pub mod skia;
#[cfg(feature = "renderer-femtovg")]
pub mod femtovg;
pub fn try_skia_then_femtovg(
_device_opener: &crate::DeviceOpener,
) -> Result<
Box<dyn crate::fullscreenwindowadapter::FullscreenRenderer>,
i_slint_core::platform::PlatformError,
> {
#[allow(unused_mut, unused_assignments)]
let mut result = Err(format!("No renderer configured").into());
#[cfg(any(feature = "renderer-skia-opengl", feature = "renderer-skia-vulkan"))]
{
result = skia::SkiaRendererAdapter::new_try_vulkan_then_opengl(_device_opener);
}
#[cfg(feature = "renderer-femtovg")]
if result.is_err() {
result = femtovg::FemtoVGRendererAdapter::new(_device_opener);
}
result
}
}
#[cfg(target_os = "linux")]
mod calloop_backend;
#[cfg(target_os = "linux")]
pub use calloop_backend::*;
#[cfg(not(target_os = "linux"))]
mod noop_backend;
#[cfg(not(target_os = "linux"))]
pub use noop_backend::*;
#[doc(hidden)]
pub type NativeWidgets = ();
#[doc(hidden)]
pub type NativeGlobals = ();
#[doc(hidden)]
pub const HAS_NATIVE_STYLE: bool = false;
#[doc(hidden)]
pub mod native_widgets {}