From: Ira W. Snyder Date: Fri, 18 Jan 2008 06:26:16 +0000 (-0800) Subject: Add debugging macros + use them X-Git-Url: https://www.irasnyder.com/gitweb/?p=tilda-gobject.git;a=commitdiff_plain;h=991bd2ff6b3b8d56e2ab8c0e2722848da74422c0 Add debugging macros + use them 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. --- diff --git a/tilda-terminal.c b/tilda-terminal.c index f31e797..38a353f 100644 --- a/tilda-terminal.c +++ b/tilda-terminal.c @@ -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; diff --git a/tilda-window.c b/tilda-window.c index 354155e..e7a4f24 100644 --- a/tilda-window.c +++ b/tilda-window.c @@ -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; iterms->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 --- 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 --- a/tilda.h +++ b/tilda.h @@ -1,8 +1,20 @@ #ifndef TILDA_H #define TILDA_H +#include #include +/* 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;