Browse Source

Fixed session locking at login. This resolves bug 2874.

Partially cherry picked from commit a359fef2.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/182/head
Michele Calgaro 4 years ago
parent
commit
30613a47ae
  1. 2
      kdesktop/CMakeLists.txt
  2. 26
      kdesktop/lockeng.cc
  3. 12
      starttde

2
kdesktop/CMakeLists.txt

@ -81,6 +81,8 @@ tde_add_executable( kxdglauncher
##### kdesktop (tdeinit) ########################
set( target kdesktop )
set_source_files_properties( lockeng.cc PROPERTIES COMPILE_FLAGS -DKDE_CONFDIR=\\"${TDE_CONFIG_DIR}\\" )
set( ${target}_SRCS
main.cc krootwm.cc xautolock.cc kdiconview.cc init.cc

26
kdesktop/lockeng.cc

@ -10,10 +10,12 @@
#include <config.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <kstandarddirs.h>
#include <tdeapplication.h>
#include <kservicegroup.h>
#include <ksimpleconfig.h>
#include <kdebug.h>
#include <tdelocale.h>
#include <tqfile.h>
@ -158,6 +160,30 @@ SaverEngine::SaverEngine()
sigaddset(&mThreadBlockSet, SIGTTIN);
pthread_sigmask(SIG_BLOCK, &mThreadBlockSet, NULL);
// Wait for the saver process to signal ready...
if (!waitForLockProcessStart()) {
kdDebug( 1204 ) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl;
}
// 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);
if (autoLoginEnable && autoLoginLocked) {
mLockProcess.kill(SIGTTOU);
mLockProcess.kill(SIGUSR1);
}
delete config;
config = NULL;
dBusConnect();
}

12
starttde

@ -745,18 +745,6 @@ if test $? -ne 0; then
fi
echo "[starttde] tdeinit started successfully." 1>&2
# If the session should be locked from the start (locked autologin),
# lock now and do the rest of the TDE startup underneath the locker.
# FIXME
# kdesktop needs to be notified of this locker process somehow so that
# it does not attempt to launch its own locker process on startup!
if test -n "$dl"; then
$TDEDIR/bin/kwrapper kdesktop_lock --forcelock &
# Give it some time for starting up. This is somewhat unclean; some
# notification would be better.
sleep 1
fi
# Finally, give the session control to the session manager.
# See tdebase/ksmserver for the description of the rest of the startup sequence.
# When set, the TDEWM environment variable will be used as Trinity's

Loading…
Cancel
Save