解决双击设置按钮导致显示设置对话框的消息函数重入的问题
This commit is contained in:
parent
66d28656cd
commit
4ce0b0cba1
|
@ -165,6 +165,11 @@ void HGAPI DeviceUser::DSEventFunc(HGTwainDS ds, HGUInt event, HGPointer param)
|
|||
{
|
||||
emit p->scanWorkingEvent();
|
||||
}
|
||||
else if (HGTWAIN_EVENT_TYPE_CLOSEDSREQ == event)
|
||||
{
|
||||
HGTwain_DisableDS(p->m_twainDS);
|
||||
emit p->closeDSReq();
|
||||
}
|
||||
}
|
||||
|
||||
HGUInt HGAPI DeviceUser::DSImageFunc(HGTwainDS ds, HGImage image, HGUInt type, HGPointer param)
|
||||
|
|
|
@ -61,6 +61,7 @@ signals:
|
|||
void newImage(void *image);
|
||||
void scanFinishEvent();
|
||||
void scanWorkingEvent();
|
||||
void closeDSReq();
|
||||
|
||||
private:
|
||||
QWidget *m_wnd;
|
||||
|
|
|
@ -86,6 +86,7 @@ MainWindow::MainWindow(const QString& appLang, QWidget *parent)
|
|||
, m_bSideEditing(false)
|
||||
, m_ocrMsgPump(NULL)
|
||||
, m_ocrThread(NULL)
|
||||
, m_dsEnabled(false)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
|
@ -375,6 +376,7 @@ MainWindow::MainWindow(const QString& appLang, QWidget *parent)
|
|||
connect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)), Qt::BlockingQueuedConnection);
|
||||
connect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
||||
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
||||
connect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()), Qt::QueuedConnection);
|
||||
|
||||
#if !defined(HG_CMP_MSC)
|
||||
checkRollerLife();
|
||||
|
@ -432,6 +434,7 @@ MainWindow::~MainWindow()
|
|||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||
disconnect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()));
|
||||
delete m_devUser;
|
||||
m_devUser = nullptr;
|
||||
}
|
||||
|
@ -1516,6 +1519,11 @@ void MainWindow::on_scanFinishEvent()
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_closeDSReq()
|
||||
{
|
||||
m_dsEnabled = false;
|
||||
}
|
||||
|
||||
void MainWindow::on_m_pbtn_push_clicked()
|
||||
{
|
||||
int mainWndWidth = this->rect().width();
|
||||
|
@ -3312,12 +3320,20 @@ void MainWindow::on_act_about_triggered()
|
|||
|
||||
void MainWindow::on_act_scannerSettings_triggered()
|
||||
{
|
||||
if (nullptr == m_devUser)
|
||||
if (nullptr == m_devUser || m_dsEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_dsEnabled = true;
|
||||
|
||||
qDebug("m_devUser->ShowSettingDlg()");
|
||||
HGResult ret = m_devUser->ShowSettingDlg();
|
||||
if (HGBASE_ERR_OK != ret)
|
||||
{
|
||||
m_dsEnabled = false;
|
||||
}
|
||||
|
||||
bool deviceIsOnline = true;
|
||||
bool openSucceed = true;
|
||||
|
||||
|
@ -4263,6 +4279,7 @@ void MainWindow::deleteDevUser()
|
|||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||
disconnect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()));
|
||||
m_devUser->Logout();
|
||||
delete m_devUser;
|
||||
m_devUser = nullptr;
|
||||
|
@ -4526,6 +4543,7 @@ void MainWindow::on_act_selectDevice_triggered()
|
|||
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||
disconnect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()));
|
||||
m_devUser->Logout();
|
||||
delete m_devUser;
|
||||
m_devUser = nullptr;
|
||||
|
@ -4548,6 +4566,7 @@ void MainWindow::on_act_selectDevice_triggered()
|
|||
connect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)), Qt::BlockingQueuedConnection);
|
||||
connect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
||||
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
||||
connect(m_devUser, SIGNAL(closeDSReq()), this, SLOT(on_closeDSReq()), Qt::QueuedConnection);
|
||||
#if !defined(HG_CMP_MSC)
|
||||
checkRollerLife();
|
||||
#endif
|
||||
|
|
|
@ -146,6 +146,7 @@ private slots:
|
|||
void on_abnormalImage(void *image, HGUInt *result);
|
||||
void on_scanFinishEvent();
|
||||
void on_scanWorkingEvent();
|
||||
void on_closeDSReq();
|
||||
void on_m_pbtn_push_clicked();
|
||||
void on_dialog_sideBar_applyToImage(HGImage img, int brightness, int contrast, double gamma, bool enhanceText);
|
||||
void on_dialog_sideBar_finish(bool ok);
|
||||
|
@ -277,6 +278,7 @@ private:
|
|||
bool m_canClose;
|
||||
DeviceUserMgr *m_devUserMgr;
|
||||
DeviceUser *m_devUser;
|
||||
bool m_dsEnabled;
|
||||
QAction *m_act_acquireInto2;
|
||||
QComboBox *m_cbtn_acquireIntoCfg;
|
||||
QString m_currLang;
|
||||
|
|
|
@ -37,6 +37,7 @@ typedef struct
|
|||
|
||||
#define HGTWAIN_EVENT_TYPE_WORKING 1L
|
||||
#define HGTWAIN_EVENT_TYPE_SCANFINISHED 2L
|
||||
#define HGTWAIN_EVENT_TYPE_CLOSEDSREQ 3L
|
||||
|
||||
#define HGTWAIN_IMAGE_TYPE_NORMAL 0L
|
||||
|
||||
|
|
|
@ -298,7 +298,11 @@ LRESULT CALLBACK HGTwainDSMImpl::NewWndProc(HWND hWnd, UINT msg, WPARAM wParam,
|
|||
}
|
||||
else if (MSG_CLOSEDSREQ == twEvent.TWMessage)
|
||||
{
|
||||
p->m_listDSImpl[i]->Disable();
|
||||
if (p->m_listDSImpl[i]->m_eventFunc)
|
||||
{
|
||||
p->m_listDSImpl[i]->m_eventFunc((HGTwainDS)p->m_listDSImpl[i],
|
||||
HGTWAIN_EVENT_TYPE_CLOSEDSREQ, p->m_listDSImpl[i]->m_eventParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue