Add debugging macros + use them
authorIra W. Snyder <devel@irasnyder.com>
Fri, 18 Jan 2008 06:26:16 +0000 (22:26 -0800)
committerIra W. Snyder <devel@irasnyder.com>
Fri, 18 Jan 2008 06:26:16 +0000 (22:26 -0800)
This adds three debugging macros (debug_enter(), debug_assert() and
debug_printf() for use printing debugging information. They are #define'd
in the same style as those in the Linux Kernel.

If DEBUG is defined, they do something useful, otherwise, they are compiled
away to nothing.

tilda-terminal.c
tilda-window.c
tilda.c
tilda.h

index f31e797..38a353f 100644 (file)
@@ -14,6 +14,9 @@
 static void
 tilda_terminal_dbus_register_object (TildaTerminal *tt)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_TERMINAL(tt));
+
        gchar *object_path;
 
        // Register this object with DBus
@@ -32,6 +35,9 @@ tilda_terminal_dbus_register_object (TildaTerminal *tt)
 static gboolean
 tilda_terminal_start_shell (TildaTerminal *tt)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_TERMINAL(tt));
+
        gint ret;
        gint argc;
        gchar **argv;
@@ -102,6 +108,10 @@ launch_default_shell:
 static void
 tilda_terminal_child_exited_cb (GtkWidget *widget, gpointer data)
 {
+       debug_enter  ();
+       debug_assert (GTK_IS_WIDGET(widget));
+       debug_assert (TILDA_IS_TERMINAL(data));
+
        TildaTerminal *self = TILDA_TERMINAL(data);
 
        /* These can stay here. They don't need to go into a header because
@@ -133,6 +143,10 @@ tilda_terminal_child_exited_cb (GtkWidget *widget, gpointer data)
 static void
 tilda_terminal_window_title_changed_cb (GtkWidget *widget, gpointer data)
 {
+       debug_enter  ();
+       debug_assert (GTK_IS_WIDGET(widget));
+       debug_assert (TILDA_IS_TERMINAL(data));
+
        TildaTerminal *self = TILDA_TERMINAL(data);
        TildaWindow *parent_window = TILDA_WINDOW(self->parent_window);
        GtkWidget *label;
@@ -168,9 +182,9 @@ tilda_terminal_window_title_changed_cb (GtkWidget *widget, gpointer data)
                        new_title = g_strdup_printf ("%s - %s", self->title, vte_title);
                        break;
 
-               case NOT_DISPLAYED:
                default:
-                       g_printerr (_("FIXME: Bad value of self->dynamic_title\n"));
+                       debug_printf ("ERROR: Bad value of self->dynamic_title\n");
+               case NOT_DISPLAYED:
                        new_title = g_strdup(self->title);
                        break;
        }
@@ -188,6 +202,11 @@ tilda_terminal_button_press_cb (GtkWidget      *widget,
                                                                GdkEventButton *event,
                                                                gpointer        data)
 {
+       debug_enter  ();
+       debug_assert (GTK_IS_WIDGET(widget));
+       debug_assert (TILDA_IS_TERMINAL(data));
+       debug_printf ("event->button = %d\n", event->button);
+
        GError *error = NULL;
        TildaTerminal *self = TILDA_TERMINAL(data);
        VteTerminal *terminal = VTE_TERMINAL(self->vte_term);
@@ -216,14 +235,12 @@ tilda_terminal_button_press_cb (GtkWidget      *widget,
                        /* Check if we can launch a web browser, and do so if possible */
                        if ((event->state & GDK_CONTROL_MASK) && match != NULL)
                        {
-#if DEBUG
-                               g_print ("Got a Ctrl+Left Click -- Matched: `%s' (%d)\n", match, tag);
-#endif
                                web_browser_cmd = g_strescape (self->web_browser, NULL);
                                cmd = g_strdup_printf ("%s %s", web_browser_cmd, match);
-#if DEBUG
-                               g_print ("Launching command: `%s'\n", cmd);
-#endif
+
+                               debug_printf ("Got a Ctrl+Left-Click -- match: '%s' tag: %d\n", match, tag);
+                               debug_printf ("Launching command: '%s'\n", cmd);
+
                                ret = g_spawn_command_line_async(cmd, &error);
 
                                /* Check that the command launched */
@@ -255,6 +272,9 @@ tilda_terminal_button_press_cb (GtkWidget      *widget,
 static void
 tilda_terminal_set_transparent (TildaTerminal *self)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_TERMINAL(self));
+
        TildaWindow *parent_window = TILDA_WINDOW(self->parent_window);
        gdouble temp;
 
@@ -285,6 +305,9 @@ tilda_terminal_set_transparent (TildaTerminal *self)
 static void
 tilda_terminal_set_scrollbar_position (TildaTerminal *self)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_TERMINAL(self));
+
        enum scrollbar_positions { DISABLED, LEFT, RIGHT };
        switch (self->scrollbar_position)
        {
@@ -298,8 +321,9 @@ tilda_terminal_set_scrollbar_position (TildaTerminal *self)
                        gtk_widget_show (self->scrollbar);
                        break;
 
-               case DISABLED:
                default:
+                       debug_printf ("ERROR: Bad scrollbar position\n");
+               case DISABLED:
                        gtk_widget_hide (self->scrollbar);
                        break;
        }
@@ -349,6 +373,8 @@ static void
 tilda_terminal_instance_init (GTypeInstance *instance,
                                                          gpointer       g_class)
 {
+       debug_enter ();
+
        TildaTerminal *self = (TildaTerminal *) instance;
 
        /* Initialize instance members and allocate any necessary memory here.
@@ -373,32 +399,31 @@ tilda_terminal_set_property (GObject      *object,
 
                case TILDA_TERMINAL_NUMBER:
                        self->number = g_value_get_int (value);
-                       g_print ("terminal number: %d\n", self->number);
+                       debug_printf ("terminal number: %d\n", self->number);
                        break;
 
                case TILDA_TERMINAL_WINDOW_NUMBER:
                        self->window_number = g_value_get_int (value);
-                       g_print ("terminal parent window number: %d\n", self->window_number);
+                       debug_printf ("terminal parent window number: %d\n", self->window_number);
                        break;
 
                case TILDA_TERMINAL_TW:
                        self->parent_window = g_value_get_pointer (value);
-                       g_print ("terminal parent window: 0x%x\n", self->parent_window);
-                       g_print ("terminal parent window number (direct): %d\n", TILDA_WINDOW(self->parent_window)->number);
+                       debug_printf ("terminal parent window: 0x%x\n", self->parent_window);
                        break;
 
                case TILDA_TERMINAL_BACKGROUND_IMAGE:
                        g_free (self->background_image);
                        self->background_image = g_value_dup_string (value);
                        vte_terminal_set_background_image_file (VTE_TERMINAL(self->vte_term), self->background_image);
-                       g_print ("terminal back img: %s\n", self->background_image);
+                       debug_printf ("terminal back img: %s\n", self->background_image);
                        break;
 
                case TILDA_TERMINAL_SHELL:
                        g_free (self->shell);
                        self->shell = g_value_dup_string (value);
                        tilda_terminal_start_shell (self);
-                       g_print ("terminal shell: %s\n", self->shell);
+                       debug_printf ("terminal shell: %s\n", self->shell);
                        break;
 
                case TILDA_TERMINAL_FONT:
@@ -407,83 +432,83 @@ tilda_terminal_set_property (GObject      *object,
                        vte_terminal_set_font_from_string_full (VTE_TERMINAL(self->vte_term),
                                                                                                        self->font,
                                                                                                        self->antialiased);
-                       g_print ("terminal font: %s\n", self->font);
+                       debug_printf ("terminal font: %s\n", self->font);
                        break;
 
                case TILDA_TERMINAL_TITLE:
                        g_free (self->title);
                        self->title = g_value_dup_string (value);
-                       g_print ("terminal title: %s\n", self->title);
+                       debug_printf ("terminal title: %s\n", self->title);
                        break;
 
                case TILDA_TERMINAL_WORKING_DIRECTORY:
                        g_free (self->working_directory);
                        self->working_directory = g_value_dup_string (value);
-                       g_print ("terminal wrk dir: %s\n", self->working_directory);
+                       debug_printf ("terminal wrk dir: %s\n", self->working_directory);
                        break;
 
                case TILDA_TERMINAL_WEB_BROWSER:
                        g_free (self->web_browser);
                        self->web_browser = g_value_dup_string (value);
-                       g_print ("terminal web browser: %s\n", self->web_browser);
+                       debug_printf ("terminal web browser: %s\n", self->web_browser);
                        break;
 
                case TILDA_TERMINAL_SCROLLBACK_LINES:
                        self->scrollback_lines = g_value_get_int (value);
                        vte_terminal_set_scrollback_lines (VTE_TERMINAL(self->vte_term), self->scrollback_lines);
-                       g_print ("terminal scrollback lines: %d\n", self->scrollback_lines);
+                       debug_printf ("terminal scrollback lines: %d\n", self->scrollback_lines);
                        break;
 
                case TILDA_TERMINAL_TRANSPARENCY_PERCENT:
                        self->transparency_percent = g_value_get_int (value);
                        tilda_terminal_set_transparent (self);
-                       g_print ("terminal transp percent: %d\n", self->transparency_percent);
+                       debug_printf ("terminal transp percent: %d\n", self->transparency_percent);
                        break;
 
                case TILDA_TERMINAL_BACKSPACE_BINDING:
                        self->backspace_binding = g_value_get_int (value);
                        vte_terminal_set_backspace_binding (VTE_TERMINAL(self->vte_term), self->backspace_binding);
-                       g_print ("terminal backspace key: %d\n", self->backspace_binding);
+                       debug_printf ("terminal backspace key: %d\n", self->backspace_binding);
                        break;
 
                case TILDA_TERMINAL_DELETE_BINDING:
                        self->delete_binding = g_value_get_int (value);
                        vte_terminal_set_delete_binding (VTE_TERMINAL(self->vte_term), self->delete_binding);
-                       g_print ("terminal delete key: %d\n", self->delete_binding);
+                       debug_printf ("terminal delete key: %d\n", self->delete_binding);
                        break;
 
                case TILDA_TERMINAL_DYNAMIC_TITLE:
                        self->dynamic_title = g_value_get_int (value);
-                       g_print ("terminal dynamic title: %d\n", self->dynamic_title);
+                       debug_printf ("terminal dynamic title: %d\n", self->dynamic_title);
                        break;
 
                case TILDA_TERMINAL_EXIT_ACTION:
                        self->exit_action = g_value_get_int (value);
-                       g_print ("terminal exit action: %d\n", self->exit_action);
+                       debug_printf ("terminal exit action: %d\n", self->exit_action);
                        break;
 
                case TILDA_TERMINAL_SCROLLBAR_POSITION:
                        self->scrollbar_position = g_value_get_int (value);
                        tilda_terminal_set_scrollbar_position (self);
-                       g_print ("terminal scrollbar position: %d\n", self->scrollbar_position);
+                       debug_printf ("terminal scrollbar position: %d\n", self->scrollbar_position);
                        break;
 
                case TILDA_TERMINAL_SCROLL_BACKGROUND:
                        self->scroll_background = g_value_get_boolean (value);
                        vte_terminal_set_scroll_background (VTE_TERMINAL(self->vte_term), self->scroll_background);
-                       g_print ("terminal scroll background: %d\n", self->scroll_background);
+                       debug_printf ("terminal scroll background: %d\n", self->scroll_background);
                        break;
 
                case TILDA_TERMINAL_SCROLL_ON_OUTPUT:
                        self->scroll_on_output = g_value_get_boolean (value);
                        vte_terminal_set_scroll_on_output (VTE_TERMINAL(self->vte_term), self->scroll_on_output);
-                       g_print ("terminal scroll on output: %d\n", self->scroll_on_output);
+                       debug_printf ("terminal scroll on output: %d\n", self->scroll_on_output);
                        break;
 
                case TILDA_TERMINAL_SCROLL_ON_KEYSTROKE:
                        self->scroll_on_keystroke = g_value_get_boolean (value);
                        vte_terminal_set_scroll_on_keystroke (VTE_TERMINAL(self->vte_term), self->scroll_on_keystroke);
-                       g_print ("terminal scroll on keystroke: %d\n", self->scroll_on_keystroke);
+                       debug_printf ("terminal scroll on keystroke: %d\n", self->scroll_on_keystroke);
                        break;
 
                case TILDA_TERMINAL_ANTIALIASED:
@@ -491,43 +516,43 @@ tilda_terminal_set_property (GObject      *object,
                        vte_terminal_set_font_from_string_full (VTE_TERMINAL(self->vte_term),
                                                                                                        self->font,
                                                                                                        self->antialiased);
-                       g_print ("terminal antialiased: %d\n", self->antialiased);
+                       debug_printf ("terminal antialiased: %d\n", self->antialiased);
                        break;
 
                case TILDA_TERMINAL_ALLOW_BOLD_TEXT:
                        self->allow_bold_text = g_value_get_boolean (value);
                        vte_terminal_set_allow_bold (VTE_TERMINAL(self->vte_term), self->allow_bold_text);
-                       g_print ("terminal allow bold text: %d\n", self->allow_bold_text);
+                       debug_printf ("terminal allow bold text: %d\n", self->allow_bold_text);
                        break;
 
                case TILDA_TERMINAL_CURSOR_BLINKS:
                        self->cursor_blinks = g_value_get_boolean (value);
                        vte_terminal_set_cursor_blinks (VTE_TERMINAL(self->vte_term), self->cursor_blinks);
-                       g_print ("terminal cursor blinks: %d\n", self->cursor_blinks);
+                       debug_printf ("terminal cursor blinks: %d\n", self->cursor_blinks);
                        break;
 
                case TILDA_TERMINAL_AUDIBLE_BELL:
                        self->audible_bell = g_value_get_boolean (value);
                        vte_terminal_set_audible_bell (VTE_TERMINAL(self->vte_term), self->audible_bell);
-                       g_print ("terminal audible bell: %d\n", self->audible_bell);
+                       debug_printf ("terminal audible bell: %d\n", self->audible_bell);
                        break;
 
                case TILDA_TERMINAL_VISIBLE_BELL:
                        self->visible_bell = g_value_get_boolean (value);
                        vte_terminal_set_visible_bell (VTE_TERMINAL(self->vte_term), self->visible_bell);
-                       g_print ("terminal visible bell: %d\n", self->visible_bell);
+                       debug_printf ("terminal visible bell: %d\n", self->visible_bell);
                        break;
 
                case TILDA_TERMINAL_DOUBLE_BUFFERED:
                        self->double_buffered = g_value_get_boolean (value);
                        gtk_widget_set_double_buffered (GTK_WIDGET(self->vte_term), self->double_buffered);
-                       g_print ("terminal double buffered: %d\n", self->double_buffered);
+                       debug_printf ("terminal double buffered: %d\n", self->double_buffered);
                        break;
 
                case TILDA_TERMINAL_MOUSE_AUTOHIDE:
                        self->mouse_autohide = g_value_get_boolean (value);
                        vte_terminal_set_mouse_autohide (VTE_TERMINAL(self->vte_term), self->mouse_autohide);
-                       g_print ("terminal mouse autohide: %d\n", self->mouse_autohide);
+                       debug_printf ("terminal mouse autohide: %d\n", self->mouse_autohide);
                        break;
 
                default:
@@ -662,6 +687,8 @@ tilda_terminal_constructor (GType                  type,
                                                        guint                  n_construct_properties,
                                                        GObjectConstructParam *construct_properties)
 {
+       debug_enter ();
+
        GObject *obj;
        TildaTerminal *self;
        gint ret;
@@ -711,6 +738,8 @@ tilda_terminal_constructor (GType                  type,
 static void
 tilda_terminal_dispose (GObject *obj)
 {
+       debug_enter ();
+
        TildaTerminal *self = (TildaTerminal *) obj;
 
        /* We don't want to run dispose twice, so just return immediately */
@@ -733,6 +762,8 @@ tilda_terminal_dispose (GObject *obj)
 static void
 tilda_terminal_finalize (GObject *obj)
 {
+       debug_enter ();
+
        TildaTerminal *self = (TildaTerminal *) obj;
 
        /*
@@ -756,6 +787,8 @@ static void
 tilda_terminal_class_init (gpointer g_class,
                                                   gpointer g_class_data)
 {
+       debug_enter ();
+
        GObjectClass *gobject_class = G_OBJECT_CLASS (g_class);
        TildaTerminalClass *klass = TILDA_TERMINAL_CLASS (g_class);
        GParamSpec *pspec;
index 354155e..e7a4f24 100644 (file)
@@ -10,6 +10,9 @@
 static TildaTerminal *
 tilda_window_find_current_terminal (TildaWindow *self)
 {
+       debug_enter();
+       debug_assert (TILDA_IS_WINDOW(self));
+
        gint i;
        TildaTerminal *ret;
        gint current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK(self->notebook));
@@ -23,13 +26,16 @@ tilda_window_find_current_terminal (TildaWindow *self)
                        return ret;
        }
 
-       g_printerr ("FIXME: unable to find current terminal!\n");
+       debug_printf ("ERROR: unable to find current terminal!\n");
        return NULL;
 }
 
 static gint
 tilda_window_find_next_free_terminal_number (TildaWindow *tw)
 {
+       debug_enter ();
+       debug_assert (TILDA_IS_WINDOW(tw));
+
        gint i, j;
        gboolean found;
 
@@ -58,6 +64,9 @@ tilda_window_find_next_free_terminal_number (TildaWindow *tw)
 static gboolean
 tilda_window_add_term (TildaWindow *tw)
 {
+       debug_enter ();
+       debug_assert (TILDA_IS_WINDOW(tw));
+
        gint number;
        TildaTerminal *tt;
 
@@ -89,6 +98,10 @@ tilda_window_add_term (TildaWindow *tw)
 gboolean
 tilda_window_remove_term (TildaWindow *tw, gint terminal_number)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_WINDOW(tw));
+       debug_assert (terminal_number >= 0);
+
        gint i;
 
        for (i=0; i<tw->terms->len; ++i)
@@ -102,7 +115,7 @@ tilda_window_remove_term (TildaWindow *tw, gint terminal_number)
                        /* Make sure the index was valid */
                        if (notebook_index == -1)
                        {
-                               g_printerr ("DEBUG ERROR: Bad Notebook Tab\n");
+                               debug_printf ("ERROR: Bad Notebook Tab\n");
                                return FALSE;
                        }
 
@@ -138,6 +151,9 @@ tilda_window_remove_term (TildaWindow *tw, gint terminal_number)
 static void
 tilda_window_setup_real_transparency (TildaWindow *self)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_WINDOW(self));
+
        GdkScreen *screen;
        GdkColormap *colormap;
 
@@ -160,6 +176,9 @@ tilda_window_setup_real_transparency (TildaWindow *self)
 static void
 tilda_window_center_horizontally (TildaWindow *self)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_WINDOW(self));
+
        const gint screen_center = gdk_screen_width() / 2;
        const gint tilda_center  = self->width / 2;
        const gint center_coord  = screen_center - tilda_center;
@@ -171,6 +190,9 @@ tilda_window_center_horizontally (TildaWindow *self)
 static void
 tilda_window_center_vertically (TildaWindow *self)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_WINDOW(self));
+
        const gint screen_center = gdk_screen_height() / 2;
        const gint tilda_center  = self->height / 2;
        const gint center_coord  = screen_center - tilda_center;
@@ -181,6 +203,9 @@ tilda_window_center_vertically (TildaWindow *self)
 static void
 tilda_window_keybinding_cb (const gchar *keystr, gpointer data)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_WINDOW(data));
+
        TildaWindow *self = TILDA_WINDOW(data);
        TildaTerminal *tt;
 
@@ -221,7 +246,7 @@ tilda_window_keybinding_cb (const gchar *keystr, gpointer data)
                        break;
 
                default:
-                       g_printerr ("FIXME: the window is in a bad state!\n");
+                       debug_printf ("ERROR: Window is in a bad state!\n");
 
                        /* Pretend we're down, for good measure.... */
                        self->state = WINDOW_DOWN;
@@ -237,6 +262,9 @@ tilda_window_keybinding_cb (const gchar *keystr, gpointer data)
 static gboolean
 tilda_window_try_to_bind_key (TildaWindow *self, const gchar *new_key)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_WINDOW(self));
+
        gboolean ret = FALSE;
 
        /* Make sure the new key is not null in any way */
@@ -277,6 +305,9 @@ tilda_window_try_to_bind_key (TildaWindow *self, const gchar *new_key)
 static void
 tilda_window_dbus_register_object (TildaWindow *tw)
 {
+       debug_enter  ();
+       debug_assert (TILDA_IS_WINDOW(tw));
+
        gchar *object_path;
 
        // Register this object with DBus
@@ -319,6 +350,8 @@ static void
 tilda_window_instance_init (GTypeInstance *instance,
                                                        gpointer       g_class)
 {
+       debug_enter ();
+
        TildaWindow *self = (TildaWindow *) instance;
        self->dispose_has_run = FALSE;
 
@@ -345,66 +378,66 @@ tilda_window_set_property (GObject      *object,
 
                case TILDA_WINDOW_NUMBER:
                        self->number = g_value_get_int (value);
-                       g_print ("window number: %d\n", self->number);
+                       debug_printf ("window number: %d\n", self->number);
                        break;
 
                case TILDA_WINDOW_KEY:
                        tilda_window_try_to_bind_key (self, g_value_get_string (value));
-                       g_print ("window key: %s\n", self->key);
+                       debug_printf ("window key %s\n", self->key);
                        break;
 
                case TILDA_WINDOW_HEIGHT:
                        self->height = g_value_get_int (value);
                        gtk_widget_set_size_request (self->window, self->width, self->height);
                        gtk_window_resize (GTK_WINDOW(self->window), self->width, self->height);
-                       g_print ("window height: %d\n", self->height);
+                       debug_printf ("window height: %d\n", self->height);
                        break;
 
                case TILDA_WINDOW_WIDTH:
                        self->width = g_value_get_int (value);
                        gtk_widget_set_size_request (self->window, self->width, self->height);
                        gtk_window_resize (GTK_WINDOW(self->window), self->width, self->height);
-                       g_print ("window width: %d\n", self->width);
+                       debug_printf ("window width: %d\n", self->width);
                        break;
 
                case TILDA_WINDOW_X_POSITION:
                        self->x_position = g_value_get_int (value);
                        gtk_window_move (GTK_WINDOW(self->window), self->x_position, self->y_position);
-                       g_print ("window x position: %d\n", self->x_position);
+                       debug_printf ("window x position: %d\n", self->x_position);
                        break;
 
                case TILDA_WINDOW_Y_POSITION:
                        self->y_position = g_value_get_int (value);
                        gtk_window_move (GTK_WINDOW(self->window), self->x_position, self->y_position);
-                       g_print ("window y position: %d\n", self->y_position);
+                       debug_printf ("window y position: %d\n", self->y_position);
                        break;
 
                case TILDA_WINDOW_TAB_POSITION:
                        self->tab_position = g_value_get_int (value);
                        gtk_notebook_set_tab_pos (GTK_NOTEBOOK(self->notebook), self->tab_position);
-                       g_print ("window tab position: %d\n", self->tab_position);
+                       debug_printf ("window tab position: %d\n", self->tab_position);
                        break;
 
                case TILDA_WINDOW_ANIMATION_ORIENTATION:
                        self->animation_orientation = g_value_get_int (value);
-                       g_print ("window animation orientation: %d\n", self->animation_orientation);
+                       debug_printf ("window animation orientation: %d\n", self->animation_orientation);
                        break;
 
                case TILDA_WINDOW_ANIMATION_DELAY:
                        self->animation_delay = g_value_get_int (value);
-                       g_print ("window animation delay: %d\n", self->animation_delay);
+                       debug_printf ("window animation delay: %d\n", self->animation_delay);
                        break;
 
                case TILDA_WINDOW_KEEP_ABOVE:
                        self->keep_above = g_value_get_boolean (value);
                        gtk_window_set_keep_above (GTK_WINDOW(self->window), self->keep_above);
-                       g_print ("window keep above: %d\n", self->keep_above);
+                       debug_printf ("window keep above: %d\n", self->keep_above);
                        break;
 
                case TILDA_WINDOW_SKIP_TASKBAR_HINT:
                        self->skip_taskbar_hint = g_value_get_boolean (value);
                        gtk_window_set_skip_taskbar_hint (GTK_WINDOW(self->window), self->skip_taskbar_hint);
-                       g_print ("window skip taskbar hint: %d\n", self->skip_taskbar_hint);
+                       debug_printf ("window skip taskbar hint: %d\n", self->skip_taskbar_hint);
                        break;
 
                case TILDA_WINDOW_STICK:
@@ -413,31 +446,31 @@ tilda_window_set_property (GObject      *object,
                        /* This is moderately ugly, but GTK+ does it this way... */
                        self->stick ? gtk_window_stick (GTK_WINDOW(self->window))
                                                : gtk_window_unstick (GTK_WINDOW(self->window));
-                       g_print ("window stick: %d\n", self->stick);
+                       debug_printf ("window stick: %d\n", self->stick);
                        break;
 
                case TILDA_WINDOW_HIDDEN_AT_START:
                        self->hidden_at_start = g_value_get_boolean (value);
-                       g_print ("window hidden at start: %d\n", self->hidden_at_start);
+                       debug_printf ("window hidden at start: %d\n", self->hidden_at_start);
                        break;
 
                case TILDA_WINDOW_CENTERED_HORIZONTALLY:
                        self->centered_horizontally = g_value_get_boolean (value);
                        if (self->centered_horizontally)
                                tilda_window_center_horizontally (self);
-                       g_print ("window centered horizontally: %d\n", self->centered_horizontally);
+                       debug_printf ("window centered horizontally: %d\n", self->centered_horizontally);
                        break;
 
                case TILDA_WINDOW_CENTERED_VERTICALLY:
                        self->centered_vertically = g_value_get_boolean (value);
                        if (self->centered_vertically)
                                tilda_window_center_vertically (self);
-                       g_print ("window centered vertically: %d\n", self->centered_vertically);
+                       debug_printf ("window centered vertically: %d\n", self->centered_vertically);
                        break;
 
                case TILDA_WINDOW_HAVE_REAL_TRANSPARENCY:
                        self->have_real_transparency = g_value_get_boolean (value);
-                       g_print ("window have real transp: %d\n", self->have_real_transparency);
+                       debug_printf ("window have real transp: %d\n", self->have_real_transparency);
                        break;
 
                default:
@@ -533,6 +566,8 @@ tilda_window_constructor (GType                  type,
                                                  guint                  n_construct_properties,
                                                  GObjectConstructParam *construct_properties)
 {
+       debug_enter ();
+
        GObject *obj;
        TildaWindow *self;
 
@@ -587,12 +622,17 @@ tilda_window_constructor (GType                  type,
 static void
 my_unref (gpointer data, gpointer user_data)
 {
+       debug_enter ();
+
+       // FIXME: This function should probably be eliminated. It /is/ rather ugly
        g_object_unref (G_OBJECT(data));
 }
 
 static void
 tilda_window_dispose (GObject *obj)
 {
+       debug_enter ();
+
        TildaWindow *self = (TildaWindow *) obj;
 
        /* We don't want to run dispose twice, so just return immediately */
@@ -618,6 +658,8 @@ tilda_window_dispose (GObject *obj)
 static void
 tilda_window_finalize (GObject *obj)
 {
+       debug_enter ();
+
        TildaWindow *self = (TildaWindow *) obj;
 
        /*
@@ -636,6 +678,8 @@ static void
 tilda_window_class_init (gpointer g_class,
                                                 gpointer g_class_data)
 {
+       debug_enter ();
+
        GObjectClass *gobject_class = G_OBJECT_CLASS (g_class);
        TildaWindowClass *klass = TILDA_WINDOW_CLASS (g_class);
        GParamSpec *pspec;
@@ -823,8 +867,6 @@ tilda_window_class_init (gpointer g_class,
                                                                         TILDA_WINDOW_HAVE_REAL_TRANSPARENCY,
                                                                         pspec);
 
-       /* TODO: more properties */
-
        /* Hook the TildaWindow type into DBus */
        dbus_g_object_type_install_info (tilda_window_get_type(), &dbus_glib_tilda_window_object_info);
 }
diff --git a/tilda.c b/tilda.c
index 04c965a..e13ca49 100644 (file)
--- a/tilda.c
+++ b/tilda.c
@@ -10,7 +10,9 @@ GPtrArray *windows;
 static void
 tilda_initialize_dbus ()
 {
-       const gchar service_name[] = "net.sourceforge.Tilda";
+       debug_enter  ();
+
+       static const gchar service_name[] = "net.sourceforge.Tilda";
        GError *error = NULL;
        DBusGProxy *driver_proxy;
        int request_ret;
@@ -45,6 +47,8 @@ tilda_initialize_dbus ()
 static gint
 tilda_find_next_free_window_number ()
 {
+       debug_enter  ();
+
        gint i, j;
        gboolean found;
 
@@ -73,6 +77,8 @@ tilda_find_next_free_window_number ()
 static TildaWindow *
 tilda_add_window ()
 {
+       debug_enter ();
+
        TildaWindow *ret;
        gint number;
 
@@ -81,13 +87,15 @@ tilda_add_window ()
 
        g_ptr_array_add (windows, ret);
 
-       g_print ("Adding window: 0x%x (number %d of %d)\n", ret, ret->number, windows->len);
+       debug_printf ("Adding window: 0x%x (number %d of %d)\n", ret, ret->number, windows->len-1);
        return ret;
 }
 
 static void
 tilda_del_window (gint number)
 {
+       debug_enter ();
+
        gint i;
        TildaWindow *win;
 
@@ -97,7 +105,7 @@ tilda_del_window (gint number)
 
                if (win->number == number)
                {
-                       g_print ("Deleting window 0x%x (number %d)\n", win, win->number);
+                       debug_printf ("Deleting window 0x%x (number %d of %d)\n", win, win->number, windows->len-1);
                        g_ptr_array_remove_index (windows, i);
                        g_object_unref (G_OBJECT(win));
                        break;
@@ -107,6 +115,8 @@ tilda_del_window (gint number)
 
 int main (int argc, char *argv[])
 {
+       debug_enter ();
+
        TildaWindow *tw;
 
        /* Initialize GTK+ (and the GObject system) */
@@ -128,7 +138,9 @@ int main (int argc, char *argv[])
         * and TildaTerminal. */
        tw = tilda_add_window ();
 
+       debug_printf ("Starting gtk_main()!\n");
        gtk_main ();
+       debug_printf ("Out of gtk_main(), going down\n");
 
        return 0;
 }
diff --git a/tilda.h b/tilda.h
index 77dbe53..c0df133 100644 (file)
--- a/tilda.h
+++ b/tilda.h
@@ -1,8 +1,20 @@
 #ifndef TILDA_H
 #define TILDA_H
 
+#include <assert.h>
 #include <dbus/dbus-glib-bindings.h>
 
+/* Optional debugging macros */
+#ifdef DEBUG
+       #define debug_enter() do { g_printf ("debug enter: %s\n", __func__); } while (0)
+       #define debug_printf(args...) do { g_printf ("debug: " args); } while (0)
+       #define debug_assert(args...) do { g_assert (args); } while (0)
+#else
+       #define debug_enter()         do { /* nothing */ } while (0)
+       #define debug_printf(args...) do { /* nothing */ } while (0)
+       #define debug_assert(args...) do { /* nothing */ } while (0)
+#endif
+
 /* Project-global variables */
 extern DBusGConnection *dbus_connection;