? P ? build Index: data/epiphany-1.6.pc.in =================================================================== RCS file: /cvs/gnome/epiphany/data/epiphany-1.6.pc.in,v retrieving revision 1.2 diff -p -u -u -p -r1.2 epiphany-1.6.pc.in --- data/epiphany-1.6.pc.in 13 Sep 2004 10:24:55 -0000 1.2 +++ data/epiphany-1.6.pc.in 2 Jan 2005 22:08:17 -0000 @@ -3,6 +3,7 @@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@/epiphany-@EPIPHANY_MAJOR@ extensionsdir=@libdir@/epiphany-@EPIPHANY_MAJOR@/extensions +loaderdir=@libdir@/epiphany-@EPIPHANY_MAJOR@/loaders Name: Epiphany Browser Description: GNOME Web Browser Index: src/Makefile.am =================================================================== RCS file: /cvs/gnome/epiphany/src/Makefile.am,v retrieving revision 1.53 diff -p -u -u -p -r1.53 Makefile.am --- src/Makefile.am 24 Dec 2004 00:21:15 -0000 1.53 +++ src/Makefile.am 2 Jan 2005 22:08:18 -0000 @@ -98,6 +98,7 @@ libephymain_la_CPPFLAGS = \ -I$(top_srcdir)/src/bookmarks \ -DSHARE_DIR=\"$(pkgdatadir)\" \ -DEXTENSIONS_DIR=\""$(libdir)/epiphany-$(EPIPHANY_MAJOR)/extensions"\" \ + -DLOADER_DIR=\""$(libdir)/epiphany-$(EPIPHANY_MAJOR)/loaders"\" \ -DDATADIR=\""$(datadir)"\" \ -DPIXMAP_DIR=\""$(datadir)/pixmaps"\" \ $(AM_CPPFLAGS) Index: src/ephy-extensions-manager.c =================================================================== RCS file: /cvs/gnome/epiphany/src/ephy-extensions-manager.c,v retrieving revision 1.21 diff -p -u -u -p -r1.21 ephy-extensions-manager.c --- src/ephy-extensions-manager.c 28 Dec 2004 16:47:32 -0000 1.21 +++ src/ephy-extensions-manager.c 2 Jan 2005 22:08:18 -0000 @@ -713,6 +713,10 @@ get_loader_for_type (EphyExtensionsManag { LoaderInfo *info; GList *l; + GData *attr = NULL; + char *path, *name; + EphyLoader *shlib_loader; + GObject *loader; LOG ("Looking for loader for type '%s'", type) @@ -736,7 +740,31 @@ get_loader_for_type (EphyExtensionsManag return g_object_ref (info->loader); } - /* try to load a loader */ + name = g_strconcat ("lib", type, "loader.", G_MODULE_SUFFIX, NULL); + path = g_build_filename (LOADER_DIR, name, NULL); + g_datalist_init (&attr); + g_datalist_set_data (&attr, "library", path); + + shlib_loader = get_loader_for_type (manager, "shlib"); + g_return_val_if_fail (shlib_loader != NULL, NULL); + + loader = ephy_loader_get_object (shlib_loader, &attr); + g_datalist_clear (&attr); + g_free (name); + g_free (path); + + if (EPHY_IS_LOADER (loader)) + { + info = g_new (LoaderInfo, 1); + info->type = g_strdup (type); + info->loader = EPHY_LOADER (loader); + + manager->priv->factories = + g_list_append (manager->priv->factories, info); + + return g_object_ref (info->loader); + } + g_return_val_if_reached (NULL); return NULL; @@ -1225,6 +1253,7 @@ ephy_extensions_manager_finalize (GObjec g_list_foreach (priv->extensions, (GFunc) g_object_unref, NULL); g_list_free (priv->extensions); + /* FIXME release loaded loaders */ g_list_foreach (priv->factories, (GFunc) free_loader_info, NULL); g_list_free (priv->factories);