From edcee1fdc12ed9a4b04d0ae7b17493432e1ae3c9 Mon Sep 17 00:00:00 2001 From: zhangjiarui Date: Mon, 15 Jun 2026 14:16:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(camera):=20=E4=BF=AE=E5=A4=8D=E6=91=84?= =?UTF-8?q?=E5=83=8F=E5=A4=B4=E8=A2=AB=E5=8D=A0=E7=94=A8=E6=97=B6=E4=BB=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=80=92=E8=AE=A1=E6=97=B6=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Log: 修复摄像头被占用时仍显示倒计时的问题 Bug: https://pms.uniontech.com/bug-view-364831.html Influence: 摄像头被其它应用占用时,点击拍照或录像不再显示0或负数倒计时;日志中的camera_connected仅在摄 像头可用时记录为true。 --- src/src/mainwindow.cpp | 16 ++++++++++------ src/src/titlebar.cpp | 6 +++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/src/mainwindow.cpp b/src/src/mainwindow.cpp index ad87fd98..862e633d 100644 --- a/src/src/mainwindow.cpp +++ b/src/src/mainwindow.cpp @@ -1269,7 +1269,7 @@ void CMainWindow::loadAfterShow() {"tid", EventLogUtils::Start}, {"mode", 1}, {"version", VERSION}, - {"camera_connected", DataManager::instance()->getdevStatus() ? true : false} + {"camera_connected", DataManager::instance()->getdevStatus() == CAM_CANUSE} }; EventLogUtils::get().writeLogs(obj); } @@ -1481,21 +1481,21 @@ void CMainWindow::onPhotoRecordBtnClked() QJsonObject obj { {"tid", m_photoRecordBtn->photoState() ? EventLogUtils::StartPhoto : EventLogUtils::StartRecording}, {"version", VERSION}, - {"camera_connected", DataManager::instance()->getdevStatus() ? true : false} + {"camera_connected", DataManager::instance()->getdevStatus() == CAM_CANUSE} }; if(!m_bRecording) EventLogUtils::get().writeLogs(obj); - //没有摄像机,不进行任何操作 - if (NOCAM == DataManager::instance()->getdevStatus()) { - return; - } //拍照模式下 if (true == m_photoRecordBtn->photoState()) { //正在拍照 if (photoNormal != m_photoState) { m_videoPre->onTakePic(false); } else { + //摄像头不可用时,不开启新的拍照动作 + if (CAM_CANUSE != DataManager::instance()->getdevStatus()) { + return; + } int nContinuous = Settings::get().getOption("photosetting.photosnumber.takephotos").toInt(); if (nContinuous > 1) { // 仅在连拍模式下才开启窗口状态监听线程 @@ -1509,6 +1509,10 @@ void CMainWindow::onPhotoRecordBtnClked() if (true == m_bRecording) { m_videoPre->onEndBtnClicked(); } else { + //摄像头不可用时,不开启新的录像动作 + if (CAM_CANUSE != DataManager::instance()->getdevStatus()) { + return; + } QFileInfo fi(m_videoPath); if (!fi.isWritable()) return; diff --git a/src/src/titlebar.cpp b/src/src/titlebar.cpp index 3d80846f..ae1b0368 100644 --- a/src/src/titlebar.cpp +++ b/src/src/titlebar.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -62,7 +62,7 @@ void Titlebar::slotThemeTypeChanged() { Q_D(const Titlebar); QPalette pa; - if(DataManager::instance()->getdevStatus() != NOCAM) { + if(DataManager::instance()->getdevStatus() == CAM_CANUSE) { pa.setColor(QPalette::ButtonText, d->lightColor); d->m_titlebar->setPalette(pa); } else{ @@ -83,7 +83,7 @@ void Titlebar::paintEvent(QPaintEvent *pe) QPainter painter(this); QPalette pa; - if(DataManager::instance()->getdevStatus() != NOCAM) { + if(DataManager::instance()->getdevStatus() == CAM_CANUSE) { pa.setColor(QPalette::ButtonText, d->lightColor); d->m_titlebar->setPalette(pa); }