aboutsummaryrefslogtreecommitdiff
path: root/src/send_message.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-09-17 07:26:17 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-09-17 07:26:17 +0000
commit71f191b2a609e291a3afcf726ab8aacab572637b (patch)
treefa744ee9944df82548c6afb33451455c4ce7c61a /src/send_message.c
parent24c2edfeacce97b6e4c3783c53cbd2532088af95 (diff)
introduced multi-threading.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2255 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/send_message.c')
-rw-r--r--src/send_message.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/send_message.c b/src/send_message.c
index db474602..c44232d4 100644
--- a/src/send_message.c
+++ b/src/send_message.c
@@ -795,9 +795,12 @@ static gint send_recv_message(Session *session, const gchar *msg, gpointer data)
g_return_val_if_fail(dialog != NULL, -1);
+ gdk_threads_enter();
+
switch (smtp_session->state) {
case SMTP_READY:
case SMTP_CONNECTED:
+ gdk_threads_leave();
return 0;
case SMTP_HELO:
g_snprintf(buf, sizeof(buf), _("Sending HELO..."));
@@ -832,14 +835,18 @@ static gint send_recv_message(Session *session, const gchar *msg, gpointer data)
break;
case SMTP_ERROR:
g_warning("send: error: %s\n", msg);
+ gdk_threads_leave();
return 0;
default:
+ gdk_threads_leave();
return 0;
}
progress_dialog_set_label(dialog->dialog, buf);
progress_dialog_set_row_status(dialog->dialog, 0, state_str);
+ gdk_threads_leave();
+
return 0;
}
@@ -855,6 +862,8 @@ static gint send_send_data_progressive(Session *session, guint cur_len,
SMTP_SESSION(session)->state != SMTP_EOM)
return 0;
+ gdk_threads_enter();
+
g_snprintf(buf, sizeof(buf), _("Sending message (%d / %d bytes)"),
cur_len, total_len);
progress_dialog_set_label(dialog->dialog, buf);
@@ -866,6 +875,7 @@ static gint send_send_data_progressive(Session *session, guint cur_len,
#ifdef G_OS_WIN32
GTK_EVENTS_FLUSH();
#endif
+ gdk_threads_leave();
return 0;
}
@@ -877,6 +887,7 @@ static gint send_send_data_finished(Session *session, guint len, gpointer data)
g_return_val_if_fail(dialog != NULL, -1);
send_send_data_progressive(session, len, len, dialog);
+
return 0;
}