C++: add asserts that we are in the main thread
Some checks are pending
autofix.ci / format_fix (push) Waiting to run
autofix.ci / lint_typecheck (push) Waiting to run
CI / mcu (pico-st7789, thumbv6m-none-eabi) (push) Blocked by required conditions
CI / python_test (windows-2022) (push) Blocked by required conditions
CI / files-changed (push) Waiting to run
CI / build_and_test (--exclude bevy-example, ubuntu-22.04, 1.82) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, --exclude bevy-example, windows-2022, 1.82) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, macos-14, stable) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, beta) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, stable) (push) Blocked by required conditions
CI / build_and_test (ubuntu-22.04, nightly) (push) Blocked by required conditions
CI / node_test (macos-14) (push) Blocked by required conditions
CI / node_test (ubuntu-22.04) (push) Blocked by required conditions
CI / node_test (windows-2022) (push) Blocked by required conditions
CI / python_test (macos-14) (push) Blocked by required conditions
CI / python_test (ubuntu-22.04) (push) Blocked by required conditions
CI / cpp_test_driver (macos-13) (push) Blocked by required conditions
CI / cpp_test_driver (ubuntu-22.04) (push) Blocked by required conditions
CI / cpp_test_driver (windows-2022) (push) Blocked by required conditions
CI / cpp_cmake (macos-14, 1.82) (push) Blocked by required conditions
CI / cpp_cmake (windows-2022, nightly) (push) Blocked by required conditions
CI / cpp_cmake (ubuntu-22.04, stable) (push) Blocked by required conditions
CI / cpp_package_test (push) Blocked by required conditions
CI / vsce_build_test (push) Blocked by required conditions
CI / mcu (pico2-st7789, thumbv8m.main-none-eabihf) (push) Blocked by required conditions
CI / mcu (stm32h735g, thumbv7em-none-eabihf) (push) Blocked by required conditions
CI / mcu-embassy (push) Blocked by required conditions
CI / ffi_32bit_build (push) Blocked by required conditions
CI / docs (push) Blocked by required conditions
CI / wasm (push) Blocked by required conditions
CI / wasm_demo (push) Blocked by required conditions
CI / tree-sitter (push) Blocked by required conditions
CI / updater_test (0.3.0) (push) Blocked by required conditions
CI / fmt_test (push) Blocked by required conditions
CI / esp-idf-quick (push) Blocked by required conditions
CI / android (push) Blocked by required conditions
CI / miri (push) Blocked by required conditions
CI / test-figma-inspector (push) Blocked by required conditions

- In the timer functions
 - in the generated getter/setters and callback invocation
This commit is contained in:
Olivier Goffart 2025-05-28 10:20:56 +02:00
parent ab7f884106
commit dc915b1af3
3 changed files with 58 additions and 32 deletions

View file

@ -2740,6 +2740,7 @@ fn generate_public_api_for_properties(
let param_types =
callback.args.iter().map(|t| t.cpp_type().unwrap()).collect::<Vec<_>>();
let callback_emitter = vec![
"slint::private_api::assert_main_thread();".into(),
"[[maybe_unused]] auto self = this;".into(),
format!(
"return {}.call({});",
@ -2774,6 +2775,7 @@ fn generate_public_api_for_properties(
)),
signature: "(Functor && callback_handler) const".into(),
statements: Some(vec![
"slint::private_api::assert_main_thread();".into(),
"[[maybe_unused]] auto self = this;".into(),
format!("{}.set_handler(std::forward<Functor>(callback_handler));", access),
]),
@ -2811,6 +2813,7 @@ fn generate_public_api_for_properties(
} else {
let cpp_property_type = p.ty.cpp_type().expect("Invalid type in public properties");
let prop_getter: Vec<String> = vec![
"slint::private_api::assert_main_thread();".into(),
"[[maybe_unused]] auto self = this;".into(),
format!("return {}.get();", access),
];
@ -2826,6 +2829,7 @@ fn generate_public_api_for_properties(
if !p.read_only {
let prop_setter: Vec<String> = vec![
"slint::private_api::assert_main_thread();".into(),
"[[maybe_unused]] auto self = this;".into(),
property_set_value_code(&p.prop, "value", ctx) + ";",
];