Skip to content

Commit 0977874

Browse files
committed
Allow non Sync + Send signal arguments inside SignalFuture
1 parent 75a36ca commit 0977874

File tree

8 files changed

+499
-36
lines changed

8 files changed

+499
-36
lines changed

godot-core/src/builtin/variant/impls.rs

+47
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,53 @@ mod impls {
171171
impl_ffi_variant!(ref PackedColorArray, packed_color_array_to_variant, packed_color_array_from_variant);
172172
impl_ffi_variant!(ref Signal, signal_to_variant, signal_from_variant);
173173
impl_ffi_variant!(ref Callable, callable_to_variant, callable_from_variant);
174+
175+
#[cfg(since_api = "4.2")]
176+
crate::task::impl_maybe_send!(
177+
Send;
178+
bool, u8, u16, u32, u64, i8, i16, i32, i64, f32, f64
179+
);
180+
181+
#[cfg(since_api = "4.2")]
182+
crate::task::impl_maybe_send!(
183+
Send;
184+
builtin::{
185+
StringName, Transform2D, Transform3D, Vector2, Vector2i, Vector2Axis,
186+
Vector3, Vector3i, Vector3Axis, Vector4, Vector4i, Rect2, Rect2i, Plane, Quaternion, Aabb, Basis, Projection, Color, Rid
187+
}
188+
);
189+
190+
#[cfg(since_api = "4.2")]
191+
crate::task::impl_maybe_send!(
192+
!Send;
193+
Variant, GString, Dictionary, VariantArray, Callable, NodePath, PackedByteArray, PackedInt32Array, PackedInt64Array, PackedFloat32Array,
194+
PackedFloat64Array, PackedStringArray, PackedVector2Array, PackedVector3Array, PackedColorArray, Signal
195+
);
196+
197+
#[cfg(since_api = "4.3")]
198+
crate::task::impl_maybe_send!(!Send; PackedVector4Array);
199+
200+
// This should be kept in sync with crate::registry::signal::variadic.
201+
#[cfg(since_api = "4.2")]
202+
crate::task::impl_maybe_send!(tuple; );
203+
#[cfg(since_api = "4.2")]
204+
crate::task::impl_maybe_send!(tuple; arg1: A1);
205+
#[cfg(since_api = "4.2")]
206+
crate::task::impl_maybe_send!(tuple; arg1: A1, arg2: A2);
207+
#[cfg(since_api = "4.2")]
208+
crate::task::impl_maybe_send!(tuple; arg1: A1, arg2: A2, arg3: A3);
209+
#[cfg(since_api = "4.2")]
210+
crate::task::impl_maybe_send!(tuple; arg1: A1, arg2: A2, arg3: A3, arg4: A4);
211+
#[cfg(since_api = "4.2")]
212+
crate::task::impl_maybe_send!(tuple; arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5);
213+
#[cfg(since_api = "4.2")]
214+
crate::task::impl_maybe_send!(tuple; arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, arg6: A6);
215+
#[cfg(since_api = "4.2")]
216+
crate::task::impl_maybe_send!(tuple; arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, arg6: A6, arg7: A7);
217+
#[cfg(since_api = "4.2")]
218+
crate::task::impl_maybe_send!(tuple; arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, arg6: A6, arg7: A7, arg8: A8);
219+
#[cfg(since_api = "4.2")]
220+
crate::task::impl_maybe_send!(tuple; arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, arg6: A6, arg7: A7, arg8: A8, arg9: A9);
174221
}
175222

176223
// ----------------------------------------------------------------------------------------------------------------------------------------------

godot-core/src/meta/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,11 @@ mod class_name;
4949
mod godot_convert;
5050
mod method_info;
5151
mod property_info;
52-
mod sealed;
5352
mod signature;
5453
mod traits;
5554

55+
pub(crate) mod sealed;
56+
5657
pub mod error;
5758

5859
pub use args::*;

godot-core/src/meta/sealed.rs

+12
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ impl Sealed for Vector4 {}
2323
impl Sealed for Vector2i {}
2424
impl Sealed for Vector3i {}
2525
impl Sealed for Vector4i {}
26+
impl Sealed for Vector2Axis {}
27+
impl Sealed for Vector3Axis {}
28+
impl Sealed for Vector4Axis {}
2629
impl Sealed for Quaternion {}
2730
impl Sealed for Color {}
2831
impl Sealed for GString {}
@@ -72,3 +75,12 @@ where
7275
T::Ffi: GodotNullableFfi,
7376
{
7477
}
78+
impl<T1> Sealed for (T1,) {}
79+
impl<T1, T2> Sealed for (T1, T2) {}
80+
impl<T1, T2, T3> Sealed for (T1, T2, T3) {}
81+
impl<T1, T2, T3, T4> Sealed for (T1, T2, T3, T4) {}
82+
impl<T1, T2, T3, T4, T5> Sealed for (T1, T2, T3, T4, T5) {}
83+
impl<T1, T2, T3, T4, T5, T6> Sealed for (T1, T2, T3, T4, T5, T6) {}
84+
impl<T1, T2, T3, T4, T5, T6, T7> Sealed for (T1, T2, T3, T4, T5, T6, T7) {}
85+
impl<T1, T2, T3, T4, T5, T6, T7, T8> Sealed for (T1, T2, T3, T4, T5, T6, T7, T8) {}
86+
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> Sealed for (T1, T2, T3, T4, T5, T6, T7, T8, T9) {}

0 commit comments

Comments
 (0)