diff options
Diffstat (limited to 'tdmlib')
-rw-r--r-- | tdmlib/dmctl.cpp | 38 | ||||
-rw-r--r-- | tdmlib/dmctl.h | 2 |
2 files changed, 38 insertions, 2 deletions
diff --git a/tdmlib/dmctl.cpp b/tdmlib/dmctl.cpp index 9cf7e9d34..c4fc0a5dd 100644 --- a/tdmlib/dmctl.cpp +++ b/tdmlib/dmctl.cpp @@ -392,8 +392,42 @@ DM::switchVT( int vt ) void DM::lockSwitchVT( int vt ) { - if (switchVT( vt )) - kapp->dcopClient()->send( "kdesktop", "KScreensaverIface", "lock()", TQString("") ); + if (switchVT( vt )) { + TQByteArray data; + TQCString replyType; + TQByteArray replyData; + // Block here until lock is complete + // If this is not done the desktop of the locked session will be shown after VT switch until the lock fully engages! + kapp->dcopClient()->call("kdesktop", "KScreensaverIface", "lock()", data, replyType, replyData); + } +} + +int +DM::activeVT() +{ + if (DMType == OldTDM) { + return -1; + } + + TQCString re; + + if (DMType == GDM) { + return -1; + } + else { + if (!exec( "activevt\n", re )) { + return -1; + } + TQString retrunc = TQString( re.data() + 3 ); + bool ok = false; + int activevt = retrunc.toInt(&ok, 10); + if (ok) { + return activevt; + } + else { + return -1; + } + } } void diff --git a/tdmlib/dmctl.h b/tdmlib/dmctl.h index 376a9ddd7..f50f72f6c 100644 --- a/tdmlib/dmctl.h +++ b/tdmlib/dmctl.h @@ -54,6 +54,7 @@ public: bool localSessions( SessList &list ); bool switchVT( int vt ); void lockSwitchVT( int vt ); + int activeVT(); bool bootOptions( TQStringList &opts, int &dflt, int &curr ); @@ -87,6 +88,7 @@ public: void startReserve() {} bool localSessions( SessList &list ) { return false; } void switchVT( int vt ) {} + int activeVT() { return -1; } bool bootOptions( TQStringList &opts, int &dflt, int &curr ); |