Fix a UI block bug.

This commit is contained in:
Krad
2021-10-22 14:48:55 +08:00
parent 3e4a12861f
commit 1785953b8c
2 changed files with 20 additions and 16 deletions

View File

@@ -94,7 +94,7 @@ void DeviceManager::initDevice() {
{
lastStatus = SCANNING;
previewing = true;
timerID = startTimer(500);
// timerID = startTimer(500);
TRIGGER_EVENT(GUIEvents::ResponsePreview, nullptr, nullptr);
TRIGGER_EVENT(GUIEvents::InvokeOperationEnd, nullptr, nullptr);
return;
@@ -103,31 +103,32 @@ void DeviceManager::initDevice() {
QString msg(inf.status!=READY?"Can't start preview,Device is not ready!":"Start preview operation fail!");
THROW_ERROR(msg);
});
previewDataCaller = QThread::create([=](){
while (!endLoop)
{
QThread::msleep(500);
if (!previewing) continue;
const char * data = GetPreviewData();
QByteArray bytes =QByteArray::fromRawData(data,140*140);
if (!previewing) continue;
TRIGGER_EVENT(GUIEvents::ResponsePreviewData, nullptr, (QObject*)(&bytes));
}
});
previewDataCaller->start();
}
void DeviceManager::timerEvent(QTimerEvent *event) {
if (event->timerId() !=deviceInfTimerID)
{
StatusInfo inf = GetStatus();
printf("Timer request status, status:%s\r\n",getStatusString(inf.status));
// printf("Timer request status, status:%s\r\n",getStatusString(inf.status));
if (inf.status==SCANNING)
{
lastStatus = SCANNING;
//normal scan
if(!previewing)
{
QVariant var(inf.progress);
TRIGGER_EVENT(GUIEvents::InvokeOperationProgress, nullptr, (QObject*)&var);
}
//preview scan
else{
const char * data = GetPreviewData();
if (!data) return;
QByteArray bytes =QByteArray::fromRawData(data,140*140);
TRIGGER_EVENT(GUIEvents::ResponsePreviewData, nullptr, (QObject*)(&bytes));
// delete [] data;
}
QVariant var(inf.progress);
TRIGGER_EVENT(GUIEvents::InvokeOperationProgress, nullptr, (QObject*)&var);
} else{
if (lastStatus == SCANNING && !errorOccured)
{