[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gstreamer-devel
Subject:    Re: c# AddSignalHandler
From:       James Linder via gstreamer-devel <gstreamer-devel () lists ! freedesktop ! org>
Date:       2023-02-23 9:36:02
Message-ID: 4FEC0513-0AD5-48D1-9D5A-85F4D595256F () tigger ! ws
[Download RAW message or body]



> On 23 Feb 2023, at 4:09 pm, Armin Erkert via gstreamer-devel \
> <gstreamer-devel@lists.freedesktop.org> wrote: 
> 
> Hi,
> 
> when I try to add a SignalHandler
> 
> 
> public delegate void MyDelegateNewFormat(object sender, GLib.SignalArg args);
> 
> ....
> 
> splitElement.AddSignalHandler("format-location", new \
> MyDelegateNewFormat(NewFormat)); 
> .....
> 
> static void NewFormat(object sender, GLib.SignalArgs args)
> {
> }
> 
> 
> I get this Error:
> 
> System.ArgumentException: Object of type 'System.EventArgs' cannot be converted to \
> type 'GLib.SignalArgs'. at System.RuntimeType.TryChangeType(Object value, Binder \
> binder, CultureInfo culture, Boolean needsSpecialCast) at \
> System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, \
> BindingFlags invokeAttr) at System.Reflection.MethodBase.CheckArguments(Object[] \
> parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature \
> sig) at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, \
> BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) \
> at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, \
> Binder binder, Object[] parameters, CultureInfo culture) at \
> System.Delegate.DynamicInvokeImpl(Object[] args) at \
> System.Delegate.DynamicInvoke(Object[] args) at GLib.Signal.ClosureInvokedCB(Object \
> o, ClosureInvokedArgs args) at GLib.SignalClosure.Invoke(ClosureInvokedArgs args)
> at GLib.SignalClosure.MarshalCallback(IntPtr raw_closure, IntPtr return_val, UInt32 \
> n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data) \
> PushData at GLib.ExceptionManager.RaiseUnhandledException(Exception e, Boolean \
> is_terminal) at GLib.SignalClosure.MarshalCallback(IntPtr raw_closure, IntPtr \
> return_val, UInt32 n_param_vals, IntPtr param_values, IntPtr invocation_hint, \
> IntPtr marshal_data) 
> 
> Can anyone help ne ?


I used straight forward signals

/*----------------------------------------------------------------------------------------
                
 * quit -- on int EOS and exit
 *---------------------------------------------------------------------------------------*/
 void byebye (int signum)
{
    g_print ("[handler function]\npost EOS\n");

    //post EOS message to pipe line
    gst_element_send_event (data.pipeline, gst_event_new_eos ());

    //block until EOS is detected
    g_print ("waiting for message answer\n");
    gst_bus_timed_pop_filtered (gst_element_get_bus(data.pipeline), \
GST_CLOCK_TIME_NONE, GST_MESSAGE_EOS);  g_print ("exit\n");
    fflush (stdout);
    exit (0);
} 

and

…
    signal (SIGUSR2, byebye);
…
James=


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic