aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-12-28 08:37:18 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-12-28 08:37:18 +0000
commitac0effafc80492aec8b9b8d19107bb9204c4e713 (patch)
treef71dced0ea416bee372c67864d2444ac0b364a60 /src/main.c
parentf4ab0f022c847485d347d1ce8cd2ffcde3497f56 (diff)
added missing lock on I/O callback (fixes freeze on remote commands).
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2408 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index ad698d8b..65a0e475 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1351,6 +1351,10 @@ static gboolean lock_socket_input_cb(GIOChannel *source, GIOCondition condition,
gint fd, sock;
gchar buf[BUFFSIZE];
+#if USE_THREADS
+ gdk_threads_enter();
+#endif
+
fd = g_io_channel_unix_get_fd(source);
sock = fd_accept(fd);
fd_gets(sock, buf, sizeof(buf));
@@ -1410,6 +1414,9 @@ static gboolean lock_socket_input_cb(GIOChannel *source, GIOCondition condition,
strretchomp(buf);
if (strlen(buf) < 6 || buf[4] != ' ') {
fd_close(sock);
+#if USE_THREADS
+ gdk_threads_leave();
+#endif
return TRUE;
}
open_message(buf + 5);
@@ -1420,6 +1427,10 @@ static gboolean lock_socket_input_cb(GIOChannel *source, GIOCondition condition,
fd_close(sock);
+#if USE_THREADS
+ gdk_threads_leave();
+#endif
+
return TRUE;
}