!42 修复睡眠唤醒时锁屏会闪桌面的问题
Merge pull request !42 from 刘远鹏/openkylin/nile-dev
This commit is contained in:
commit
034b54a400
|
@ -49,6 +49,7 @@ DbusUpperInterface::DbusUpperInterface(QObject *parent)
|
|||
{
|
||||
initData();
|
||||
initConnections();
|
||||
inhibit();
|
||||
}
|
||||
|
||||
void DbusUpperInterface::initData()
|
||||
|
@ -984,10 +985,10 @@ void DbusUpperInterface::onLogin1PrepareForSleep(bool isSleep)
|
|||
|
||||
if(!m_timer){
|
||||
m_timer = new QTimer(this);
|
||||
qDebug()<<"m_bLockState "<<m_bLockState;
|
||||
connect(m_timer, &QTimer::timeout, this, [&]{
|
||||
m_timerCount+=1;
|
||||
|
||||
if(GetLockState() || m_timerCount>20){
|
||||
if(m_bLockState|| m_timerCount>20){
|
||||
m_timer->stop();
|
||||
m_timerCount = 0;
|
||||
uninhibit();
|
||||
|
@ -1706,6 +1707,7 @@ void DbusUpperInterface::onLockDialogProcExit(int exitCode, QProcess::ExitStatus
|
|||
if(exitStatus == QProcess::CrashExit)
|
||||
qWarning()<<m_procLockDialog.errorString();
|
||||
emitLockState(false);
|
||||
lockState = false;
|
||||
}
|
||||
|
||||
bool DbusUpperInterface::checkStatus(int nStatus)
|
||||
|
|
|
@ -43,7 +43,7 @@ public:
|
|||
bool isScreenSaver = false; /**< 是否屏保 */
|
||||
bool isLockScreensaver = false; /**< 是否锁定与屏保 */
|
||||
bool isBlank = false; /**< 是否黑色屏保锁定 */
|
||||
bool isBlankHasLock = false; /**< 是否黑色屏保需要锁定 */
|
||||
bool isBlankHasLock = true; /**< 是否黑色屏保需要锁定 */
|
||||
int nBlankDelay = 0; /**< 黑色屏保延迟锁定时间 */
|
||||
};
|
||||
/**
|
||||
|
|
|
@ -195,7 +195,7 @@ void FullBackgroundWidget::onSecondRunParam(const QString &str)
|
|||
{
|
||||
qDebug()<<"onSecondRunParam"<<str;
|
||||
if(str == "SleepLock"){
|
||||
onShowLock(false);
|
||||
onShowBlankScreensaver(0,true);
|
||||
}else if(str == "ScreensaverLock"){
|
||||
onShowLockScreensaver();
|
||||
}else if(str == "StartupLock"){
|
||||
|
@ -203,7 +203,7 @@ void FullBackgroundWidget::onSecondRunParam(const QString &str)
|
|||
}else if(str == "CmdLock"){
|
||||
onShowLock(true);
|
||||
}else if(str == "CloseLock"){
|
||||
onShowLock(false);
|
||||
onShowBlankScreensaver(1000,false);
|
||||
}else if(str == "SessionIdle"){
|
||||
onShowLock(false);
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ void FullBackgroundWidget::onShowBlankScreensaver(int nDelay, bool isHasLock)
|
|||
} else {
|
||||
screenStatus = (ScreenStatus)(screenStatus | SCREEN_SAVER);
|
||||
}
|
||||
|
||||
|
||||
for(auto screen : QGuiApplication::screens())
|
||||
{
|
||||
ScreenSaver *saver = m_modelLockDialog->getScreensaver();
|
||||
|
@ -233,13 +233,13 @@ void FullBackgroundWidget::onShowBlankScreensaver(int nDelay, bool isHasLock)
|
|||
isBlank = true;
|
||||
|
||||
if (0 == nDelay) {
|
||||
/*在进行压力测试时,可能会出现锁屏界面启动极慢,导致在睡眠之前调用了锁屏,但
|
||||
/*在进行压力测试时,可能会出现锁屏界面启动极慢,导致在睡眠之前调用了锁屏,但
|
||||
* 锁屏没来得及绑定睡眠唤醒信号,导致唤醒后,锁屏界面没有收到信号从而一直显示黑屏的问题。
|
||||
* 因此这里在进入黑色屏保时,通过后台接口,获取一次当前是否应该显示黑色屏保状态*/
|
||||
bool ret = Q_EMIT m_modelLockDialog->GetBlankState();
|
||||
if(!ret){
|
||||
isBlank = false;
|
||||
onClearScreensaver();
|
||||
bool ret = Q_EMIT m_modelLockDialog->GetBlankState();
|
||||
if(!ret){
|
||||
//isBlank = false;
|
||||
//onClearScreensaver();
|
||||
}
|
||||
}else{
|
||||
QTimer::singleShot(nDelay, this, [=](){
|
||||
|
@ -318,7 +318,7 @@ void FullBackgroundWidget::onClearScreensaver()
|
|||
|
||||
if(screenStatus == UNDEFINED)
|
||||
{
|
||||
closeScreensaver();
|
||||
onCloseScreensaver();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -358,7 +358,7 @@ void FullBackgroundWidget::onLockScreenTimeout()
|
|||
m_timerLock->stop();
|
||||
}
|
||||
|
||||
void FullBackgroundWidget::closeScreensaver()
|
||||
void FullBackgroundWidget::onCloseScreensaver()
|
||||
{
|
||||
hide();
|
||||
Q_EMIT m_modelLockDialog->lockStateChanged(false);
|
||||
|
@ -372,12 +372,6 @@ void FullBackgroundWidget::onShowPowerManager()
|
|||
Q_EMIT m_modelLockDialog->lockStateChanged(true);
|
||||
}
|
||||
|
||||
void FullBackgroundWidget::onCloseScreensaver()
|
||||
{
|
||||
show();
|
||||
Q_EMIT m_modelLockDialog->lockStateChanged(true);
|
||||
}
|
||||
|
||||
void FullBackgroundWidget::onDesktopResized()
|
||||
{
|
||||
qDebug() << "[FullBackgroundWidget] [onDesktopResized]";
|
||||
|
@ -394,22 +388,25 @@ void FullBackgroundWidget::onPrepareForSleep(bool sleep)
|
|||
///在系统休眠之前停止认证,在系统唤醒后重新开始认证
|
||||
qDebug()<<"onPrepareForSleep:"<<sleep;
|
||||
|
||||
if(!isVisible()){
|
||||
return ;
|
||||
}
|
||||
if(sleep)
|
||||
{
|
||||
//if(m_lockWidget)
|
||||
// m_lockWidget->stopAuth();
|
||||
if(m_lockWidget)
|
||||
m_lockWidget->stopAuth();
|
||||
//uninhibit();
|
||||
}
|
||||
else
|
||||
{
|
||||
if(screenStatus & SCREEN_SAVER)
|
||||
{
|
||||
//isBlank = false;
|
||||
//onClearScreensaver();
|
||||
isBlank = false;
|
||||
onClearScreensaver();
|
||||
}else{
|
||||
//repaint();
|
||||
//if(m_lockWidget)
|
||||
// m_lockWidget->startAuth();
|
||||
repaint();
|
||||
if(m_lockWidget)
|
||||
m_lockWidget->startAuth();
|
||||
//inhibit();
|
||||
}
|
||||
}
|
||||
|
@ -631,7 +628,7 @@ void FullBackgroundWidget::onCurUserChanged(const QString &strUserName)
|
|||
void FullBackgroundWidget::onAuthSucceed(QString strUserName)
|
||||
{
|
||||
if (getenv("USER") == strUserName) {
|
||||
closeScreensaver();
|
||||
onCloseScreensaver();
|
||||
} else {
|
||||
if (m_modelLockDialog) {
|
||||
Q_EMIT m_modelLockDialog->startSession();
|
||||
|
|
|
@ -122,7 +122,6 @@ private:
|
|||
void delayLockScreen();
|
||||
void onLockScreenTimeout();
|
||||
void stopDelayLockScreen();
|
||||
void closeScreensaver();
|
||||
|
||||
private Q_SLOTS:
|
||||
void onGlobalKeyPress(const quint8 &key);
|
||||
|
|
|
@ -964,3 +964,16 @@ void LockWidget::onGetCustomPluginMsg(QString strMsg)
|
|||
}
|
||||
}
|
||||
|
||||
void LockWidget::stopAuth()
|
||||
{
|
||||
if(authDialog){
|
||||
authDialog->stopAuth();
|
||||
}
|
||||
}
|
||||
|
||||
void LockWidget::startAuth()
|
||||
{
|
||||
if(authDialog){
|
||||
authDialog->startAuth();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,8 @@ class LockWidget : public QWidget
|
|||
public:
|
||||
explicit LockWidget(LockDialogModel *model, QWidget *parent = nullptr);
|
||||
bool exitSubWidget();
|
||||
void stopAuth();
|
||||
void startAuth();
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event);
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
|
Loading…
Reference in New Issue