Index: gfile.c
===================================================================
--- gfile.c	(revisión: 6359)
+++ gfile.c	(copia de trabajo)
@@ -2243,6 +2243,87 @@ g_file_copy (GFile                  *sou
 			     error);
 }
 
+typedef struct {
+  GFile *destination;
+  GFileCopyFlags flags;
+  GFileProgressCallback progress_cb;
+  gpointer progress_cb_data;
+  GError *error;
+  gboolean res;
+} CopyAsyncData;
+
+static void
+copy_async_data_free (CopyAsyncData *data)
+{
+  if (data->error)
+    g_error_free (data->error);	
+  g_object_unref (data->destination);
+  g_free (data);
+}
+
+static void
+copy_async_thread (GSimpleAsyncResult *res,
+		   GObject            *object,
+		   GCancellable       *cancellable)
+{
+  CopyAsyncData *data;
+
+  data = g_simple_async_result_get_op_res_gpointer (res);
+
+  data->error = NULL;
+  data->res = g_file_copy (G_FILE (object),
+			   data->destination,
+			   data->flags,
+			   cancellable,
+			   data->progress_cb,
+			   data->progress_cb_data,
+			   &data->error);
+}
+
+void
+g_file_copy_async (GFile                  *source,
+		   GFile                  *destination,
+		   GFileCopyFlags          flags,
+		   int                     io_priority,
+		   GCancellable           *cancellable,
+		   GFileProgressCallback   progress_callback,
+		   gpointer                progress_callback_data,
+		   GAsyncReadyCallback     callback,
+		   gpointer                user_data)
+{
+  GSimpleAsyncResult *res;
+  CopyAsyncData *data;
+
+  data = g_new0 (CopyAsyncData, 1);
+  data->destination = g_object_ref (destination);
+  data->flags = flags;
+  data->progress_cb = progress_callback;
+  data->progress_cb_data = progress_callback_data;
+
+  res = g_simple_async_result_new (G_OBJECT (source), callback, user_data, g_file_copy_async);
+  g_simple_async_result_set_op_res_gpointer (res, data, (GDestroyNotify)copy_async_data_free);
+  
+  g_simple_async_result_run_in_thread (res, copy_async_thread, io_priority, cancellable);
+  g_object_unref (res);
+}
+
+gboolean
+g_file_copy_finish (GFile        *file,
+		    GAsyncResult *res,
+		    GError      **error)
+{
+  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
+  CopyAsyncData *data;
+
+  g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == g_file_copy_async);
+
+  data = g_simple_async_result_get_op_res_gpointer (simple);
+
+  if (error != NULL && data->error)
+    *error = g_error_copy (data->error);
+
+  return data->res;
+}
 
 /**
  * g_file_move:
Index: gfile.h
===================================================================
--- gfile.h	(revisión: 6359)
+++ gfile.h	(copia de trabajo)
@@ -685,6 +685,18 @@ gboolean                g_file_copy     
 							   GFileProgressCallback       progress_callback,
 							   gpointer                    progress_callback_data,
 							   GError                    **error);
+void                    g_file_copy_async                 (GFile                      *source,
+							   GFile                      *destination,
+							   GFileCopyFlags              flags,
+							   int                         io_priority,
+							   GCancellable               *cancellable,
+							   GFileProgressCallback       progress_callback,
+							   gpointer                    progress_callback_data,
+							   GAsyncReadyCallback         callback,
+							   gpointer                    user_data);
+gboolean                g_file_copy_finish                (GFile                      *file,
+							   GAsyncResult               *res,
+							   GError                    **error);
 gboolean                g_file_move                       (GFile                      *source,
 							   GFile                      *destination,
 							   GFileCopyFlags              flags,
Index: gio.symbols
===================================================================
--- gio.symbols	(revisión: 6359)
+++ gio.symbols	(copia de trabajo)
@@ -260,6 +260,7 @@ g_file_set_display_name_finish
 g_file_delete
 g_file_trash
 g_file_copy
+g_file_copy_async
 g_file_move
 g_file_make_directory
 g_file_make_symbolic_link
