--- k3b-1.0.3/libk3b/core/k3bglobals.cpp.umount	2007-07-27 21:26:30.000000000 +0200
+++ k3b-1.0.3/libk3b/core/k3bglobals.cpp	2007-07-27 21:31:26.000000000 +0200
@@ -569,7 +569,24 @@
       return true;
   }
 
-  // now try pmount
+#ifdef HAVE_HAL
+    if (!K3bDevice::HalConnection::instance()->unmount( dev ))
+      return true;
+#endif
+
+  QString gumountBin = K3b::findExe( "gnome-umount" );
+  if( !gumountBin.isEmpty() ) {
+    KProcess p;
+    p << gumountBin;
+    p << "-u";
+    p << "-d";
+    p << dev->blockDeviceName();
+    p.start( KProcess::Block );
+    if( !p.exitStatus() )
+      return true;
+  }
+  
+// now try pmount
   QString pumountBin = K3b::findExe( "pumount" );
   if( !pumountBin.isEmpty() ) {
     KProcess p;
@@ -577,15 +592,11 @@
     p << "-l"; // lazy unmount
     p << dev->blockDeviceName();
     p.start( KProcess::Block );
-    return !p.exitStatus();
-  }
-  else {
-#ifdef HAVE_HAL
-    return !K3bDevice::HalConnection::instance()->unmount( dev );
-#else
-    return false;
-#endif
+    if( !p.exitStatus() )
+      return true;
   }
+
+  return false;
 }