Revision 24219 (by benny, 2006/12/30 12:20:31) 2006-12-29 Benedikt Meurer <benny@xfce.org>

* thunar-vfs/thunar-vfs-io-local-xfer.c,
thunar-vfs/thunar-vfs-mime-database.c,
thunar-vfs/thunar-vfs-monitor.c, thunar-vfs/thunar-vfs-os-bsd.c,
thunar-vfs/thunar-vfs-os-generic.c, thunar-vfs/thunar-vfs-path.c,
thunar-vfs/thunar-vfs-path-private.h,
thunar-vfs/thunar-vfs-transfer-job.c: Add _thunar_vfs_path_child()
as internal implementation of thunar_vfs_path_relative(), that does
not perform the expensive sanity checking for release builds.
* thunar-vfs/thunar-vfs.c(_thunar_vfs_init): Do not maintain more than
four unused threads, and stop unused threads after ten seconds of
idle time (requires GLib 2.10).
* thunar-vfs/thunar-vfs-io-local.{c,h}: List folders parallel again,
with up to four threads collecting file infos at the same time.
Additionally, in order to avoid the costly inode lookups when
listing folder contents, we change to the requested folder and
use relative file names (requires locking, since the current
working directory is per-process rather than per-thread). Last,
the executable sanity checking was optimized for the common case
of a binary or shellscript, which should further improve the
loading performance of large folders with binaries.


/* $Id: thunar-vfs-io-local.h 24219 2006-12-30 12:20:31Z benny $ */
/*-
 * Copyright (c) 2005-2006 Benedikt Meurer <benny@xfce.org>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#if !defined(THUNAR_VFS_COMPILATION)
#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file is not part of the public API."
#endif

#ifndef __THUNAR_VFS_IO_LOCAL_H__
#define __THUNAR_VFS_IO_LOCAL_H__

#include <thunar-vfs/thunar-vfs-info.h>
#include <thunar-vfs/thunar-vfs-io-ops.h>

G_BEGIN_DECLS;

gboolean       _thunar_vfs_io_local_get_free_space  (const ThunarVfsPath           *path,
                                                     ThunarVfsFileSize             *free_space_return) G_GNUC_INTERNAL G_GNUC_WARN_UNUSED_RESULT;
ThunarVfsInfo *_thunar_vfs_io_local_get_info        (ThunarVfsPath                 *path,
                                                     const gchar                   *filename,
                                                     GError                       **error) G_GNUC_INTERNAL G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
gchar         *_thunar_vfs_io_local_get_metadata    (ThunarVfsPath                 *path,
                                                     ThunarVfsInfoMetadata          metadata,
                                                     GError                       **error) G_GNUC_INTERNAL G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;

GList         *_thunar_vfs_io_local_listdir         (ThunarVfsPath                 *path,
                                                     GError                       **error) G_GNUC_INTERNAL G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
gboolean       _thunar_vfs_io_local_copy_file       (const ThunarVfsPath           *source_path,
                                                     ThunarVfsPath                 *target_path,
                                                     ThunarVfsPath                **target_path_return,
                                                     ThunarVfsIOOpsProgressCallback callback,
                                                     gpointer                       callback_data,
                                                     GError                       **error) G_GNUC_INTERNAL G_GNUC_WARN_UNUSED_RESULT;
gboolean       _thunar_vfs_io_local_link_file       (const ThunarVfsPath           *source_path,
                                                     ThunarVfsPath                 *target_path,
                                                     ThunarVfsPath                **target_path_return,
                                                     GError                       **error) G_GNUC_INTERNAL G_GNUC_WARN_UNUSED_RESULT;
gboolean       _thunar_vfs_io_local_move_file       (const ThunarVfsPath           *source_path,
                                                     const ThunarVfsPath           *target_path,
                                                     GError                       **error) G_GNUC_INTERNAL G_GNUC_WARN_UNUSED_RESULT;
gboolean       _thunar_vfs_io_local_rename          (ThunarVfsInfo                 *info,
                                                     const gchar                   *name,
                                                     GError                       **error) G_GNUC_INTERNAL G_GNUC_WARN_UNUSED_RESULT;

G_END_DECLS;

#endif /* !__THUNAR_VFS_IO_LOCAL_H__ */