--- kdebase/kdm/kfrontend/kgapp.cpp.orig	2012-04-27 22:08:53.729331548 +0200
+++ kdebase/kdm/kfrontend/kgapp.cpp	2012-04-27 22:06:29.169359295 +0200
@@ -190,6 +190,7 @@
 	KProcess *tsak = 0;
 	KProcess *proc = 0;
 	KProcess *comp = 0;
+	KProcess *dcop = 0;
 	KProcess *kwin = 0;
 
 	trinity_desktop_lock_use_sak = _useSAK;
@@ -310,6 +311,13 @@
 	}
 
 	if (!_windowManager.isEmpty()) {
+		if (_windowManager == "kwin") {
+			// Special case
+			// Start DCOP...
+			dcop = new KProcess;
+			*dcop << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + "dcopserver" << TQCString("--suicide");
+			dcop->start();
+		}
 		kwin = new KProcess;
 		*kwin << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + _windowManager.ascii();
 		kwin->start();
@@ -453,7 +461,9 @@
 	if (kwin) {
 		kwin->closeStdin();
 		kwin->detach();
+		dcop->detach();
 		delete kwin;
+		delete dcop;
 	}
 	delete proc;
 	UnsecureDisplay( dpy );