Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 456394
Collapse All | Expand All

(-)a/ksmserver/screenlocker/ksldapp.h (-1 / +6 lines)
Lines 85-90 Q_SIGNALS: Link Here
85
private Q_SLOTS:
85
private Q_SLOTS:
86
    void cleanUp();
86
    void cleanUp();
87
    void idleTimeout(int identifier);
87
    void idleTimeout(int identifier);
88
    void endGraceTime();
88
89
89
private:
90
private:
90
    void initialize();
91
    void initialize();
Lines 112-118 private: Link Here
112
     **/
113
     **/
113
    int m_lockGrace;
114
    int m_lockGrace;
114
    /**
115
    /**
115
     * while this timer is active user activity may remove the lock. Only used after idle timeout.
116
     * Controls whether user activity may remove the lock. Only enabled after idle timeout.
117
     **/
118
    bool m_inGraceTime;
119
    /**
120
     * Grace time ends when timer expires.
116
     **/
121
     **/
117
    QTimer *m_graceTimer;
122
    QTimer *m_graceTimer;
118
    int m_inhibitCounter;
123
    int m_inhibitCounter;
(-)a/ksmserver/screenlocker/ksldapp.cpp (-8 / +24 lines)
Lines 70-75 KSldApp::KSldApp(QObject * parent) Link Here
70
    , m_lockedTimer(QElapsedTimer())
70
    , m_lockedTimer(QElapsedTimer())
71
    , m_idleId(0)
71
    , m_idleId(0)
72
    , m_lockGrace(0)
72
    , m_lockGrace(0)
73
    , m_inGraceTime(false)
73
    , m_graceTimer(new QTimer(this))
74
    , m_graceTimer(new QTimer(this))
74
    , m_inhibitCounter(0)
75
    , m_inhibitCounter(0)
75
    , m_plasmaEnabled(false)
76
    , m_plasmaEnabled(false)
Lines 130-135 void KSldApp::initialize() Link Here
130
    connect(m_lockProcess, SIGNAL(finished(int,QProcess::ExitStatus)), SLOT(lockProcessFinished(int,QProcess::ExitStatus)));
131
    connect(m_lockProcess, SIGNAL(finished(int,QProcess::ExitStatus)), SLOT(lockProcessFinished(int,QProcess::ExitStatus)));
131
    m_lockedTimer.invalidate();
132
    m_lockedTimer.invalidate();
132
    m_graceTimer->setSingleShot(true);
133
    m_graceTimer->setSingleShot(true);
134
    connect(m_graceTimer, SIGNAL(timeout()), SLOT(endGraceTime()));
133
    // create our D-Bus interface
135
    // create our D-Bus interface
134
    new Interface(this);
136
    new Interface(this);
135
137
Lines 150-160 void KSldApp::configure() Link Here
150
        // timeout stored in seconds
152
        // timeout stored in seconds
151
        m_idleId = KIdleTime::instance()->addIdleTimeout(timeout*1000);
153
        m_idleId = KIdleTime::instance()->addIdleTimeout(timeout*1000);
152
    }
154
    }
153
    m_lockGrace = KScreenSaverSettings::lockGrace();
155
    if (KScreenSaverSettings::lock()) {
154
    if (m_lockGrace < 0) {
156
        m_lockGrace = KScreenSaverSettings::lockGrace();
155
        m_lockGrace = 0;
157
        if (m_lockGrace < 0) {
156
    } else if (m_lockGrace > 300000) {
158
            m_lockGrace = 0;
157
        m_lockGrace = 300000; // 5 minutes, keep the value sane
159
        } else if (m_lockGrace > 300000) {
160
            m_lockGrace = 300000; // 5 minutes, keep the value sane
161
        }
162
    } else {
163
        m_lockGrace = -1;
158
    }
164
    }
159
    m_autoLogoutTimeout = KScreenSaverSettings::autoLogout() ? KScreenSaverSettings::autoLogoutTimeout() * 1000 : 0;
165
    m_autoLogoutTimeout = KScreenSaverSettings::autoLogout() ? KScreenSaverSettings::autoLogoutTimeout() * 1000 : 0;
160
    m_plasmaEnabled = KScreenSaverSettings::plasmaEnabled();
166
    m_plasmaEnabled = KScreenSaverSettings::plasmaEnabled();
Lines 246-251 void KSldApp::doUnlock() Link Here
246
    m_lockWindow = NULL;
252
    m_lockWindow = NULL;
247
    m_locked = false;
253
    m_locked = false;
248
    m_lockedTimer.invalidate();
254
    m_lockedTimer.invalidate();
255
    endGraceTime();
249
    KDisplayManager().setLock(false);
256
    KDisplayManager().setLock(false);
250
    emit unlocked();
257
    emit unlocked();
251
    KNotification::event( QLatin1String("unlocked"));
258
    KNotification::event( QLatin1String("unlocked"));
Lines 320-339 void KSldApp::idleTimeout(int identifier) Link Here
320
        // there is at least one process blocking the auto lock of screen locker
327
        // there is at least one process blocking the auto lock of screen locker
321
        return;
328
        return;
322
    }
329
    }
323
    if (m_lockGrace) {
330
    if (m_lockGrace) {  // short-circuit if grace time is zero
331
        m_inGraceTime = true;
324
        m_graceTimer->start(m_lockGrace);
332
        m_graceTimer->start(m_lockGrace);
333
    } else if (m_lockGrace == -1) {
334
        m_inGraceTime = true;  // if no timeout configured, grace time lasts forever
325
    }
335
    }
326
    lock();
336
    lock();
327
}
337
}
328
338
329
bool KSldApp::isGraceTime() const
339
bool KSldApp::isGraceTime() const
330
{
340
{
331
    return m_graceTimer->isActive();
341
    return m_inGraceTime;
342
}
343
344
void KSldApp::endGraceTime()
345
{
346
    m_graceTimer->stop();
347
    m_inGraceTime = false;
332
}
348
}
333
349
334
void KSldApp::unlock()
350
void KSldApp::unlock()
335
{
351
{
336
    if (!m_graceTimer->isActive()) {
352
    if (!isGraceTime()) {
337
        return;
353
        return;
338
    }
354
    }
339
    s_graceTimeKill = true;
355
    s_graceTimeKill = true;

Return to bug 456394