!42 修复睡眠唤醒时锁屏会闪桌面的问题

Merge pull request !42 from 刘远鹏/openkylin/nile-dev
This commit is contained in:
杨敏 2023-11-16 03:34:40 +00:00 committed by Gitee
commit 034b54a400
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
6 changed files with 41 additions and 28 deletions

View File

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

View File

@ -43,7 +43,7 @@ public:
bool isScreenSaver = false; /**< 是否屏保 */
bool isLockScreensaver = false; /**< 是否锁定与屏保 */
bool isBlank = false; /**< 是否黑色屏保锁定 */
bool isBlankHasLock = false; /**< 是否黑色屏保需要锁定 */
bool isBlankHasLock = true; /**< 是否黑色屏保需要锁定 */
int nBlankDelay = 0; /**< 黑色屏保延迟锁定时间 */
};
/**

View File

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

View File

@ -122,7 +122,6 @@ private:
void delayLockScreen();
void onLockScreenTimeout();
void stopDelayLockScreen();
void closeScreensaver();
private Q_SLOTS:
void onGlobalKeyPress(const quint8 &key);

View File

@ -964,3 +964,16 @@ void LockWidget::onGetCustomPluginMsg(QString strMsg)
}
}
void LockWidget::stopAuth()
{
if(authDialog){
authDialog->stopAuth();
}
}
void LockWidget::startAuth()
{
if(authDialog){
authDialog->startAuth();
}
}

View File

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