aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ephy-main.c')
-rw-r--r--src/ephy-main.c71
1 files changed, 35 insertions, 36 deletions
diff --git a/src/ephy-main.c b/src/ephy-main.c
index 1d14bda0b..a50030bc0 100644
--- a/src/ephy-main.c
+++ b/src/ephy-main.c
@@ -486,6 +486,7 @@ main (int argc,
DBusGProxy *proxy;
GError *error = NULL;
guint32 user_time;
+ const char *env;
#ifndef GNOME_PARAM_GOPTION_CONTEXT
GPtrArray *fake_argv_array;
#endif
@@ -614,36 +615,42 @@ main (int argc,
exit (1);
}
+ /* Create DBUS proxy */
+ proxy = ephy_dbus_get_proxy (ephy_dbus_get_default (), EPHY_DBUS_SESSION);
+ if (proxy == NULL)
+ {
+ error = g_error_new (STARTUP_ERROR_QUARK,
+ 0,
+ "Unable to get DBus proxy; aborting activation."); /* FIXME i18n */
+
+ _ephy_dbus_release ();
+
+ show_error_message (&error);
+
+ exit (1);
+ }
+
/* If we're remoting, no need to start up any further services,
* just forward the call.
*/
if (!_ephy_dbus_is_name_owner ())
{
- /* FIXME */
- proxy = ephy_dbus_get_proxy (ephy_dbus_get_default (), EPHY_DBUS_SESSION);
- if (proxy == NULL)
+ if (!call_dbus_proxy (proxy, user_time, &error))
{
- error = g_error_new (STARTUP_ERROR_QUARK,
- 0,
- "Unable to get DBus proxy; aborting activation."); /* FIXME i18n */
- }
-
- if (proxy != NULL &&
- call_dbus_proxy (proxy, user_time, &error))
- {
- gtk_main ();
-
_ephy_dbus_release ();
- gdk_notify_startup_complete ();
- exit (0);
+ show_error_message (&error);
+
+ exit (1);
}
- _ephy_dbus_release ();
+ /* Wait for the response */
+ gtk_main ();
- show_error_message (&error);
+ _ephy_dbus_release ();
- exit (1);
+ gdk_notify_startup_complete ();
+ exit (0);
}
/* We're not remoting; start our services */
@@ -668,27 +675,17 @@ main (int argc,
gtk_about_dialog_set_url_hook (handle_url, NULL, NULL);
gtk_about_dialog_set_email_hook (handle_email, NULL, NULL);
- /* Now create the shell */
- _ephy_shell_create_instance ();
-
- /* Create DBUS proxy */
- proxy = ephy_dbus_get_proxy (ephy_dbus_get_default (), EPHY_DBUS_SESSION);
- if (proxy == NULL)
+ /* Work around bug #328844 */
+ env = g_getenv ("MOZ_ENABLE_PANGO");
+ if (env == NULL ||
+ env[0] == '\0' ||
+ strcmp (env, "0") == 0)
{
- error = g_error_new (STARTUP_ERROR_QUARK,
- 0,
- "Unable to get DBus proxy; aborting activation."); /* FIXME i18n */
-
- g_object_unref (ephy_shell_get_default ());
-
- ephy_file_helpers_shutdown ();
- _ephy_dbus_release ();
-
- show_error_message (&error);
-
- exit (1);
+ g_setenv ("MOZ_DISABLE_PANGO", "1", TRUE);
}
+ /* Now create the shell */
+ _ephy_shell_create_instance ();
g_object_weak_ref (G_OBJECT (proxy),
(GWeakNotify) dbus_g_proxy_finalized_cb,
g_object_ref (ephy_shell_get_default ()));
@@ -696,6 +693,8 @@ main (int argc,
if (!call_dbus_proxy (proxy, user_time, &error))
{
g_object_unref (ephy_shell_get_default ());
+ g_object_unref (proxy);
+ g_assert (ephy_shell_get_default () == NULL);
ephy_file_helpers_shutdown ();
_ephy_dbus_release ();