Fix build of generated C++ code when using transitions on int properties with esp-idf #4822
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The energy monitor declares a transition on an animated int property, for which Property::set_animated_binding_for_transition is called, which in turn calls slint_property_set_animated_binding_helper. The latter is overloaded for various property types, such as float, Color, or Brush, and then calls specialized functions from ffi, such as
slint_property_set_animated_binding_(int|float|etc.).
slint_property_set_animated_binding_int uses i32 in Rust, which cbindgen maps to int32_t, so the
slint_property_set_animated_binding_helper overload also uses int32_t.
Unfortunately, with esp-idf, int32_t is a distinct type from int, and the overload resolution fails.
As remedy, this change uses c_int instead of i32 in the Rust ffi, which maps to int.
This seems easier than changing Property to Property<int32_t> :-)