Mercurial > gftp.yaz
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);