summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@src.gnome.org>2007-09-13 11:54:28 +0000
committerAlexander Larsson <alexl@src.gnome.org>2007-09-13 11:54:28 +0000
commit754ba4daf054e12746595ab5c1e9a4f5598b12e1 (patch)
treef45379c76ecec7fec56605c122e9f19f3211382b
parent0d563301b7ad117c2938279cb5d4bb4a352821db (diff)
downloadgvfs-754ba4daf054e12746595ab5c1e9a4f5598b12e1.tar.gz
Add job thread limit
Original git commit by Alexander Larsson <alex@greebo.(none)> at 1171549797 +0100 svn path=/trunk/; revision=348
-rw-r--r--daemon/Makefile.am2
-rw-r--r--daemon/daemon-main-generic.c5
-rw-r--r--daemon/daemon-main.c3
-rw-r--r--daemon/daemon-main.h1
-rw-r--r--daemon/gvfsdaemon.c7
-rw-r--r--daemon/gvfsdaemon.h2
6 files changed, 20 insertions, 0 deletions
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index 59981f9c..6427d031 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -90,6 +90,7 @@ gvfs_daemon_smb_SOURCES = \
gvfs_daemon_smb_CPPFLAGS = \
-DBACKEND_HEADER=gvfsbackendsmb.h \
-DDEFAULT_BACKEND_TYPE=smb-share \
+ -DMAX_JOB_THREADS=1 \
-DBACKEND_TYPES='"smb-share", G_TYPE_VFS_BACKEND_SMB,'
gvfs_daemon_smb_LDADD = $(SAMBA_LIBS) $(libraries)
@@ -102,6 +103,7 @@ gvfs_daemon_smb_browse_SOURCES = \
gvfs_daemon_smb_browse_CPPFLAGS = \
-DBACKEND_HEADER=gvfsbackendsmbbrowse.h \
-DMOUNTABLE_DBUS_NAME=org.gtk.vfs.mountpoint.smb_browse \
+ -DMAX_JOB_THREADS=1 \
-DBACKEND_TYPES='"smb-network", G_TYPE_VFS_BACKEND_SMB_BROWSE,"smb-server", G_TYPE_VFS_BACKEND_SMB_BROWSE,'
gvfs_daemon_smb_browse_LDADD = $(SAMBA_LIBS) $(libraries)
diff --git a/daemon/daemon-main-generic.c b/daemon/daemon-main-generic.c
index c8d24ce5..312ee877 100644
--- a/daemon/daemon-main-generic.c
+++ b/daemon/daemon-main-generic.c
@@ -9,6 +9,11 @@ main (int argc, char *argv[])
{
daemon_init ();
daemon_main (argc, argv,
+#ifdef MAX_JOB_THREADS
+ MAX_JOB_THREADS,
+#else
+ -1,
+#endif
#ifdef DEFAULT_BACKEND_TYPE
G_STRINGIFY(DEFAULT_BACKEND_TYPE),
#else
diff --git a/daemon/daemon-main.c b/daemon/daemon-main.c
index f6b97800..87938a71 100644
--- a/daemon/daemon-main.c
+++ b/daemon/daemon-main.c
@@ -94,6 +94,7 @@ daemon_parse_args (int argc, char *argv[], const char *default_type)
void
daemon_main (int argc,
char *argv[],
+ int max_job_threads,
const char *default_type,
const char *mountable_name,
const char *first_type_name,
@@ -161,6 +162,8 @@ daemon_main (int argc,
exit (1);
}
+ g_vfs_daemon_set_max_threads (daemon, max_job_threads);
+
if (mount_source)
{
g_vfs_daemon_initiate_mount (daemon, mount_source);
diff --git a/daemon/daemon-main.h b/daemon/daemon-main.h
index cb6818eb..4c0eec13 100644
--- a/daemon/daemon-main.h
+++ b/daemon/daemon-main.h
@@ -11,6 +11,7 @@ GMountSource *daemon_parse_args (int argc,
const char *default_type);
void daemon_main (int argc,
char *argv[],
+ int max_job_threads,
const char *default_type,
const char *mountable_name,
const char *first_type_name,
diff --git a/daemon/gvfsdaemon.c b/daemon/gvfsdaemon.c
index 249296ff..d37971ad 100644
--- a/daemon/gvfsdaemon.c
+++ b/daemon/gvfsdaemon.c
@@ -241,6 +241,13 @@ g_vfs_daemon_new (gboolean main_daemon, gboolean replace)
return daemon;
}
+void
+g_vfs_daemon_set_max_threads (GVfsDaemon *daemon,
+ gint max_threads)
+{
+ g_thread_pool_set_max_threads (daemon->thread_pool, max_threads, NULL);
+}
+
static gboolean
exit_at_idle (gpointer data)
{
diff --git a/daemon/gvfsdaemon.h b/daemon/gvfsdaemon.h
index dc532f7e..792a271e 100644
--- a/daemon/gvfsdaemon.h
+++ b/daemon/gvfsdaemon.h
@@ -31,6 +31,8 @@ GType g_vfs_daemon_get_type (void) G_GNUC_CONST;
GVfsDaemon *g_vfs_daemon_new (gboolean main_daemon,
gboolean replace);
+void g_vfs_daemon_set_max_threads (GVfsDaemon *daemon,
+ gint max_threads);
void g_vfs_daemon_add_job_source (GVfsDaemon *daemon,
GVfsJobSource *job_source);
void g_vfs_daemon_queue_job (GVfsDaemon *daemon,