Browse Source

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 <michele.calgaro@yahoo.it>
pull/30/head
Michele Calgaro 8 months ago
parent
commit
3c109e3d10
Signed by: Michele Calgaro <michele.calgaro@yahoo.it> GPG Key ID: 2A75B7CA8ADED5CF
1 changed files with 31 additions and 16 deletions
  1. 31
    16
      kdesktop/lockeng.cc

+ 31
- 16
kdesktop/lockeng.cc View File

@@ -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();


Loading…
Cancel
Save