[epiphany] Move code to initialize preferences from ephy-main to ephy-shell
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany] Move code to initialize preferences from ephy-main to ephy-shell
- Date: Wed, 20 Mar 2013 14:50:22 +0000 (UTC)
commit f65b0e0ef8322139d230c0b5ba60e569ee1f390c
Author: Carlos Garcia Campos <cgarcia igalia com>
Date: Tue Mar 19 19:02:12 2013 +0100
Move code to initialize preferences from ephy-main to ephy-shell
As well as the code the prepare the environment for the wen process and
web context initialization. This allows to only run that initializations
only for the primary instance. It fixes a crash in web process when the
ui process finishes too early and makes secondary instances to run
faster, since they don't spawn a web process anymore.
https://bugzilla.gnome.org/show_bug.cgi?id=696020
src/Makefile.am | 2 +-
src/ephy-main.c | 28 ----------------------------
src/ephy-shell.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 47 insertions(+), 29 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index a2c2aed..0b38aa8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -86,6 +86,7 @@ libephymain_la_CPPFLAGS = \
-DLOADER_DIR=\""$(pkglibdir)/$(EPIPHANY_MAJOR)/loaders"\" \
-DDATADIR=\""$(pkgdatadir)"\" \
-DGNOMELOCALEDIR=\"$(datadir)/locale\" \
+ -DEPHY_WEB_EXTENSIONS_DIR=\""$(libdir)/epiphany/$(EPIPHANY_MAJOR)/web-extensions"\" \
$(AM_CPPFLAGS)
if WITH_WEBKIT2
@@ -138,7 +139,6 @@ epiphany_CPPFLAGS = \
-I$(top_srcdir)/src/bookmarks \
-DDATADIR=\""$(datadir)"\" \
-DGNOMELOCALEDIR=\"$(datadir)/locale\" \
- -DEPHY_WEB_EXTENSIONS_DIR=\""$(libdir)/epiphany/$(EPIPHANY_MAJOR)/web-extensions"\" \
$(INCINTL) \
$(AM_CPPFLAGS)
diff --git a/src/ephy-main.c b/src/ephy-main.c
index a789917..80d076b 100644
--- a/src/ephy-main.c
+++ b/src/ephy-main.c
@@ -23,7 +23,6 @@
#include "config.h"
#include "ephy-debug.h"
-#include "ephy-embed-prefs.h"
#include "ephy-file-helpers.h"
#include "ephy-initial-state.h"
#include "ephy-private.h"
@@ -229,10 +228,6 @@ main (int argc,
EphyShell *ephy_shell;
int status;
EphyFileHelpersFlags flags;
-#ifdef HAVE_WEBKIT2
- char *pid_str;
- char *disk_cache_dir;
-#endif
#ifdef ENABLE_NLS
/* Initialize the i18n stuff */
@@ -462,28 +457,6 @@ main (int argc,
gtk_window_set_default_icon_name ("web-browser");
}
-#ifdef HAVE_WEBKIT2
- pid_str = g_strdup_printf ("%u", getpid ());
- g_setenv ("EPHY_WEB_EXTENSION_ID", pid_str, TRUE);
- g_setenv ("EPHY_DOT_DIR", ephy_dot_dir (), TRUE);
- if (private_instance || incognito_mode)
- g_setenv ("EPHY_PRIVATE_PROFILE", "1", TRUE);
- g_free (pid_str);
-
- /* Set the web extensions dir ASAP before the process is launched */
- webkit_web_context_set_web_extensions_directory (webkit_web_context_get_default (),
- EPHY_WEB_EXTENSIONS_DIR);
-
- /* Disk Cache */
- disk_cache_dir = g_build_filename (EPHY_EMBED_SHELL_MODE_HAS_PRIVATE_PROFILE (mode) ?
- ephy_dot_dir () : g_get_user_cache_dir (),
- g_get_prgname (), NULL);
- webkit_web_context_set_disk_cache_directory (webkit_web_context_get_default (),
- disk_cache_dir);
- g_free (disk_cache_dir);
-#endif
-
- ephy_embed_prefs_init ();
_ephy_shell_create_instance (mode);
startup_flags = get_startup_flags ();
@@ -505,7 +478,6 @@ main (int argc,
notify_uninit ();
ephy_initial_state_save ();
- ephy_embed_prefs_shutdown ();
ephy_settings_shutdown ();
ephy_file_helpers_shutdown ();
xmlCleanupParser ();
diff --git a/src/ephy-shell.c b/src/ephy-shell.c
index 3d8fc52..252a4cb 100644
--- a/src/ephy-shell.c
+++ b/src/ephy-shell.c
@@ -30,6 +30,7 @@
#include "ephy-bookmarks-import.h"
#include "ephy-debug.h"
#include "ephy-embed-container.h"
+#include "ephy-embed-prefs.h"
#include "ephy-embed-single.h"
#include "ephy-embed-utils.h"
#include "ephy-file-helpers.h"
@@ -226,16 +227,52 @@ static GActionEntry app_normal_mode_entries[] = {
{ "reopen-closed-tab", reopen_closed_tab, NULL, NULL, NULL },
};
+#ifdef HAVE_WEBKIT2
+static void
+ephy_shell_setup_environment (EphyShell *shell)
+{
+ EphyEmbedShellMode mode = ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (shell));
+ char *pid_str;
+
+ pid_str = g_strdup_printf ("%u", getpid ());
+ g_setenv ("EPHY_WEB_EXTENSION_ID", pid_str, TRUE);
+ g_setenv ("EPHY_DOT_DIR", ephy_dot_dir (), TRUE);
+ if (EPHY_EMBED_SHELL_MODE_HAS_PRIVATE_PROFILE (mode))
+ g_setenv ("EPHY_PRIVATE_PROFILE", "1", TRUE);
+ g_free (pid_str);
+}
+#endif
+
static void
ephy_shell_startup (GApplication* application)
{
EphyEmbedShellMode mode;
+#ifdef HAVE_WEBKIT2
+ char *disk_cache_dir;
+#endif
G_APPLICATION_CLASS (ephy_shell_parent_class)->startup (application);
/* We're not remoting; start our services */
mode = ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (application));
+#ifdef HAVE_WEBKIT2
+ ephy_shell_setup_environment (EPHY_SHELL (application));
+ /* Set the web extensions dir ASAP before the process is launched */
+ webkit_web_context_set_web_extensions_directory (webkit_web_context_get_default (),
+ EPHY_WEB_EXTENSIONS_DIR);
+
+ /* Disk Cache */
+ disk_cache_dir = g_build_filename (EPHY_EMBED_SHELL_MODE_HAS_PRIVATE_PROFILE (mode) ?
+ ephy_dot_dir () : g_get_user_cache_dir (),
+ g_get_prgname (), NULL);
+ webkit_web_context_set_disk_cache_directory (webkit_web_context_get_default (),
+ disk_cache_dir);
+ g_free (disk_cache_dir);
+#endif
+
+ ephy_embed_prefs_init ();
+
if (mode != EPHY_EMBED_SHELL_MODE_APPLICATION) {
GtkBuilder *builder;
@@ -266,6 +303,14 @@ ephy_shell_startup (GApplication* application)
}
static void
+ephy_shell_shutdown (GApplication* application)
+{
+ G_APPLICATION_CLASS (ephy_shell_parent_class)->shutdown (application);
+
+ ephy_embed_prefs_shutdown ();
+}
+
+static void
session_load_cb (GObject *object,
GAsyncResult *result,
gpointer user_data)
@@ -500,6 +545,7 @@ ephy_shell_class_init (EphyShellClass *klass)
object_class->constructed = ephy_shell_constructed;
application_class->startup = ephy_shell_startup;
+ application_class->shutdown = ephy_shell_shutdown;
application_class->activate = ephy_shell_activate;
application_class->before_emit = ephy_shell_before_emit;
application_class->add_platform_data = ephy_shell_add_platform_data;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]