public static void TestStringThroughValue() { // Check if Value_Native->Value doesn't try to free the pointed string. using (Eina.Value value_ptr = new Eina.Value(Eina.ValueType.String)) { string payload = "Something"; value_ptr.Set(payload); Eina.ValueNative byvalue = value_ptr; Eina.Value another_value_ptr = byvalue; Test.AssertEquals(value_ptr, another_value_ptr); } }
private static Eina.ValueNative NativeResolvedCb(IntPtr data, Eina.ValueNative value, IntPtr dead_future) { GCHandle handle = GCHandle.FromIntPtr(data); ResolvedCb cb = handle.Target as ResolvedCb; if (cb != null) { value = cb(value); } else { Eina.Log.Warning("Failed to get future callback."); } handle.Free(); return(value); }
private static Eina.ValueNative NativeResolvedCb(IntPtr data, Eina.ValueNative value, IntPtr dead_future) { GCHandle handle = GCHandle.FromIntPtr(data); ResolvedCb cb = handle.Target as ResolvedCb; if (cb != null) { Eina.Value managedValue = cb(value); // Both `value` and `managedValue` will point to the same internal value data. // Avoid C# wrapper invalidating the underlying C Eina_Value as the eina_future.c // code will release it. value = managedValue.GetNative(); managedValue.ReleaseOwnership(); } else { Eina.Log.Warning("Failed to get future callback."); } handle.Free(); return(value); }
internal static extern void eina_promise_resolve(IntPtr scheduler, Eina.ValueNative value);
private static void message_send(System.IntPtr obj, System.IntPtr pd, int id, Eina.ValueNative msg) { Eina.Log.Debug("function efl_layout_signal_message_send was called"); Efl.Eo.IWrapper wrapper = Efl.Eo.Globals.data_get(pd); if (wrapper != null) { try { ((Signal)wrapper).MessageSend(id, msg); } catch (Exception e) { Eina.Log.Warning($"Callback error: {e.ToString()}"); Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION); } } else { efl_layout_signal_message_send_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)), id, msg); } }
private static Eina.Future future_resolved(System.IntPtr obj, System.IntPtr pd, Eina.ValueNative result) { Eina.Log.Debug("function efl_loop_future_resolved was called"); var ws = Efl.Eo.Globals.GetWrapperSupervisor(obj); if (ws != null) { var _in_result = new Eina.Value(result); Eina.Future _ret_var = default(Eina.Future); try { _ret_var = ((LoopConsumer)ws.Target).FutureResolved(_in_result); } catch (Exception e) { Eina.Log.Warning($"Callback error: {e.ToString()}"); Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION); } return(_ret_var); } else { return(efl_loop_future_resolved_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)), result)); } }
internal static void Cb(IntPtr cb_data, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Efl.Eo.StrbufKeepOwnershipMarshaler))] Eina.Strbuf str, Eina.ValueNative value) { GCHandle handle = GCHandle.FromIntPtr(cb_data); FormatFuncCb cb = (FormatFuncCb)handle.Target; try { cb(str, value); } catch (Exception e) { Eina.Log.Warning($"Callback error: {e.ToString()}"); Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION); } }