diff -ur -x configure -x config.h.in compiz-0.6.3~git20071104.c9009efd/configure.ac compiz-0.6.3~git20071104.c9009efd.new/configure.ac
--- compiz-0.6.3~git20071104.c9009efd/configure.ac	2007-11-01 16:10:02.000000000 +0100
+++ compiz-0.6.3~git20071104.c9009efd.new/configure.ac	2007-12-10 16:53:06.000000000 +0100
@@ -477,6 +477,13 @@
   AC_DEFINE(USE_KDE, 1, [Build kde window decorator])
 fi
 
+AC_MSG_CHECKING([whether fuse_unmount takes two arguments])
+AC_COMPILE_IFELSE(
+  [AC_LANG_PROGRAM([[fuse_unmount (0, 0);]])],
+  [AC_DEFINE(FUSE_UNMOUNT_TAKES_TWO_ARGUMENTS, 1, [fuse_unmount takes two arguments]) takes_two=yes],
+  [AC_DEFINE(FUSE_UNMOUNT_TAKES_TWO_ARGUMENTS, 0, [fuse_unmount takes two arguments]) takes_two=no])
+AC_MSG_RESULT([$takes_two])
+
 AC_SUBST(KDE_CFLAGS)
 AC_SUBST(KDE_LIBS)
 AC_SUBST(QT_MOC)
diff -ur -x configure -x config.h.in compiz-0.6.3~git20071104.c9009efd/plugins/fuse.c compiz-0.6.3~git20071104.c9009efd.new/plugins/fuse.c
--- compiz-0.6.3~git20071104.c9009efd/plugins/fuse.c	2007-11-01 16:10:02.000000000 +0100
+++ compiz-0.6.3~git20071104.c9009efd.new/plugins/fuse.c	2007-12-10 16:53:06.000000000 +0100
@@ -26,6 +26,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <fcntl.h>
 #include <poll.h>
 #include <signal.h>
 #include <sys/mount.h>
@@ -1292,8 +1293,12 @@
 
     if (fd->mountPoint)
     {
-	/* unmount will destroy the channel */
+#if FUSE_UNMONT_TAKES_TWO_ARGUMENTS
 	fuse_unmount (fd->mountPoint, fd->channel);
+#else
+	fuse_chan_destroy (fd->channel);
+	fuse_unmount (fd->mountPoint);
+#endif
 	free (fd->mountPoint);
 	fd->mountPoint = NULL;
 	fd->channel = NULL;
@@ -1368,7 +1373,12 @@
     fd->buffer = malloc (fuse_chan_bufsize (fd->channel));
     if (!fd->buffer)
     {
+#if FUSE_UNMONT_TAKES_TWO_ARGUMENTS
 	fuse_unmount (mountPoint, fd->channel);
+#else
+	fuse_chan_destroy (fd->channel);
+	fuse_unmount (mountPoint);
+#endif
 	free (mountPoint);
 	fd->channel = NULL;
 	return;