Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--m4/gnome-compiler-flags.m4141
-rw-r--r--src/sugar/Makefile.am1
-rw-r--r--src/sugar/_sugarext.override2
-rw-r--r--src/sugar/eggsmclient-private.h2
-rw-r--r--src/sugar/gsm-session.c53
-rw-r--r--src/sugar/sugar-menu.h1
-rw-r--r--src/sugar/sugar-preview.c5
8 files changed, 150 insertions, 57 deletions
diff --git a/configure.ac b/configure.ac
index 1c234d3..66c275c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,6 +10,8 @@ AM_INIT_AUTOMAKE([1.9 foreign dist-bzip2 no-dist-gzip])
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
+GNOME_COMPILE_WARNINGS(maximum)
+
AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
AM_PATH_PYTHON
diff --git a/m4/gnome-compiler-flags.m4 b/m4/gnome-compiler-flags.m4
new file mode 100644
index 0000000..b9db2fd
--- /dev/null
+++ b/m4/gnome-compiler-flags.m4
@@ -0,0 +1,141 @@
+dnl GNOME_COMPILE_WARNINGS
+dnl Turn on many useful compiler warnings
+dnl For now, only works on GCC
+AC_DEFUN([GNOME_COMPILE_WARNINGS],[
+ dnl ******************************
+ dnl More compiler warnings
+ dnl ******************************
+
+ AC_ARG_ENABLE(compile-warnings,
+ AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
+ [Turn on compiler warnings]),,
+ [enable_compile_warnings="m4_default([$1],[yes])"])
+
+ warnCFLAGS=
+ if test "x$GCC" != xyes; then
+ enable_compile_warnings=no
+ fi
+
+ warning_flags=
+ realsave_CFLAGS="$CFLAGS"
+
+ case "$enable_compile_warnings" in
+ no)
+ warning_flags=
+ ;;
+ minimum)
+ warning_flags="-Wall"
+ ;;
+ yes)
+ warning_flags="-Wall -Wmissing-prototypes"
+ ;;
+ maximum|error)
+ warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
+ CFLAGS="$warning_flags $CFLAGS"
+ for option in -Wno-sign-compare; do
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $option"
+ AC_MSG_CHECKING([whether gcc understands $option])
+ AC_TRY_COMPILE([], [],
+ has_option=yes,
+ has_option=no,)
+ CFLAGS="$SAVE_CFLAGS"
+ AC_MSG_RESULT($has_option)
+ if test $has_option = yes; then
+ warning_flags="$warning_flags $option"
+ fi
+ unset has_option
+ unset SAVE_CFLAGS
+ done
+ unset option
+ if test "$enable_compile_warnings" = "error" ; then
+ warning_flags="$warning_flags -Werror"
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
+ ;;
+ esac
+ CFLAGS="$realsave_CFLAGS"
+ AC_MSG_CHECKING(what warning flags to pass to the C compiler)
+ AC_MSG_RESULT($warning_flags)
+
+ AC_ARG_ENABLE(iso-c,
+ AC_HELP_STRING([--enable-iso-c],
+ [Try to warn if code is not ISO C ]),,
+ [enable_iso_c=no])
+
+ AC_MSG_CHECKING(what language compliance flags to pass to the C compiler)
+ complCFLAGS=
+ if test "x$enable_iso_c" != "xno"; then
+ if test "x$GCC" = "xyes"; then
+ case " $CFLAGS " in
+ *[\ \ ]-ansi[\ \ ]*) ;;
+ *) complCFLAGS="$complCFLAGS -ansi" ;;
+ esac
+ case " $CFLAGS " in
+ *[\ \ ]-pedantic[\ \ ]*) ;;
+ *) complCFLAGS="$complCFLAGS -pedantic" ;;
+ esac
+ fi
+ fi
+ AC_MSG_RESULT($complCFLAGS)
+
+ WARN_CFLAGS="$warning_flags $complCFLAGS"
+ AC_SUBST(WARN_CFLAGS)
+])
+
+dnl For C++, do basically the same thing.
+
+AC_DEFUN([GNOME_CXX_WARNINGS],[
+ AC_ARG_ENABLE(cxx-warnings,
+ AC_HELP_STRING([--enable-cxx-warnings=@<:@no/minimum/yes@:>@]
+ [Turn on compiler warnings.]),,
+ [enable_cxx_warnings="m4_default([$1],[minimum])"])
+
+ AC_MSG_CHECKING(what warning flags to pass to the C++ compiler)
+ warnCXXFLAGS=
+ if test "x$GXX" != xyes; then
+ enable_cxx_warnings=no
+ fi
+ if test "x$enable_cxx_warnings" != "xno"; then
+ if test "x$GXX" = "xyes"; then
+ case " $CXXFLAGS " in
+ *[\ \ ]-Wall[\ \ ]*) ;;
+ *) warnCXXFLAGS="-Wall -Wno-unused" ;;
+ esac
+
+ ## -W is not all that useful. And it cannot be controlled
+ ## with individual -Wno-xxx flags, unlike -Wall
+ if test "x$enable_cxx_warnings" = "xyes"; then
+ warnCXXFLAGS="$warnCXXFLAGS -Wshadow -Woverloaded-virtual"
+ fi
+ fi
+ fi
+ AC_MSG_RESULT($warnCXXFLAGS)
+
+ AC_ARG_ENABLE(iso-cxx,
+ AC_HELP_STRING([--enable-iso-cxx],
+ [Try to warn if code is not ISO C++ ]),,
+ [enable_iso_cxx=no])
+
+ AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler)
+ complCXXFLAGS=
+ if test "x$enable_iso_cxx" != "xno"; then
+ if test "x$GXX" = "xyes"; then
+ case " $CXXFLAGS " in
+ *[\ \ ]-ansi[\ \ ]*) ;;
+ *) complCXXFLAGS="$complCXXFLAGS -ansi" ;;
+ esac
+
+ case " $CXXFLAGS " in
+ *[\ \ ]-pedantic[\ \ ]*) ;;
+ *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;;
+ esac
+ fi
+ fi
+ AC_MSG_RESULT($complCXXFLAGS)
+
+ WARN_CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS"
+ AC_SUBST(WARN_CXXFLAGS)
+])
diff --git a/src/sugar/Makefile.am b/src/sugar/Makefile.am
index ef91efe..5cc58d1 100644
--- a/src/sugar/Makefile.am
+++ b/src/sugar/Makefile.am
@@ -14,6 +14,7 @@ pkgpyexecdir = $(pythondir)/sugar
pkgpyexec_LTLIBRARIES = _sugarext.la
_sugarext_la_CFLAGS = \
+ $(WARN_CFLAGS) \
$(EXT_CFLAGS) \
$(PYTHON_INCLUDES)
diff --git a/src/sugar/_sugarext.override b/src/sugar/_sugarext.override
index db49e27..dc54de0 100644
--- a/src/sugar/_sugarext.override
+++ b/src/sugar/_sugarext.override
@@ -10,8 +10,8 @@ headers
#include "sugar-preview.h"
#include "sexy-icon-entry.h"
#include "gsm-session.h"
+#include "gsm-xsmp.h"
-#define EGG_SM_CLIENT_BACKEND_XSMP
#include "eggsmclient.h"
#include "eggsmclient-private.h"
diff --git a/src/sugar/eggsmclient-private.h b/src/sugar/eggsmclient-private.h
index 0b4ec40..d2958c9 100644
--- a/src/sugar/eggsmclient-private.h
+++ b/src/sugar/eggsmclient-private.h
@@ -25,6 +25,8 @@
G_BEGIN_DECLS
+#define EGG_SM_CLIENT_BACKEND_XSMP
+
GKeyFile *egg_sm_client_save_state (EggSMClient *client);
void egg_sm_client_quit_requested (EggSMClient *client);
void egg_sm_client_quit_cancelled (EggSMClient *client);
diff --git a/src/sugar/gsm-session.c b/src/sugar/gsm-session.c
index 95dd7cb..3f0714c 100644
--- a/src/sugar/gsm-session.c
+++ b/src/sugar/gsm-session.c
@@ -151,53 +151,6 @@ end_phase (GsmSession *session)
}
static void
-app_condition_changed (GsmApp *app, gboolean condition, gpointer data)
-{
- GsmSession *session;
- GsmClient *client = NULL;
- GSList *cl = NULL;
-
- g_return_if_fail (data != NULL);
-
- session = (GsmSession *) data;
-
- /* Check for an existing session client for this app */
- for (cl = session->clients; cl; cl = cl->next)
- {
- GsmClient *c = GSM_CLIENT (cl->data);
-
- if (!strcmp (app->client_id, gsm_client_get_client_id (c)))
- client = c;
- }
-
- if (condition)
- {
- GError *error = NULL;
-
- if (app->pid <= 0 && client == NULL)
- gsm_app_launch (app, &error);
-
- if (error != NULL)
- {
- g_warning ("Not able to launch autostart app from its condition: %s",
- error->message);
-
- g_error_free (error);
- }
- }
- else
- {
- /* Kill client in case condition if false and make sure it won't
- * be automatically restarted by adding the client to
- * condition_clients */
- session->condition_clients =
- g_slist_prepend (session->condition_clients, client);
- gsm_client_die (client);
- app->pid = -1;
- }
-}
-
-static void
app_registered (GsmApp *app, gpointer data)
{
GsmSession *session = data;
@@ -241,10 +194,6 @@ phase_timeout (gpointer data)
static void
start_phase (GsmSession *session)
{
- GsmApp *app;
- GSList *a;
- GError *err = NULL;
-
g_debug ("starting phase %d\n", session->phase);
g_slist_free (session->pending_apps);
@@ -359,8 +308,6 @@ client_saved_state (GsmClient *client, gpointer data)
void
gsm_session_initiate_shutdown (GsmSession *session)
{
- gboolean logout_prompt;
-
if (session->phase == GSM_SESSION_PHASE_SHUTDOWN)
{
/* Already shutting down, nothing more to do */
diff --git a/src/sugar/sugar-menu.h b/src/sugar/sugar-menu.h
index 8773a31..74ce891 100644
--- a/src/sugar/sugar-menu.h
+++ b/src/sugar/sugar-menu.h
@@ -50,6 +50,7 @@ void sugar_menu_set_active (SugarMenu *menu,
gboolean active);
void sugar_menu_embed (SugarMenu *menu,
GtkContainer *parent);
+void sugar_menu_unembed (SugarMenu *menu);
G_END_DECLS
diff --git a/src/sugar/sugar-preview.c b/src/sugar/sugar-preview.c
index f54045b..42fb9d3 100644
--- a/src/sugar/sugar-preview.c
+++ b/src/sugar/sugar-preview.c
@@ -19,6 +19,7 @@
#include <gdk/gdkx.h>
#include <gtk/gtkwindow.h>
+#include <X11/extensions/XShm.h>
#include "sugar-preview.h"
@@ -37,8 +38,6 @@ sugar_preview_set_size(SugarPreview *preview, int width, int height)
GdkPixbuf *
sugar_preview_get_pixbuf(SugarPreview *preview)
{
- GdkPixbuf *pixbuf;
-
if (preview->pixbuf != NULL) {
return preview->pixbuf;
}
@@ -92,7 +91,7 @@ sugar_preview_take_screenshot(SugarPreview *preview, GdkDrawable *drawable)
XShmGetImage(GDK_SCREEN_XDISPLAY(screen),
GDK_DRAWABLE_XID(drawable),
gdk_x11_image_get_ximage(preview->image),
- 0, 0, AllPlanes, ZPixmap);
+ 0, 0, AllPlanes);
}
static void