From: Dirk-Jan C. Binnema Date: Sat, 13 Jan 2007 13:26:00 +0000 (+0000) Subject: * modest-main, modest-debug.[ch], Makefile.am X-Git-Tag: git_migration_finished~4266 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=d43e126947075b066ac3563aa9c2996f1ba3becb * modest-main, modest-debug.[ch], Makefile.am - cleaned up modest-main a bit, moved debugging stuff to modest-debug.[ch] pmo-trunk-r613 --- diff --git a/src/Makefile.am b/src/Makefile.am index b0bfb8c..13d6230 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,6 @@ # # Makefile.am -# Time-stamp: <2006-11-28 17:42:40 (djcb)> +# Time-stamp: <2007-01-13 14:46:41 (djcb)> SUBDIRS=$(MODEST_PLATFORM) widgets DIST_SUBDIRS = widgets gtk maemo @@ -43,6 +43,8 @@ modest_SOURCES=\ modest-account-keys.h\ modest-account-mgr.h\ modest-account-mgr.c\ + modest-debug.c\ + modest-debug.h\ modest-icon-factory.c\ modest-icon-factory.h\ modest-tny-account-store.h\ diff --git a/src/modest-debug.c b/src/modest-debug.c new file mode 100644 index 0000000..ed6b553 --- /dev/null +++ b/src/modest-debug.c @@ -0,0 +1,87 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +/* http://primates.ximian.com/~federico/news-2006-04.html#memory-debugging-infrastructure*/ +ModestDebugFlags +modest_debug_get_debug_flags () +{ + GDebugKey debug_keys[] = { + { "abort-on-warning", MODEST_DEBUG_ABORT_ON_WARNING }, + { "log-actions", MODEST_DEBUG_LOG_ACTIONS }, + { "debug-objects", MODEST_DEBUG_DEBUG_OBJECTS }, + { "debug-signals", MODEST_DEBUG_DEBUG_SIGNALS } + }; + const gchar *str; + ModestDebugFlags debug_flags = -1; + + if (debug_flags != -1) + return debug_flags; + + str = g_getenv (MODEST_DEBUG); + + if (str != NULL) + debug_flags = g_parse_debug_string (str, debug_keys, G_N_ELEMENTS (debug_keys)); + else + debug_flags = 0; + + return debug_flags; +} + + +void +modest_debug_g_type_init (void) +{ + GTypeDebugFlags gflags; + ModestDebugFlags mflags; + + gflags = 0; + mflags = modest_debug_get_debug_flags (); + + if (mflags & MODEST_DEBUG_DEBUG_OBJECTS) + gflags |= G_TYPE_DEBUG_OBJECTS; + if (mflags & MODEST_DEBUG_DEBUG_SIGNALS) + gflags |= G_TYPE_DEBUG_SIGNALS; + + g_type_init_with_debug_flags (gflags); + +} + +void +modest_debug_logging_init (void) +{ + ModestDebugFlags mflags; + mflags = modest_debug_get_debug_flags (); + + if (mflags & MODEST_DEBUG_ABORT_ON_WARNING) + g_log_set_always_fatal (G_LOG_LEVEL_ERROR | + G_LOG_LEVEL_CRITICAL | + G_LOG_LEVEL_WARNING); +} diff --git a/src/modest-debug.h b/src/modest-debug.h new file mode 100644 index 0000000..a63717e --- /dev/null +++ b/src/modest-debug.h @@ -0,0 +1,78 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +#define MODEST_DEBUG "MODEST_DEBUG" + +typedef enum { + MODEST_DEBUG_ABORT_ON_WARNING = 1 << 0, + MODEST_DEBUG_LOG_ACTIONS = 1 << 1, /* not in use atm */ + MODEST_DEBUG_DEBUG_OBJECTS = 1 << 2, /* for g_type_init */ + MODEST_DEBUG_DEBUG_SIGNALS = 1 << 3 /* for g_type_init */ +} ModestDebugFlags; + + +/** + * modest_debug_get_flags + * + * get the debug flags for modest; they are read from the MODEST_DEBUG + * environment variable; the flags specified as strings, separated by ':'. + * Possible values are: + * - "abort-on-warning": abort the program when a gtk/glib/.. warning occurs. + * useful when running in debugger + * - "log-actions": log user actions (not in use atm) + * - "track-object": track the use of (g)objects in the program. this option influences + * g_type_init_with_debug_flags + * - "track-signals": track the use of (g)signals in the program. this option influences + * g_type_init_with_debug_flags + * if you would want to track signals and log actions, you could do something like: + * MODEST_DEBUG="log-actions:track-signals" ./modest + * NOTE that the flags will stay the same during the run of the program, even + * if the environment variable changes. + * + * Returns: the bitwise OR of the debug flags + */ +ModestDebugFlags modest_debug_get_flags (void) G_GNUC_CONST; + +/** + * modest_g_type_init + * + * do a g_type_init_with_debug_flags based on the modest debug flags + */ +void modest_debug_g_type_init (void); + +/** + * modest_g_type_init + * + * do set the logging based on the modest debug flags (ie. whether + * we should abort when a warning occurs. + */ +void modest_debug_logging_init (void); diff --git a/src/modest-main.c b/src/modest-main.c index 378f7bd..ceefd22 100644 --- a/src/modest-main.c +++ b/src/modest-main.c @@ -37,17 +37,17 @@ #include #include -#include "config.h" -#include "modest-conf.h" -#include "modest-account-mgr.h" -#include "modest-ui.h" -#include "modest-icon-factory.h" -#include "modest-tny-account-store.h" -#include "modest-tny-platform-factory.h" -#include "modest-mail-operation.h" - - -#if MODEST_PLATFORM_ID==2 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if MODEST_PLATFORM_ID==2 /* maemo */ #include #endif /* MODEST_PLATFORM==2 */ @@ -61,7 +61,6 @@ #define MODEST_ERR_SEND 6 static gboolean hildon_init (); /* NOP if HILDON is not defined */ - static int start_ui (const gchar* mailto, const gchar *cc, const gchar *bcc, const gchar* subject, const gchar *body, TnyAccountStore *account_store); @@ -76,16 +75,14 @@ main (int argc, char *argv[]) TnyPlatformFactory *fact = NULL; TnyAccountStore *account_store = NULL; ModestConf *modest_conf = NULL; - + GError *err = NULL; int retval = MODEST_ERR_NONE; - static gboolean debug=FALSE, batch=FALSE; + static gboolean batch=FALSE; static gchar *mailto, *subject, *bcc, *cc, *body; static GOptionEntry options[] = { - { "debug", 'd', 0, G_OPTION_ARG_NONE, &debug, - "Run in debug mode", NULL}, { "mailto", 'm', 0, G_OPTION_ARG_STRING, &mailto, "New email to (comma-separated)", NULL}, { "subject", 's', 0, G_OPTION_ARG_STRING, &subject, @@ -105,10 +102,11 @@ main (int argc, char *argv[]) bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); - g_type_init (); - g_thread_init (NULL); - gdk_threads_init (); + modest_debug_g_type_init (); + modest_debug_logging_init (); + g_thread_init (NULL); + context = g_option_context_new (NULL); g_option_context_add_main_entries (context, options, NULL); @@ -139,14 +137,12 @@ main (int argc, char *argv[]) retval = MODEST_ERR_RUN; goto cleanup; } - - if (debug) - g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING); if (!getenv("DISPLAY")) batch = TRUE; if (!batch) { + gdk_threads_init (); gtk_init (&argc, &argv); retval = start_ui (mailto, cc, bcc, subject, body, account_store); } else @@ -166,13 +162,9 @@ start_ui (const gchar* mailto, const gchar *cc, const gchar *bcc, const gchar* subject, const gchar *body, TnyAccountStore *account_store) { - ModestUI *modest_ui; - gint retval = 0; - - #ifndef OLD_UI_STUFF ModestWindow *win; - #endif + gint retval = 0; modest_ui = MODEST_UI(modest_ui_new (account_store)); if (!modest_ui) { @@ -220,7 +212,7 @@ cleanup: modest_icon_factory_uninit (); return retval; } - + static gboolean hildon_init () @@ -241,7 +233,6 @@ hildon_init () } - static int send_mail (const gchar* mailto, const gchar *cc, const gchar *bcc, const gchar* subject, const gchar *body) @@ -277,11 +268,11 @@ send_mail (const gchar* mailto, const gchar *cc, const gchar *bcc, mail_operation = modest_mail_operation_new (); modest_mail_operation_send_new_mail (mail_operation, - account, - "djcb@djcbsoftware.nl", mailto, cc, bcc, + account, "test@example.com", + mailto, cc, bcc, subject, body, NULL); - - + + if (modest_mail_operation_get_status (mail_operation) == MODEST_MAIL_OPERATION_STATUS_FAILED) { retval = MODEST_ERR_SEND; @@ -290,9 +281,12 @@ send_mail (const gchar* mailto, const gchar *cc, const gchar *bcc, retval = MODEST_ERR_NONE; /* hurray! */ cleanup: - if (iter) g_object_unref (G_OBJECT (iter)); - if (accounts) g_object_unref (G_OBJECT (accounts)); - if (mail_operation) g_object_unref (G_OBJECT (mail_operation)); + if (iter) + g_object_unref (G_OBJECT (iter)); + if (accounts) + g_object_unref (G_OBJECT (accounts)); + if (mail_operation) + g_object_unref (G_OBJECT (mail_operation)); return retval; }