This commit is contained in:
luoliangyi 2024-01-31 15:18:15 +08:00
commit a9e444d7ec
1 changed files with 19 additions and 5 deletions

View File

@ -1036,6 +1036,10 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
HGUInt doubleImgRet = HGBASE_ERR_OK;
bool clickedReserveImg = false;
int imageCount =0;
int scanCount = -1;
p->GetScanCount(&scanCount);
while (!p->m_stopThread)
{
SANE_Parameters params;
@ -1152,6 +1156,7 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
// 普通图片或第二个双张图片
p->m_imageFunc((HGSaneDevice)p, img, HGSANE_IMAGE_TYPE_NORMAL, p->m_imageParam);
doubleImgRet = HGBASE_ERR_OK;
imageCount++;
}
HGBase_DestroyImage(img);
@ -1162,7 +1167,11 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
buffer = NULL;
bufferSize = 0;
if (HGSANE_ERR_IMAGE_DISCARD == doubleImgRet)
// 保留双张后继续扫描,重置图像数量,然后重新按照指定张数扫描
if (clickedReserveImg)
imageCount = 0;
if (HGSANE_ERR_IMAGE_DISCARD == doubleImgRet || (imageCount == scanCount * 2 && !clickedReserveImg)) //图像数量和扫描张数对应时正常结束扫描,双张保留则继续扫描
{
saneAPI.sane_cancel_api(p->m_devHandle);
if (NULL != p->m_scanNotify)
@ -1185,12 +1194,17 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
break;
}
else if (SANE_STATUS_GOOD != stat && HGSANE_ERR_UI_RESERVE_CHECK != doubleImgStat)
else if (SANE_STATUS_GOOD != stat)
{
if ((SCANNER_ERR_DEVICE_DOUBLE_FEEDING != stat && HGSANE_ERR_UI_RESERVE_CHECK == doubleImgStat) ||
HGSANE_ERR_UI_RESERVE_CHECK != doubleImgStat)
{
if (NULL != p->m_scanNotify)
p->m_scanNotify((int)SANE_EVENT_SCAN_FINISHED, (void*)saneAPI.sane_strstatus_api(stat), (int)stat);
break;
}
}
if (SANE_STATUS_GOOD == stat)
{