diff options
author | Marco Pesenti Gritti <marco@gnome.org> | 2003-11-14 01:28:04 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2003-11-14 01:28:04 +0800 |
commit | 62caa3e6eec7b6109703071179ed260aac507db7 (patch) | |
tree | 9ccf963ec55954e7adab7b4a68eac776d9114ca1 /src/ephy-shell.c | |
parent | 00c81d309184a49f6e711c4ce0b61ae8f94b42ae (diff) | |
download | gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.gz gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.bz2 gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.lz gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.xz gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.tar.zst gsoc2013-epiphany-62caa3e6eec7b6109703071179ed260aac507db7.zip |
Rework shell services initialization so that it happen either on every
2003-11-13 Marco Pesenti Gritti <marco@gnome.org>
* embed/mozilla/mozilla-notifiers.cpp:
* src/ephy-main.c: (main):
* src/ephy-shell.c: (ephy_shell_init), (ephy_shell_startup),
(ephy_shell_finalize), (ephy_shell_get_session),
(ephy_shell_get_extensions_manager):
* src/ephy-window.c: (ensure_default_icon), (ephy_window_init):
Rework shell services initialization so that it happen either
on every instance, before the automation stuff is used, either
when they are requested. This appear to fix the crash with two
instances runned simultaneously.
(Christian I'm not quite sure this is ok for plugins manager, if
there are problems let me know.)
Diffstat (limited to 'src/ephy-shell.c')
-rw-r--r-- | src/ephy-shell.c | 98 |
1 files changed, 23 insertions, 75 deletions
diff --git a/src/ephy-shell.c b/src/ephy-shell.c index 6cdb6700f..a661ceceb 100644 --- a/src/ephy-shell.c +++ b/src/ephy-shell.c @@ -23,15 +23,12 @@ #endif #include "ephy-shell.h" -#include "ephy-state.h" #include "ephy-embed-shell.h" #include "eel-gconf-extensions.h" #include "ephy-prefs.h" +#include "ephy-file-helpers.h" #include "ephy-favicon-cache.h" -#include "ephy-stock-icons.h" #include "ephy-window.h" -#include "ephy-file-helpers.h" -#include "ephy-thread-helpers.h" #include "ephy-bookmarks-import.h" #include "ephy-bookmarks-editor.h" #include "ephy-history-window.h" @@ -51,9 +48,6 @@ #include <gtk/gtkmessagedialog.h> #include <dirent.h> #include <unistd.h> -#include <libgnomevfs/gnome-vfs-init.h> -#include <gtk/gtkicontheme.h> -#include <glade/glade-init.h> #ifdef ENABLE_NAUTILUS_VIEW @@ -170,6 +164,7 @@ ephy_shell_init (EphyShell *gs) gs->priv->history_window = NULL; gs->priv->toolbars_model = NULL; gs->priv->fs_toolbars_model = NULL; + gs->priv->extensions_manager = NULL; ephy_shell = gs; g_object_add_weak_pointer (G_OBJECT(ephy_shell), @@ -180,68 +175,6 @@ ephy_shell_init (EphyShell *gs) } static void -init_services (EphyShell *gs, GError **error) -{ - GtkIconTheme *icon_theme; - GtkIconInfo *icon_info; - const char *icon_file; - EphyEmbedSingle *single; - - gnome_vfs_init (); - glade_gnome_init (); - ephy_debug_init (); - ephy_thread_helpers_init (); - ephy_file_helpers_init (); - ephy_stock_icons_init (); - ephy_ensure_dir_exists (ephy_dot_dir ()); - - /* preload the prefs */ - /* it also enables notifiers support */ - eel_gconf_monitor_add ("/apps/epiphany"); - eel_gconf_monitor_add ("/system/proxy"); - - /* This ensures mozilla is fired up */ - single = ephy_embed_shell_get_embed_single (EPHY_EMBED_SHELL (gs)); - if (single == NULL) - { - g_set_error (error, EPHY_SHELL_ERROR, - EPHY_SHELL_ERROR_MOZILLA_REG_FAILED, - _("Epiphany can't be used now. " - "Mozilla initialization failed. Check your " - "MOZILLA_FIVE_HOME environmental variable.")); - } - - /* FIXME listen on icon changes */ - /* FIXME MultiHead: icon theme is per-display, not global */ - icon_theme = gtk_icon_theme_get_default (); - icon_info = gtk_icon_theme_lookup_icon (icon_theme, "web-browser", -1, 0); - - if (icon_info) - { - - icon_file = gtk_icon_info_get_filename (icon_info); - if (icon_file) - { - gtk_window_set_default_icon_from_file (icon_file, NULL); - } - - gtk_icon_info_free (icon_info); - } - else - { - g_warning ("Web browser gnome icon not found"); - } - - /* Instantiate extensions manager; this will load the extensions */ - gs->priv->extensions_manager = ephy_extensions_manager_new (); - - /* Instantiate internal extensions */ - gs->priv->session = - EPHY_SESSION (ephy_extensions_manager_add - (gs->priv->extensions_manager, EPHY_TYPE_SESSION)); -} - -static void open_urls (GNOME_EphyAutomation automation, const char **args, CORBA_Environment *ev, gboolean new_tab, gboolean existing_window, @@ -278,6 +211,8 @@ ephy_shell_startup (EphyShell *gs, GNOME_EphyAutomation automation; Bonobo_RegistrationResult result; + ephy_ensure_dir_exists (ephy_dot_dir ()); + #ifdef ENABLE_NAUTILUS_VIEW ephy_nautilus_view_init_factory (gs); #endif @@ -290,8 +225,6 @@ ephy_shell_startup (EphyShell *gs, switch (result) { case Bonobo_ACTIVATION_REG_SUCCESS: - init_services (gs, error); - if (*error != NULL) return TRUE; break; case Bonobo_ACTIVATION_REG_ALREADY_ACTIVE: break; @@ -423,10 +356,6 @@ ephy_shell_finalize (GObject *object) G_OBJECT_CLASS (parent_class)->finalize (object); - ephy_state_save (); - ephy_file_helpers_shutdown (); - gnome_vfs_shutdown (); - if (gs->priv->automation_factory) { bonobo_object_unref (gs->priv->automation_factory); @@ -613,6 +542,19 @@ ephy_shell_get_session (EphyShell *gs) { g_return_val_if_fail (EPHY_IS_SHELL (gs), NULL); + if (gs->priv->session == NULL) + { + EphyExtensionsManager *manager; + + manager = EPHY_EXTENSIONS_MANAGER + (ephy_shell_get_extensions_manager (gs)); + + /* Instantiate internal extensions */ + gs->priv->session = + EPHY_SESSION (ephy_extensions_manager_add + (manager, EPHY_TYPE_SESSION)); + } + return G_OBJECT (gs->priv->session); } @@ -667,6 +609,12 @@ ephy_shell_get_extensions_manager (EphyShell *es) { g_return_val_if_fail (EPHY_IS_SHELL (es), NULL); + if (es->priv->extensions_manager == NULL) + { + /* Instantiate extensions manager; this will load the extensions */ + es->priv->extensions_manager = ephy_extensions_manager_new (); + } + return G_OBJECT (es->priv->extensions_manager); } |