On Wed, 2012-01-25 at 08:50 +0100, tomw wrote: > Hi folks, > > after digging deeper into the issue last night it really seems that > vapigen does not create the vapi file correctly. As the gir [1] works > without any issues from Python I would assume that the definitions > therein are correct. As stated in my previous post, vapigen is omitting > some arguments in the gfreenect_device_new method [2]. Adding them > manually according to the gfreenect-device header like: > > public async Device (int device_index, uint subdevices, > GLib.Cancellable? cancellable, GLib.AsyncReadyCallback callback);
Vala does not yet support asynchronous constructors. See https://bugzilla.gnome.org/show_bug.cgi?id=659886 Also, the GAsyncReadyCallback argument really shouldn't be there. If that's the argument you're talking about adding manually vapigen is right to omit it. > does not fix the issue as I get the compiler errors in [3]: > > gf_test.vala.c:63:9: error: void value not ignored as it ought to be > error: cc exited with status 256 > > What am I missing here? Any idea on how to tackle the issue would be > highly appreciated. There are two relatively straightforward workarounds for this. The first option is to use a *-custom.vala file to create an asynchronous static method... something like public static async GFreenect.Device @new (int device_index, uint subdevices, GLib.Cancellable? cancellable); This trick is used a few times in the GIO bindings. The other option is to just circumvent this constructor by calling GLib.Object.new directly. You can even initialize the struct asynchronously (using GLib.AsyncInitable.init_async) if you want. Something like this should do the trick: GFreenect.Device device = (GFreenect.Device) GLib.Object.@new (typeof (GFreenect.Device), "device-index", device_index, "subdevices", subdevices); yield device.init_async (priority, cancellable); The code may not be as elegant but you don't have to modify the bindings. Also, at least you have the option of creating the instance synchronously. -Evan _______________________________________________ vala-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/vala-list
