summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2020-10-19 12:38:21 +0200
committerOndrej Holy <oholy@redhat.com>2020-11-20 09:21:55 +0000
commite205d224a69d8997180b5fb480dbf981f1a2a171 (patch)
treec65799a1aa9989afabe1510bed7df160272e82af /daemon
parent731bdbf7bf807c05eddd3a1559c01640d0dfe40e (diff)
downloadgvfs-e205d224a69d8997180b5fb480dbf981f1a2a171.tar.gz
smb: Report progress when move operation is done
The move operation doesn't report progress currently, however, the documentation says that it is guaranteed that the prorgress_callback is called after all data has been transferred. Let's report the the total number of bytes moved during the operation. https://gitlab.gnome.org/GNOME/nautilus/-/issues/1635
Diffstat (limited to 'daemon')
-rw-r--r--daemon/gvfsbackendsmb.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c
index 01b1de79..321e9c2b 100644
--- a/daemon/gvfsbackendsmb.c
+++ b/daemon/gvfsbackendsmb.c
@@ -49,6 +49,7 @@
#include "gvfsjobqueryfsinfo.h"
#include "gvfsjobqueryattributes.h"
#include "gvfsjobenumerate.h"
+#include "gvfsjobmove.h"
#include "gvfsdaemonprotocol.h"
#include "gvfsdaemonutils.h"
#include "gvfsutils.h"
@@ -2041,6 +2042,7 @@ do_move (GVfsBackend *backend,
smbc_stat_fn smbc_stat;
smbc_rename_fn smbc_rename;
smbc_unlink_fn smbc_unlink;
+ goffset size;
source_uri = create_smb_uri (op_backend->server, op_backend->port, op_backend->share, source);
@@ -2062,8 +2064,9 @@ do_move (GVfsBackend *backend,
g_free (source_uri);
return;
}
- else
- source_is_dir = S_ISDIR (statbuf.st_mode);
+
+ source_is_dir = S_ISDIR (statbuf.st_mode);
+ size = statbuf.st_size;
dest_uri = create_smb_uri (op_backend->server, op_backend->port, op_backend->share, destination);
@@ -2158,7 +2161,10 @@ do_move (GVfsBackend *backend,
g_vfs_job_failed_from_errno (G_VFS_JOB (job), errsv);
}
else
- g_vfs_job_succeeded (G_VFS_JOB (job));
+ {
+ g_vfs_job_progress_callback (size, size, job);
+ g_vfs_job_succeeded (G_VFS_JOB (job));
+ }
}
static void