On Sat, Nov 07, 2009 at 13:16:02 +0100, Johan wrote:
> Hi Andrea,
> Thanks for the fast reply.
> I am still doing something wrong, I changed this:
> 
> public virtual signal void handler2 (...)

No 'signal' keyword here. A handler is just a function. It must have
a signature that matches the signal it will connect to and of course it must
have a body.

(The handler also does not need to be public, if the connect is in a method
of that class)

> monitor.changed.connect((void) this.handler2);

You should not have any cast here. A (void) cast in particular is complete
nonsense -- it would be (void *) if you meant just untyped reference.

Generally, you should need very few casts in correct vala code. Whenever you
seem to need a cast, it's quite likely something else is wrong, so
make sure you really understand what is going on before you write a cast.

> and get the following:
> macro "g_signal_connect" requires 4 arguments, but only 3 given
> 
> That is how the C-code looks like:  //          g_signal_connect
> (monitor, "changed", (GCallback) ((void) g_signal_emit_by_name
> (self, "handler2")));

Vala should not have generated this. It should have probably errored out
saying the signal 'handler2' can't be used as value.

> and that is how it should be:
> //          g_signal_connect (instance, detailed_signal, c_handler, data)
> any idea?

-- 
                                                 Jan 'Bulb' Hudec <b...@ucw.cz>
_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to