Hi, Vala uses the name of the *.vapi file to determine the libraries to link against. Since the pa_glib_mainloop_*() functions are in a separate library (libpulse-mainloop-glib.so) the corresponding objects in the Vala bindings have to be in a separate *.vapi file.
Otherwise using PA's GLib main loop with Vala fails with linker errors: $ cat test.vala class Foo : Object { PulseAudio.GLibMainLoop loop; static void main(){ } } $ valac --vapidir=old/vala/ --pkg=libpulse test.vala test.vala:2.2-2.29: warning: field `Foo.loop' never used PulseAudio.GLibMainLoop loop; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /tmp/cc61gzd9.o: In function `foo_finalize': test.vala.c:(.text+0x160): undefined reference to `pa_glib_mainloop_free' collect2: ld returned 1 exit status error: cc exited with status 256 Compilation failed: 1 error(s), 1 warning(s) $ A workaround would be: $ valac --vapidir=old/vala/ --pkg=libpulse -Xcc -L/usr/lib/libpulse-mainloop-glib.so test.vala test.vala:2.2-2.29: warning: field `Foo.loop' never used PulseAudio.GLibMainLoop loop; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Compilation succeeded - 1 warning(s) $ The attached patch fixes the issue for me: $ valac --vapidir=new/vala/ --pkg=libpulse --pkg=libpulse-mainloop-glib test.vala test.vala:2.2-2.29: warning: field `Foo.loop' never used PulseAudio.GLibMainLoop loop; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Compilation succeeded - 1 warning(s) $ If you don't have any objections, please merge this patch into master. Best regards Alexander Kurtz
diff -Naur old/Makefile.am new/Makefile.am --- old/Makefile.am 2011-03-25 10:14:45.000000000 +0100 +++ new/Makefile.am 2011-03-25 11:53:22.453308533 +0100 @@ -29,6 +29,8 @@ README \ todo \ vala/libpulse.deps \ + vala/libpulse-mainloop-glib.deps \ + vala/libpulse-mainloop-glib.vapi \ vala/libpulse.vapi SUBDIRS = src doxygen man po @@ -37,7 +39,7 @@ noinst_DATA = vapidir = $(datadir)/vala/vapi -vapi_DATA = vala/libpulse.deps vala/libpulse.vapi +vapi_DATA = vala/libpulse.deps libpulse-mainloop-glib.deps libpulse-mainloop-glib.vapi vala/libpulse.vapi pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libpulse.pc libpulse-simple.pc diff -Naur old/vala/libpulse-mainloop-glib.deps new/vala/libpulse-mainloop-glib.deps --- old/vala/libpulse-mainloop-glib.deps 1970-01-01 01:00:00.000000000 +0100 +++ new/vala/libpulse-mainloop-glib.deps 2011-03-23 17:40:09.000000000 +0100 @@ -0,0 +1 @@ +libpulse diff -Naur old/vala/libpulse-mainloop-glib.vapi new/vala/libpulse-mainloop-glib.vapi --- old/vala/libpulse-mainloop-glib.vapi 1970-01-01 01:00:00.000000000 +0100 +++ new/vala/libpulse-mainloop-glib.vapi 2011-03-25 11:53:14.368539085 +0100 @@ -0,0 +1,13 @@ +using GLib; + +namespace PulseAudio { + [Compact] + [CCode (cheader_filename="pulse/glib-mainloop.h", cname="pa_glib_mainloop", cprefix="pa_glib_mainloop_", free_function="pa_glib_mainloop_free")] + public class GLibMainLoop { + + [CCode (cname="pa_glib_mainloop_new")] + public GLibMainLoop(MainContext? c = null); + + public unowned MainLoopApi get_api(); + } +} diff -Naur old/vala/libpulse.vapi new/vala/libpulse.vapi --- old/vala/libpulse.vapi 2011-03-25 10:14:45.000000000 +0100 +++ new/vala/libpulse.vapi 2011-03-25 11:09:02.033522130 +0100 @@ -879,16 +879,6 @@ } [Compact] - [CCode (cheader_filename="pulse/glib-mainloop.h", cname="pa_glib_mainloop", cprefix="pa_glib_mainloop_", free_function="pa_glib_mainloop_free")] - public class GLibMainLoop { - - [CCode (cname="pa_glib_mainloop_new")] - public GLibMainLoop(MainContext? c = null); - - public unowned MainLoopApi get_api(); - } - - [Compact] [CCode (cname="pa_operation", cprefix="pa_operation_", unref_function="pa_operation_unref", ref_function="pa_operation_ref")] public class Operation {
signature.asc
Description: This is a digitally signed message part
_______________________________________________ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss