Changeset View
Changeset View
Standalone View
Standalone View
ksldapp.cpp
Show First 20 Lines • Show All 352 Lines • ▼ Show 20 Line(s) | 352 | if (m_logind && m_logind->isConnected()) { | |||
---|---|---|---|---|---|
353 | if (KScreenSaverSettings::lockOnResume() && !m_logind->isInhibited()) { | 353 | if (KScreenSaverSettings::lockOnResume() && !m_logind->isInhibited()) { | ||
354 | m_logind->inhibit(); | 354 | m_logind->inhibit(); | ||
355 | } else if (!KScreenSaverSettings::lockOnResume() && m_logind->isInhibited()) { | 355 | } else if (!KScreenSaverSettings::lockOnResume() && m_logind->isInhibited()) { | ||
356 | m_logind->uninhibit(); | 356 | m_logind->uninhibit(); | ||
357 | } | 357 | } | ||
358 | } | 358 | } | ||
359 | } | 359 | } | ||
360 | 360 | | |||
361 | void KSldApp::lock(EstablishLock establishLock) | 361 | void KSldApp::lock(EstablishLock establishLock, int attemptCount) | ||
362 | { | 362 | { | ||
363 | if (lockState() != Unlocked) { | 363 | if (lockState() != Unlocked) { | ||
364 | // already locked or acquiring lock, no need to lock again | 364 | // already locked or acquiring lock, no need to lock again | ||
365 | // but make sure it's really locked | 365 | // but make sure it's really locked | ||
366 | endGraceTime(); | 366 | endGraceTime(); | ||
367 | if (establishLock == EstablishLock::Immediate) { | 367 | if (establishLock == EstablishLock::Immediate) { | ||
368 | // signal the greeter to switch to immediateLock mode | 368 | // signal the greeter to switch to immediateLock mode | ||
369 | kill(m_lockProcess->pid(), SIGUSR1); | 369 | kill(m_lockProcess->pid(), SIGUSR1); | ||
370 | } | 370 | } | ||
371 | return; | 371 | return; | ||
372 | } | 372 | } | ||
373 | 373 | | |||
374 | if (attemptCount == 0) { | ||||
375 | emit aboutToLock(); | ||||
376 | } | ||||
377 | | ||||
374 | qDebug() << "lock called"; | 378 | qDebug() << "lock called"; | ||
375 | if (!establishGrab()) { | 379 | if (!establishGrab()) { | ||
380 | if (attemptCount < 3) { | ||||
381 | qWarning() << "Could not establish screen lock. Trying again in 10ms"; | ||||
382 | QTimer::singleShot(10, this, [=]() { | ||||
383 | lock(establishLock, attemptCount+1); | ||||
384 | }); | ||||
385 | } else { | ||||
376 | qCritical() << "Could not establish screen lock"; | 386 | qCritical() << "Could not establish screen lock"; | ||
387 | } | ||||
377 | return; | 388 | return; | ||
378 | } | 389 | } | ||
379 | 390 | | |||
380 | KNotification::event(QStringLiteral("locked"), | 391 | KNotification::event(QStringLiteral("locked"), | ||
381 | i18n("Screen locked"), | 392 | i18n("Screen locked"), | ||
382 | QPixmap(), | 393 | QPixmap(), | ||
383 | nullptr, | 394 | nullptr, | ||
384 | KNotification::CloseOnTimeout, | 395 | KNotification::CloseOnTimeout, | ||
▲ Show 20 Lines • Show All 357 Lines • Show Last 20 Lines |