diff -Nru -x '*~' -x '*.o' -x '*.orig' -x '*.rej' red-carpet-2.2.1.orig/src/red_appwindow.py red-carpet-2.2.1/src/red_appwindow.py --- red-carpet-2.2.1.orig/src/red_appwindow.py 2003-12-11 15:42:41.000000000 -0800 +++ red-carpet-2.2.1/src/red_appwindow.py 2003-12-11 15:42:22.000000000 -0800 @@ -309,8 +309,8 @@ self.set_default_size(w, h) else: w, h = self.size_request() - w *= 1.3 - h = w * .667 + w = int(w * 1.3) + h = int(w * .667) self.set_default_size(w, h) w = int(conf.get("Geometry/sidebar_width=0")) diff -Nru -x '*~' -x '*.o' -x '*.orig' -x '*.rej' red-carpet-2.2.1.orig/src/red_mount.py red-carpet-2.2.1/src/red_mount.py --- red-carpet-2.2.1.orig/src/red_mount.py 2003-10-06 08:42:45.000000000 -0700 +++ red-carpet-2.2.1/src/red_mount.py 2003-12-11 15:42:22.000000000 -0800 @@ -49,7 +49,8 @@ name = path server = rcd_util.get_server_proxy() - mount_th = server.rcd.packsys.mount_directory(path, name, alias, recursive) + mount_th = server.rcd.packsys.mount_directory(path, name, alias, + int(recursive)) def mount_cb(th, path): try: diff -Nru -x '*~' -x '*.o' -x '*.orig' -x '*.rej' red-carpet-2.2.1.orig/src/red_pendingview.py red-carpet-2.2.1/src/red_pendingview.py --- red-carpet-2.2.1.orig/src/red_pendingview.py 2003-10-06 08:42:45.000000000 -0700 +++ red-carpet-2.2.1/src/red_pendingview.py 2003-12-11 15:42:22.000000000 -0800 @@ -400,6 +400,9 @@ self.max_threads = 5 + self.running_threads = [] + self.running_threads_lock = threading.Lock() + self.pending_countdown = 0 self.poll_queue = [] self.poll_results = {} @@ -415,6 +418,26 @@ self.finished() self.destroy() + def thread_space(self): + self.running_threads_lock.acquire() + num_threads = len(self.running_threads) + self.running_threads_lock.release() + + if num_threads < self.max_threads: + return 1 + else: + return 0 + + def add_thread(self, thread): + self.running_threads_lock.acquire() + self.running_threads.append(thread) + self.running_threads_lock.release() + + def remove_thread(self, thread): + self.running_threads_lock.acquire() + self.running_threads.remove(thread) + self.running_threads_lock.release() + def launch_poll_threads(self, launch_max=0): server = rcd_util.get_server_proxy() @@ -422,20 +445,23 @@ if launch_max: launch = self.max_threads - while launch > 0: + while launch > 0 and self.thread_space(): if not self.poll_queue: self.poll_queue = self.pending_list tid = self.poll_queue[0] self.poll_queue = self.poll_queue[1:] th = server.rcd.system.poll_pending(tid) - th.connect("ready", - lambda x: self.process_pending(x.get_result())) + th.connect("ready", lambda x: self.process_pending(x)) + self.add_thread(th) launch -= 1 - def process_pending(self, pending): + def process_pending(self, th): if self.finished_polling: + self.remove_thread(th) return + + pending = th.get_result() self.poll_results[pending["id"]] = pending @@ -453,6 +479,7 @@ else: self.update_pulse() + self.remove_thread(th) def poll_worker(self): diff -Nru -x '*~' -x '*.o' -x '*.orig' -x '*.rej' red-carpet-2.2.1.orig/src/ximian_xmlrpclib.py red-carpet-2.2.1/src/ximian_xmlrpclib.py --- red-carpet-2.2.1.orig/src/ximian_xmlrpclib.py 2003-10-06 08:42:45.000000000 -0700 +++ red-carpet-2.2.1/src/ximian_xmlrpclib.py 2003-12-11 15:42:22.000000000 -0800 @@ -419,6 +419,15 @@ else: f(self, value) + def dump_boolean(self, value): + self.write("%d\n" % value) + + try: + dispatch[BooleanType] = dump_boolean + except NameError: + ## Boolean type is only present in 2.3+ + pass + def dump_int(self, value): # in case ints are > 32 bits if value > MAXINT or value < MININT: