summaryrefslogtreecommitdiffstats
path: root/chrome/service
diff options
context:
space:
mode:
authorsudarsana.nagineni@intel.com <sudarsana.nagineni@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-10 19:38:43 +0000
committersudarsana.nagineni@intel.com <sudarsana.nagineni@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-10 19:38:43 +0000
commit89031cdb70ff4d3ec0d570da46595648db64e96b (patch)
tree6743b6594efb3b79f8259148efa6823688475bbb /chrome/service
parent0dbe2cda4201f7db51036f261acb19a6b87ecf64 (diff)
downloadchromium_src-89031cdb70ff4d3ec0d570da46595648db64e96b.zip
chromium_src-89031cdb70ff4d3ec0d570da46595648db64e96b.tar.gz
chromium_src-89031cdb70ff4d3ec0d570da46595648db64e96b.tar.bz2
Fix service process crash on opening chrome://settings in desktop aura builds.
GLib type system is needed for gconf, so initialize it in the service process to avoid a crash. BUG=287718,282644 Review URL: https://chromiumcodereview.appspot.com/23721007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222319 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/service')
-rw-r--r--chrome/service/service_process.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/chrome/service/service_process.cc b/chrome/service/service_process.cc
index 5e7acb1..0243531 100644
--- a/chrome/service/service_process.cc
+++ b/chrome/service/service_process.cc
@@ -35,6 +35,10 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/ui_base_switches.h"
+#if defined(OS_LINUX) || defined(OS_OPENBSD)
+#include <glib-object.h>
+#endif
+
#if defined(TOOLKIT_GTK)
#include <gtk/gtk.h>
#include "ui/gfx/gtk_util.h"
@@ -139,7 +143,13 @@ bool ServiceProcess::Initialize(base::MessageLoopForUI* message_loop,
char **argv_pointer = argv.get();
gtk_init_check(&argc, &argv_pointer);
free(argv[0]);
+#elif defined(OS_LINUX) || defined(OS_OPENBSD)
+ // g_type_init has been deprecated since version 2.35.
+#if !GLIB_CHECK_VERSION(2, 35, 0)
+ // GLib type system initialization is needed for gconf.
+ g_type_init();
#endif
+#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
main_message_loop_ = message_loop;
service_process_state_.reset(state);
network_change_notifier_.reset(net::NetworkChangeNotifier::Create());