Merge branch 'dev' of http://192.168.10.5:8099/sane/code_app into dev
This commit is contained in:
commit
03ca660327
|
@ -114,7 +114,7 @@ unix {
|
||||||
|
|
||||||
CONFIG += unversioned_libname unversioned_soname
|
CONFIG += unversioned_libname unversioned_soname
|
||||||
QMAKE_CXXFLAGS += -fvisibility=hidden
|
QMAKE_CXXFLAGS += -fvisibility=hidden
|
||||||
QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
# QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
||||||
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
||||||
QMAKE_LFLAGS += -z defs -B direct
|
QMAKE_LFLAGS += -z defs -B direct
|
||||||
|
|
||||||
|
|
|
@ -143,7 +143,7 @@ unix {
|
||||||
|
|
||||||
CONFIG += unversioned_libname unversioned_soname
|
CONFIG += unversioned_libname unversioned_soname
|
||||||
QMAKE_CXXFLAGS += -fvisibility=hidden
|
QMAKE_CXXFLAGS += -fvisibility=hidden
|
||||||
QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
# QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
||||||
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
||||||
QMAKE_LFLAGS += -z defs -B direct
|
QMAKE_LFLAGS += -z defs -B direct
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ unix {
|
||||||
|
|
||||||
CONFIG += unversioned_libname unversioned_soname
|
CONFIG += unversioned_libname unversioned_soname
|
||||||
QMAKE_CXXFLAGS += -fvisibility=hidden
|
QMAKE_CXXFLAGS += -fvisibility=hidden
|
||||||
QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
# QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
||||||
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
||||||
QMAKE_LFLAGS += -z defs -B direct
|
QMAKE_LFLAGS += -z defs -B direct
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ unix {
|
||||||
|
|
||||||
CONFIG += unversioned_libname unversioned_soname
|
CONFIG += unversioned_libname unversioned_soname
|
||||||
QMAKE_CXXFLAGS += -fvisibility=hidden
|
QMAKE_CXXFLAGS += -fvisibility=hidden
|
||||||
QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
# QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
||||||
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
||||||
QMAKE_LFLAGS += -z defs -B direct
|
QMAKE_LFLAGS += -z defs -B direct
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,7 @@ unix {
|
||||||
|
|
||||||
CONFIG += unversioned_libname unversioned_soname
|
CONFIG += unversioned_libname unversioned_soname
|
||||||
QMAKE_CXXFLAGS += -fvisibility=hidden
|
QMAKE_CXXFLAGS += -fvisibility=hidden
|
||||||
QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
# QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
||||||
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
||||||
QMAKE_LFLAGS += -z defs -B direct
|
QMAKE_LFLAGS += -z defs -B direct
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ unix {
|
||||||
|
|
||||||
CONFIG += unversioned_libname unversioned_soname
|
CONFIG += unversioned_libname unversioned_soname
|
||||||
QMAKE_CXXFLAGS += -fvisibility=hidden
|
QMAKE_CXXFLAGS += -fvisibility=hidden
|
||||||
QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
# QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
||||||
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\' -Wl,--exclude-libs,ALL
|
||||||
QMAKE_LFLAGS += -z defs -B direct
|
QMAKE_LFLAGS += -z defs -B direct
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,6 @@ Dialog_Device_Scan::Dialog_Device_Scan(const SANEAPI* saneApi, SANE_Handle dev,
|
||||||
m_eventParam = eventParam;
|
m_eventParam = eventParam;
|
||||||
m_imageCallback = imageCallback;
|
m_imageCallback = imageCallback;
|
||||||
m_imageParam = imageParam;
|
m_imageParam = imageParam;
|
||||||
m_buffer = NULL;
|
|
||||||
m_bufferSize = 0;
|
|
||||||
m_stopThread = HGFALSE;
|
m_stopThread = HGFALSE;
|
||||||
m_thread = NULL;
|
m_thread = NULL;
|
||||||
|
|
||||||
|
@ -64,10 +62,6 @@ void Dialog_Device_Scan::on_eventFunc(int flag, QString errInfo)
|
||||||
HGBase_CloseThread(m_thread);
|
HGBase_CloseThread(m_thread);
|
||||||
m_thread = NULL;
|
m_thread = NULL;
|
||||||
|
|
||||||
free(m_buffer);
|
|
||||||
m_buffer = NULL;
|
|
||||||
m_bufferSize = 0;
|
|
||||||
|
|
||||||
ui->pushButton_Cancel->setVisible(false);
|
ui->pushButton_Cancel->setVisible(false);
|
||||||
ui->pushButton_Complete->setVisible(true);
|
ui->pushButton_Complete->setVisible(true);
|
||||||
ui->label_imgRecived->setVisible(false);
|
ui->label_imgRecived->setVisible(false);
|
||||||
|
@ -103,19 +97,6 @@ void Dialog_Device_Scan::on_imageCount(int count)
|
||||||
|
|
||||||
void Dialog_Device_Scan::startScan()
|
void Dialog_Device_Scan::startScan()
|
||||||
{
|
{
|
||||||
SANE_Parameters params;
|
|
||||||
memset(¶ms, 0, sizeof(SANE_Parameters));
|
|
||||||
SANE_Status stat = m_saneAPI.sane_get_parameters_api(m_saneDev, ¶ms);
|
|
||||||
assert(SANE_STATUS_GOOD == stat);
|
|
||||||
|
|
||||||
m_bufferSize = params.bytes_per_line * params.lines;
|
|
||||||
m_buffer = (HGByte *)malloc(m_bufferSize);
|
|
||||||
if (NULL == m_buffer)
|
|
||||||
{
|
|
||||||
ui->label->setText(tr("Out of memory"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_stopThread = HGFALSE;
|
m_stopThread = HGFALSE;
|
||||||
HGBase_OpenThread(ThreadFunc, this, &m_thread);
|
HGBase_OpenThread(ThreadFunc, this, &m_thread);
|
||||||
|
|
||||||
|
@ -158,14 +139,27 @@ void HGAPI Dialog_Device_Scan::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
{
|
{
|
||||||
SANE_Parameters params;
|
SANE_Parameters params;
|
||||||
memset(¶ms, 0, sizeof(SANE_Parameters));
|
memset(¶ms, 0, sizeof(SANE_Parameters));
|
||||||
SANE_Status stat1 = p->m_saneAPI.sane_get_parameters_api(p->m_saneDev, ¶ms);
|
SANE_Status stat1 = p->m_saneAPI.sane_get_parameters_api(p->m_saneDev, ¶ms);
|
||||||
|
if (SANE_STATUS_GOOD != stat1)
|
||||||
|
{
|
||||||
|
emit p->eventFunc(-1, QString::fromUtf8(p->m_saneAPI.sane_strstatus_api(stat1)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGUInt bufferSize = params.bytes_per_line * params.lines;
|
||||||
|
HGByte *buffer = (HGByte *)malloc(bufferSize);
|
||||||
|
if (NULL == buffer)
|
||||||
|
{
|
||||||
|
emit p->eventFunc(-1, QString::fromUtf8(p->m_saneAPI.sane_strstatus_api(SANE_STATUS_NO_MEM)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
SANE_Int readSize = 0;
|
SANE_Int readSize = 0;
|
||||||
SANE_Status stat2 = SANE_STATUS_GOOD;
|
SANE_Status stat2 = SANE_STATUS_GOOD;
|
||||||
while (readSize < p->m_bufferSize)
|
while (readSize < bufferSize)
|
||||||
{
|
{
|
||||||
SANE_Int len = 0;
|
SANE_Int len = 0;
|
||||||
stat2 = p->m_saneAPI.sane_read_api(p->m_saneDev, p->m_buffer + readSize, p->m_bufferSize - readSize, &len);
|
stat2 = p->m_saneAPI.sane_read_api(p->m_saneDev, buffer + readSize, bufferSize - readSize, &len);
|
||||||
readSize += len;
|
readSize += len;
|
||||||
if (SANE_STATUS_GOOD != stat2)
|
if (SANE_STATUS_GOOD != stat2)
|
||||||
{
|
{
|
||||||
|
@ -175,24 +169,28 @@ void HGAPI Dialog_Device_Scan::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
|
|
||||||
if (SANE_STATUS_GOOD == stat2)
|
if (SANE_STATUS_GOOD == stat2)
|
||||||
{
|
{
|
||||||
// m_bufferSize空间不够
|
// bufferSize空间不够
|
||||||
|
free(buffer);
|
||||||
emit p->eventFunc(-1, QString::fromUtf8(p->m_saneAPI.sane_strstatus_api(SANE_STATUS_NO_MEM)));
|
emit p->eventFunc(-1, QString::fromUtf8(p->m_saneAPI.sane_strstatus_api(SANE_STATUS_NO_MEM)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (SANE_STATUS_EOF == stat2)
|
else if (SANE_STATUS_EOF == stat2)
|
||||||
{
|
{
|
||||||
if (SANE_STATUS_GOOD != stat1 || 0 == readSize || readSize != params.bytes_per_line * params.lines)
|
if (0 == readSize || readSize != params.bytes_per_line * params.lines)
|
||||||
{
|
{
|
||||||
|
free(buffer);
|
||||||
emit p->eventFunc(-1, QString::fromUtf8(p->m_saneAPI.sane_strstatus_api(SANE_STATUS_IO_ERROR)));
|
emit p->eventFunc(-1, QString::fromUtf8(p->m_saneAPI.sane_strstatus_api(SANE_STATUS_IO_ERROR)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (SANE_STATUS_CANCELLED == stat2)
|
else if (SANE_STATUS_CANCELLED == stat2)
|
||||||
{
|
{
|
||||||
|
free(buffer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
free(buffer);
|
||||||
emit p->eventFunc(-1, QString::fromUtf8(p->m_saneAPI.sane_strstatus_api(stat2)));
|
emit p->eventFunc(-1, QString::fromUtf8(p->m_saneAPI.sane_strstatus_api(stat2)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -215,7 +213,7 @@ void HGAPI Dialog_Device_Scan::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
HGImageInfo imgInfo = { (HGUInt)params.pixels_per_line, (HGUInt)params.lines,
|
HGImageInfo imgInfo = { (HGUInt)params.pixels_per_line, (HGUInt)params.lines,
|
||||||
imgType, (HGUInt)params.bytes_per_line, HGBASE_IMGORIGIN_TOP };
|
imgType, (HGUInt)params.bytes_per_line, HGBASE_IMGORIGIN_TOP };
|
||||||
HGImage img = NULL;
|
HGImage img = NULL;
|
||||||
HGBase_CreateImageWithData((HGByte*)p->m_buffer, &imgInfo, &img);
|
HGBase_CreateImageWithData(buffer, &imgInfo, &img);
|
||||||
if (NULL != img)
|
if (NULL != img)
|
||||||
{
|
{
|
||||||
p->m_imageCallback(img, p->m_imageParam);
|
p->m_imageCallback(img, p->m_imageParam);
|
||||||
|
@ -224,6 +222,10 @@ void HGAPI Dialog_Device_Scan::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(buffer);
|
||||||
|
buffer = NULL;
|
||||||
|
bufferSize = 0;
|
||||||
|
|
||||||
SANE_Status stat3 = p->m_saneAPI.sane_start_api(p->m_saneDev);
|
SANE_Status stat3 = p->m_saneAPI.sane_start_api(p->m_saneDev);
|
||||||
if (SANE_STATUS_NO_DOCS == stat3)
|
if (SANE_STATUS_NO_DOCS == stat3)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,8 +50,6 @@ private:
|
||||||
void *m_eventParam;
|
void *m_eventParam;
|
||||||
show_scan_ui_image_callback m_imageCallback;
|
show_scan_ui_image_callback m_imageCallback;
|
||||||
void *m_imageParam;
|
void *m_imageParam;
|
||||||
HGByte* m_buffer;
|
|
||||||
HGInt m_bufferSize;
|
|
||||||
volatile HGBool m_stopThread;
|
volatile HGBool m_stopThread;
|
||||||
HGThread m_thread;
|
HGThread m_thread;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue