
# Objective - Update winit to 0.28 ## Solution - Small API change - A security advisory has been added for a unmaintained crate used by a dependency of winit build script for wayland I didn't do anything for Android support in this PR though it should be fixable, it should be done in a separate one, maybe https://github.com/bevyengine/bevy/pull/6830 --- ## Changelog - `window.always_on_top` has been removed, you can now use `window.window_level` ## Migration Guide before: ```rust app.new() .add_plugins(DefaultPlugins.set(WindowPlugin { primary_window: Some(Window { always_on_top: true, ..default() }), ..default() })); ``` after: ```rust app.new() .add_plugins(DefaultPlugins.set(WindowPlugin { primary_window: Some(Window { window_level: bevy:🪟:WindowLevel::AlwaysOnTop, ..default() }), ..default() })); ```
30 lines
753 B
Rust
30 lines
753 B
Rust
use proc_macro::TokenStream;
|
|
use quote::quote;
|
|
use syn::{parse_macro_input, ItemFn};
|
|
|
|
pub fn bevy_main(_attr: TokenStream, item: TokenStream) -> TokenStream {
|
|
let input = parse_macro_input!(item as ItemFn);
|
|
assert!(
|
|
input.sig.ident == "main",
|
|
"`bevy_main` can only be used on a function called 'main'.",
|
|
);
|
|
|
|
TokenStream::from(quote! {
|
|
#[no_mangle]
|
|
#[cfg(target_os = "android")]
|
|
fn android_main(android_app: bevy::winit::AndroidApp) {
|
|
let _ = bevy::winit::ANDROID_APP.set(android_app);
|
|
main();
|
|
}
|
|
|
|
#[no_mangle]
|
|
#[cfg(target_os = "ios")]
|
|
extern "C" fn main_rs() {
|
|
main();
|
|
}
|
|
|
|
#[allow(unused)]
|
|
#input
|
|
})
|
|
}
|