${VALAC} -C ${cinaest_VALASOURCES} ${cinaest_VALAFLAGS}
cinaest_VALAFLAGS = --disable-dbus-transformation --vapidir ./vapi --pkg config --pkg cinaest \
- --pkg dbus-glib-1 --pkg gconf-2.0 --pkg hildon-1 --pkg libosso --pkg gmodule-2.0
+ --pkg dbus-glib-1 --pkg gconf-2.0 --pkg hildon-1 --pkg libosso --pkg gmodule-2.0 \
+ --pkg gobject-2.0-fix
cinaest_CFLAGS = ${CINAEST_CFLAGS} ${DBUS_CFLAGS} ${GCONF_CFLAGS} ${HILDON_CFLAGS} \
${MAEMO_LAUNCHER_CFLAGS} ${OSSO_CFLAGS} ${GMODULE_CFLAGS} \
-DGETTEXT_PACKAGE=\"@GETTEXT_PACKAGE@\"
* along with Cinaest. If not, see <http://www.gnu.org/licenses/>.
*/
-public class PluginRegistrar<T> : Object {
+public class PluginRegistrar<T> : GLibFix.TypeModule {
public string path { get; construct; }
private Type type;
private Module module;
- private delegate Type RegisterPluginFunction ();
+ private delegate Type RegisterPluginFunction (GLibFix.TypeModule module);
construct {
assert (Module.supported ());
Object (path: _path);
}
- public bool load () {
+ public override bool load () {
stdout.printf ("Loading plugin with path: '%s'\n", path);
module = Module.open (path, ModuleFlags.BIND_LAZY);
module.symbol ("register_plugin", out function);
RegisterPluginFunction register_plugin = (RegisterPluginFunction) function;
- type = register_plugin ();
+ type = register_plugin (this);
stdout.printf ("Plugin type: %s\n\n", type.name ());
// So it doesn't vanish as soon as the registar goes
return true;
}
+ public override void unload () {
+ }
+
public T new_object () {
return Object.new (type);
}
--- /dev/null
+using GLib;
+
+[CCode (cprefix = "G", lower_case_cprefix = "g_", cheader_filename = "glib.h", gir_namespace = "GObject", gir_version = "2.0")]
+namespace GLibFix {
+ [CCode (lower_case_csuffix = "type_module", unref_function = "")]
+ public abstract class TypeModule : Object, TypePlugin {
+ public bool use ();
+ public void unuse ();
+ public void set_name (string name);
+ [NoWrapper]
+ public abstract bool load ();
+ [NoWrapper]
+ public abstract void unload ();
+ }
+}