diff options
Diffstat (limited to 'tdm/kfrontend/kgapp.cpp')
-rw-r--r-- | tdm/kfrontend/kgapp.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/tdm/kfrontend/kgapp.cpp b/tdm/kfrontend/kgapp.cpp index 318d6bd07..91c71b69d 100644 --- a/tdm/kfrontend/kgapp.cpp +++ b/tdm/kfrontend/kgapp.cpp @@ -520,7 +520,8 @@ kg_main( const char *argv0 ) } if (comp) { if (comp->isRunning()) { - if (_compositor == TDE_COMPOSITOR_BINARY) { + if (((login_session_wm == "tde") || (login_session_wm == "trinity") || (login_session_wm == "failsafe")) && + (_compositor == TDE_COMPOSITOR_BINARY)) { // Change process UID // Get user UID passwd* userinfo = getpwnam(login_user.ascii()); @@ -533,9 +534,12 @@ kg_main( const char *argv0 ) comp->writeStdin(newuid.ascii(), newuid.length()); usleep(50000); // Give the above function some time to execute. Note that on REALLY slow systems this could fail, leaving kompmgr running as root. TODO: Look into ways to make this more robust. } + comp->closeStdin(); + comp->detach(); + } + else { + comp->kill(); } - comp->closeStdin(); - comp->detach(); } delete comp; } |