Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
        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);
Beispiel #5
0
 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));
                }
            }
Beispiel #7
0
        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);
            }
        }