Hello,
        في ن، 06-12-2010 عند 13:50 +0100 ، كتب Marco Trevisan (Treviño):
> Yes, this is right indeed. The signature is not the same, so why don't
> allow to define async signals?
How do you define an async signal?


> > > > You can also try to pass the begin method directly (but I'm not sure it
> > > > works).
> > > 
> > > No, I tried that, but it didn't work, I got an error since the begin
> > > return value was considered just like a void.
> > 
> > Hm, the begin function returns a void, but that's what the signal expects
> > anyway, so it seems like that one should work. That would be a bug than.
> 
> It doesn't work to me:
> 
> ma...@tricky:/tmp$ valac --pkg dbus-glib-1 --pkg gio-2.0
> dbus-connect-async.vala 
> warning: D-Bus GLib is deprecated, use GDBus
> dbus-connect-async.vala:38.15-38.39: error: invocation of void method
> not allowed as expression
>               if (name in sender.list_names.begin())
>                           ^^^^^^^^^^^^^^^^^^^^^^^^^
> Compilation failed: 1 error(s), 1 warning(s)
> 
> Is this a bug?
No, this is expected behavior : the begin method just starts the async
method, and does not wait for the return value and thus returns void.
But I don't understand how is this related to the topic (connecting an
async method to a signal).

What I was suggesting is that you should be able to pass the begin
method as a signal handler (assuming your signal doesn't expect the
handler to return a value), so when the signal is emitted, your method
gets started. In your example, this would be :
session_proxy.name_acquired.connect (this.name_acquired.begin);

HTH,
Abderrahim

_______________________________________________
vala-list mailing list
vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to