fix: release fingerprint claim after enrollment completion or failure#3299
fix: release fingerprint claim after enrollment completion or failure#3299fly602 wants to merge 1 commit into
Conversation
1. Add new releaseFingerClaim method to CharaMangerWorker 2. Call releaseFingerClaim after enrollment success, failure, and disconnection 3. Ensure proper resource cleanup when fingerprint enrollment ends 4. Prevent fingerprint device from remaining locked after use Log: Improved fingerprint enrollment reliability by releasing device claims properly Influence: 1. Test fingerprint enrollment success scenario to verify claim is released 2. Test enrollment failure scenario to ensure proper cleanup 3. Test enrollment disconnection to confirm resource release 4. Verify no memory leaks or device locks after enrollment completion 5. Test multiple enrollment cycles to check consistent behavior 6. Validate system stability after repeated enrollment attempts fix: 在指纹登记完成或失败后释放指纹声明 1. 向 CharaMangerWorker 添加新的 releaseFingerClaim 方法 2. 在登记成功、失败和断开连接后调用 releaseFingerClaim 3. 确保指纹登记结束时正确清理资源 4. 防止指纹设备在使用后保持锁定状态 Log: 通过正确释放设备声明来提高指纹登记可靠性 Influence: 1. 测试指纹登记成功场景,验证声明是否被释放 2. 测试登记失败场景,确保正确清理 3. 测试登记断开连接,确认资源释放 4. 验证登记完成后无内存泄漏或设备锁 5. 测试多次登记周期,检查行为一致性 6. 验证重复登记尝试后的系统稳定性 PMS: BUG-364881
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: fly602 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
deepin pr auto review★ 总体评分:75分■ 【总体评价】
■ 【详细分析】
■ 【改进建议代码示例】 diff --git a/src/plugin-authentication/operation/fingerprintauthcontroller.cpp b/src/plugin-authentication/operation/fingerprintauthcontroller.cpp
--- a/src/plugin-authentication/operation/fingerprintauthcontroller.cpp
+++ b/src/plugin-authentication/operation/fingerprintauthcontroller.cpp
@@ -158,22 +158,28 @@ void FingerprintAuthController::onFingerEnrollFailed(const QString &title, const
void FingerprintAuthController::onFingerEnrollFailed(const QString &title, const QString &message)
{
- // ...
- setAddStage(CharaMangerModel::Fail);
- emit fingerTipsChanged();
- stopEnroll();
- m_worker->releaseFingerClaim(m_model->userName());
+ setAddStage(CharaMangerModel::Fail);
+ emit fingerTipsChanged();
+ cleanupFingerEnroll();
}
void FingerprintAuthController::onFingerEnrollCompleted()
{
- // ...
- setAddStage(CharaMangerModel::Success);
- emit enrollCompleted();
- stopEnroll();
- m_worker->releaseFingerClaim(m_model->userName());
+ setAddStage(CharaMangerModel::Success);
+ emit enrollCompleted();
+ cleanupFingerEnroll();
}
void FingerprintAuthController::onFingerEnrollDisconnected()
{
- // ...
- setAddStage(CharaMangerModel::Fail);
- emit fingerTipsChanged();
- stopEnroll();
- m_worker->releaseFingerClaim(m_model->userName());
+ setAddStage(CharaMangerModel::Fail);
+ emit fingerTipsChanged();
+ cleanupFingerEnroll();
+}
+
+void FingerprintAuthController::cleanupFingerEnroll()
+{
+ stopEnroll();
+ m_worker->releaseFingerClaim(m_model->userName());
}
diff --git a/src/plugin-authentication/operation/charamangerworker.cpp b/src/plugin-authentication/operation/charamangerworker.cpp
--- a/src/plugin-authentication/operation/charamangerworker.cpp
+++ b/src/plugin-authentication/operation/charamangerworker.cpp
@@ -380,10 +380,18 @@ void CharaMangerWorker::stopFingerEnroll(const QString &userName)
void CharaMangerWorker::releaseFingerClaim(const QString &userName)
{
auto callClaim = m_charaMangerInter->Claim(userName, false);
- callClaim.waitForFinished();
- if (callClaim.isError()) {
- // 原有的错误处理逻辑(仅提取到部分关键逻辑)
+ QPointer<CharaMangerWorker> self = this;
+ auto *watcher = new QDBusPendingCallWatcher(callClaim, this);
+ connect(watcher, &QDBusPendingCallWatcher::finished, this, [self, watcher](QDBusPendingCallWatcher *w) {
+ if (self) {
+ QDBusPendingReply<> reply = *w;
+ if (reply.isError()) {
+ // 原有的错误处理逻辑
+ }
+ } else {
+ w->deleteLater();
+ return;
+ }
+ w->deleteLater();
});
} |
Log: Improved fingerprint enrollment reliability by releasing device claims properly
Influence:
fix: 在指纹登记完成或失败后释放指纹声明
Log: 通过正确释放设备声明来提高指纹登记可靠性
Influence:
PMS: BUG-364881