diff src/gtk/transfer.c @ 511:c3ff4479a92d

2004-7-25 Brian Masney <masneyb@gftp.org> * src/gtk/transfer.c - when spawning a thread to get the subdirectories, don't refresh the local directory listing. Also added custom connect/disconnect functions so that timeouts can be handled properly. * src/gtk/delete_dialog.c - make sure that 2 connections to the server don't get established * src/uicommon/gftpui.c src/uicommon/gftpui.h - added dont_refresh variable to gftpui_callback_data structure. If this is true, then it will not run gftpui_refresh() after the thread terminates
author masneyb
date Sun, 25 Jul 2004 14:15:00 +0000
parents a95c5acdacf6
children e55d8b35d809
line wrap: on
line diff
--- a/src/gtk/transfer.c	Sat Jul 24 12:43:03 2004 +0000
+++ b/src/gtk/transfer.c	Sun Jul 25 14:15:00 2004 +0000
@@ -33,6 +33,7 @@
   cdata->request = wdata->request;
   cdata->uidata = wdata;
   cdata->run_function = gftpui_common_run_ls;
+  cdata->dont_refresh = 1;
 
   gftpui_common_run_callback_function (cdata);
 
@@ -168,6 +169,49 @@
 
 
 static int
+gftpui_gtk_tdata_connect (gftpui_callback_data * cdata)
+{
+  gftp_transfer * tdata;
+  int ret;
+
+  tdata = cdata->user_data;
+
+  if (tdata->fromreq != NULL)
+    {
+      ret = gftp_connect (tdata->fromreq);
+      if (ret < 0)
+        return (ret);
+    }
+
+  if (tdata->toreq != NULL)
+    {
+      ret = gftp_connect (tdata->toreq);
+      if (ret < 0)
+        return (ret);
+    }
+
+  return (0);
+}
+
+
+static void
+gftpui_gtk_tdata_disconnect (gftpui_callback_data * cdata)
+{
+  gftp_transfer * tdata;
+
+  tdata = cdata->user_data;
+
+  if (tdata->fromreq != NULL)
+    gftp_disconnect (tdata->fromreq);
+
+  if (tdata->toreq != NULL)
+    gftp_disconnect (tdata->toreq);
+
+  cdata->request->datafd = -1;
+}
+
+
+static int
 _gftp_getdir_thread (gftpui_callback_data * cdata)
 {
   return (gftp_get_all_subdirs (cdata->user_data, NULL));
@@ -187,6 +231,10 @@
   cdata->uidata = transfer->fromwdata;
   cdata->request = ((gftp_window_data *) transfer->fromwdata)->request;
   cdata->run_function = _gftp_getdir_thread;
+  cdata->connect_function = gftpui_gtk_tdata_connect;
+  cdata->disconnect_function = gftpui_gtk_tdata_disconnect;
+  cdata->dont_check_connection = 1;
+  cdata->dont_refresh = 1;
 
   timeout_num = gtk_timeout_add (100, progress_timeout, transfer);
   ret = gftpui_common_run_callback_function (cdata);