[gnome-initial-setup] Make Clutter optional



commit d59cb9d93abd398c44cfdc450d589ab35ccb53a9
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Jul 16 20:50:24 2012 -0400

    Make Clutter optional

 configure.ac                              |    9 ++++++-
 gnome-initial-setup/Makefile.am           |   14 +++++++++++-
 gnome-initial-setup/gnome-initial-setup.c |   34 ++++++++++++++++++----------
 3 files changed, 42 insertions(+), 15 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 34efcc0..a933102 100644
--- a/configure.ac
+++ b/configure.ac
@@ -29,8 +29,6 @@ PKG_CHECK_MODULES(INITIAL_SETUP,
                   gstreamer-0.10
                   cheese
                   cheese-gtk >= 3.3.5
-                  clutter-gtk-1.0
-                  clutter-1.0 >= $CLUTTER_REQUIRED_VERSION
                   fontconfig
                   geoclue
                   gweather-3.0
@@ -42,6 +40,13 @@ PKG_CHECK_MODULES(INITIAL_SETUP,
                   gio-unix-2.0 >= $GLIB_REQUIRED_VERSION
                   gdmgreeter)
 
+PKG_CHECK_MODULES(CLUTTER,
+                  clutter-gtk-1.0
+                  clutter-1.0 >= $CLUTTER_REQUIRED_VERSION,
+                  have_clutter=yes, have_clutter=no)
+AM_CONDITIONAL(HAVE_CLUTTER, [test x$have_clutter = xyes])
+AC_SUBST(HAVE_CLUTTER)
+
 AC_CHECK_HEADER([pwquality.h], [have_pwquality=yes], [have_pwquality=no])
 AM_CONDITIONAL(HAVE_PWQUALITY, [test x$have_pwquality = xyes])
 if test x$have_pwquality = xyes ; then
diff --git a/gnome-initial-setup/Makefile.am b/gnome-initial-setup/Makefile.am
index 923a10c..4f8409d 100644
--- a/gnome-initial-setup/Makefile.am
+++ b/gnome-initial-setup/Makefile.am
@@ -11,8 +11,16 @@ AM_CPPFLAGS = \
 	-DUIDIR="\"$(uidir)\"" \
 	-DGNOMELOCALEDIR=\""$(datadir)/locale"\"
 
+if HAVE_CLUTTER
+AM_CPPFLAGS += $(CLUTTER_CFLAGS)
+endif
+
 LIBS = $(INITIAL_SETUP_LIBS) -lm
 
+if HAVE_CLUTTER
+LIBS += $(CLUTTER_LIBS)
+endif
+
 libexec_PROGRAMS = gnome-initial-setup
 
 BUILT_SOURCES =
@@ -33,11 +41,15 @@ gnome_initial_setup_SOURCES =	\
 	gnome-initial-setup.c gnome-initial-setup.h \
 	cc-notebook.c cc-notebook.h \
 	gis-assistant.c gis-assistant.h gis-assistant-private.h \
-	gis-assistant-clutter.c gis-assistant-clutter.h \
 	gis-assistant-gtk.c gis-assistant-gtk.h \
 	gis-utils.c gis-utils.h \
 	$(BUILT_SOURCES)
 
+if HAVE_CLUTTER
+gnome_initial_setup_SOURCES += \
+	gis-assistant-clutter.c gis-assistant-clutter.h
+endif
+
 gnome_initial_setup_LDADD =	\
 	pages/language/libgislanguage.la \
 	pages/eulas/libgiseulas.la \
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
index 19b375e..b9627e1 100644
--- a/gnome-initial-setup/gnome-initial-setup.c
+++ b/gnome-initial-setup/gnome-initial-setup.c
@@ -13,7 +13,10 @@
 #include <clutter-gtk/clutter-gtk.h>
 
 #include "gis-assistant-gtk.h"
+
+#ifdef HAVE_CLUTTER
 #include "gis-assistant-clutter.h"
+#endif
 
 #include "pages/language/gis-language-page.h"
 #include "pages/eulas/gis-eula-pages.h"
@@ -121,6 +124,22 @@ gis_add_summary_callback (SetupData *setup,
   setup->finals = g_slist_append (setup->finals, closure);
 }
 
+static GType
+get_assistant_type (void)
+{
+#ifdef HAVE_CLUTTER
+  gboolean enable_animations;
+  g_object_get (gtk_settings_get_default (),
+                "gtk-enable-animations", &enable_animations,
+                NULL);
+
+  if (enable_animations)
+    return GIS_TYPE_ASSISTANT_CLUTTER;
+#endif /* HAVE_CLUTTER */
+
+  return GIS_TYPE_ASSISTANT_GTK;
+}
+
 /* main {{{1 */
 
 int
@@ -129,8 +148,6 @@ main (int argc, char *argv[])
   SetupData *setup;
   gchar *filename;
   GError *error;
-  gboolean enable_animations;
-  GType assistant_type;
 
   bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
   bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -143,10 +160,12 @@ main (int argc, char *argv[])
 
   gtk_init (&argc, &argv);
 
+#if HAVE_CLUTTER
   if (gtk_clutter_init (NULL, NULL) != CLUTTER_INIT_SUCCESS) {
     g_critical ("Clutter-GTK init failed");
     exit (1);
   }
+#endif
 
   error = NULL;
   if (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error) == NULL) {
@@ -163,16 +182,7 @@ main (int argc, char *argv[])
                                      "window-position", GTK_WIN_POS_CENTER_ALWAYS,
                                      NULL);
 
-  g_object_get (gtk_settings_get_default (),
-                "gtk-enable-animations", &enable_animations,
-                NULL);
-
-  if (enable_animations)
-    assistant_type = GIS_TYPE_ASSISTANT_CLUTTER;
-  else
-    assistant_type = GIS_TYPE_ASSISTANT_GTK;
-
-  setup->assistant = g_object_new (assistant_type, NULL);
+  setup->assistant = g_object_new (get_assistant_type (), NULL);
   gtk_container_add (GTK_CONTAINER (setup->main_window), GTK_WIDGET (setup->assistant));
 
   gtk_widget_show (GTK_WIDGET (setup->assistant));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]