summaryrefslogtreecommitdiffstats
path: root/tdmlib
diff options
context:
space:
mode:
Diffstat (limited to 'tdmlib')
-rw-r--r--tdmlib/dmctl.cpp38
-rw-r--r--tdmlib/dmctl.h2
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 );