diff options
author | Michele Calgaro <[email protected]> | 2019-03-10 23:01:11 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2019-03-10 23:01:11 +0900 |
commit | 3c109e3d106e7348cea31ea1be7ce0aaadee307d (patch) | |
tree | 9352bc7f4f971c0e41e06447fdafe4dab4de819a /kdesktop | |
parent | 7aa9258f19a31fd12da607e64e324e4c503d0cf4 (diff) | |
download | tdebase-3c109e3d106e7348cea31ea1be7ce0aaadee307d.tar.gz tdebase-3c109e3d106e7348cea31ea1be7ce0aaadee307d.zip |
Fixed bug 925 ("SAK driven secure dialog is not available for use"
message in .xsession-errors even when SAK is disabled).
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'kdesktop')
-rw-r--r-- | kdesktop/lockeng.cc | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc index 4683ad495..f02e51440 100644 --- a/kdesktop/lockeng.cc +++ b/kdesktop/lockeng.cc @@ -139,14 +139,29 @@ SaverEngine::SaverEngine() connect(&mLockProcess, TQT_SIGNAL(processExited(TDEProcess *)), TQT_SLOT(lockProcessExited())); - mSAKProcess = new TDEProcess; - *mSAKProcess << "tdmtsak"; - connect(mSAKProcess, TQT_SIGNAL(processExited(TDEProcess*)), this, TQT_SLOT(slotSAKProcessExited())); - - TQTimer::singleShot( 0, this, TQT_SLOT(handleSecureDialog()) ); - configure(); + // Create SAK process only if SAK is enabled + KSimpleConfig *config; + struct stat st; + if (stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st) == 0) { + config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); + } + else { + config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); + } + config->setGroup("X-:*-Greeter"); + bool useSAKProcess = false; +#ifdef BUILD_TSAK + useSAKProcess = config->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK(); +#endif + if (useSAKProcess) { + mSAKProcess = new TDEProcess; + *mSAKProcess << "tdmtsak"; + connect(mSAKProcess, TQT_SIGNAL(processExited(TDEProcess*)), this, TQT_SLOT(slotSAKProcessExited())); + TQTimer::singleShot( 0, this, TQT_SLOT(handleSecureDialog()) ); + } + mLockProcess.clearArguments(); TQString path = TDEStandardDirs::findExe( "kdesktop_lock" ); if( path.isEmpty()) @@ -173,14 +188,6 @@ SaverEngine::SaverEngine() } // lock the desktop if required - KSimpleConfig *config; - struct stat st; - if (stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st) == 0) { - config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); - } - else { - config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); - } config->setGroup("X-:0-Core"); bool autoLoginEnable = config->readBoolEntry("AutoLoginEnable", false); bool autoLoginLocked = config->readBoolEntry("AutoLoginLocked", false); @@ -454,11 +461,17 @@ void SaverEngine::enableExports() void SaverEngine::handleSecureDialog() { // Wait for SAK press - if (!mSAKProcess->isRunning()) mSAKProcess->start(); + if (mSAKProcess && !mSAKProcess->isRunning()) { + mSAKProcess->start(); + } } void SaverEngine::slotSAKProcessExited() { + if (!mSAKProcess) { + printf("[kdesktop] SAK process does not exist. Something went wrong. Ignoring...\n"); fflush(stdout); + return; + } int retcode = mSAKProcess->exitStatus(); if ((retcode != 0) && (mSAKProcess->normalExit())) { trinity_lockeng_sak_available = FALSE; @@ -566,7 +579,9 @@ bool SaverEngine::startLockProcess( LockType lock_type ) } mState = Preparing; - mSAKProcess->kill(SIGTERM); + if (mSAKProcess) { + mSAKProcess->kill(SIGTERM); + } enableExports(); |