aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/e-shell.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/shell/e-shell.c b/shell/e-shell.c
index a9c2fdc22f..1e8cd3c0f9 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -46,10 +46,6 @@
#include "e-shell-window.h"
#include "e-shell-utils.h"
-#define E_SHELL_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE \
- ((obj), E_TYPE_SHELL, EShellPrivate))
-
struct _EShellPrivate {
GQueue alerts;
EShellSettings *settings;
@@ -697,7 +693,13 @@ shell_dispose (GObject *object)
EShellPrivate *priv;
EAlert *alert;
- priv = E_SHELL_GET_PRIVATE (object);
+ priv = E_SHELL (object)->priv;
+
+ while ((alert = g_queue_pop_head (&priv->alerts)) != NULL) {
+ g_signal_handlers_disconnect_by_func (
+ alert, shell_alert_response_cb, object);
+ g_object_unref (alert);
+ }
while ((alert = g_queue_pop_head (&priv->alerts)) != NULL) {
g_signal_handlers_disconnect_by_func (
@@ -745,7 +747,7 @@ shell_finalize (GObject *object)
{
EShellPrivate *priv;
- priv = E_SHELL_GET_PRIVATE (object);
+ priv = E_SHELL (object)->priv;
g_hash_table_destroy (priv->backends_by_name);
g_hash_table_destroy (priv->backends_by_scheme);
@@ -1160,7 +1162,8 @@ e_shell_init (EShell *shell)
GtkIconTheme *icon_theme;
EggSMClient *sm_client;
- shell->priv = E_SHELL_GET_PRIVATE (shell);
+ shell->priv = G_TYPE_INSTANCE_GET_PRIVATE (
+ shell, E_TYPE_SHELL, EShellPrivate);
backends_by_name = g_hash_table_new (g_str_hash, g_str_equal);
backends_by_scheme = g_hash_table_new (g_str_hash, g_str_equal);