diff options
author | Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> | 2011-08-09 17:04:51 +0200 |
---|---|---|
committer | Christian Kellner <gicmo@gnome.org> | 2011-08-25 21:19:55 +0200 |
commit | 3a41dcabf49287438953bb4e3622cd493adfc395 (patch) | |
tree | b7be88d5ca6bfbf780e7a552e05ecd3cb5e79067 /daemon/gvfsbackendafp.c | |
parent | 6fb8847eded26016eedd94f55608d56ab7796365 (diff) | |
download | gvfs-3a41dcabf49287438953bb4e3622cd493adfc395.tar.gz |
afp: read directly into the given read buffer
this way we can skip an memcpy and gain some extra performance
Diffstat (limited to 'daemon/gvfsbackendafp.c')
-rw-r--r-- | daemon/gvfsbackendafp.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/daemon/gvfsbackendafp.c b/daemon/gvfsbackendafp.c index ae2ad3f8..de814626 100644 --- a/daemon/gvfsbackendafp.c +++ b/daemon/gvfsbackendafp.c @@ -2047,7 +2047,6 @@ read_ext_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) GError *err = NULL; AfpResultCode res_code; gsize size; - char *data; reply = g_vfs_afp_connection_send_command_finish (afp_conn, res, &err); if (!reply) @@ -2080,10 +2079,6 @@ read_ext_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) size = g_vfs_afp_reply_get_size (reply); - /* TODO: Read directly into the data buffer */ - g_vfs_afp_reply_get_data (reply, size, (guint8 **)&data); - memcpy (job->buffer, data, size); - afp_handle->offset += size; g_vfs_job_read_set_size (job, size); @@ -2117,6 +2112,9 @@ try_read (GVfsBackend *backend, req_count = MIN (bytes_requested, G_MAXUINT32); g_vfs_afp_command_put_int64 (comm, req_count); + /* Set buffer to read into */ + g_vfs_afp_command_set_buffer (comm, buffer, bytes_requested); + g_vfs_afp_connection_send_command (afp_backend->server->conn, comm, read_ext_cb, G_VFS_JOB (job)->cancellable, job); |