kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Return errors as exceptions from accurate_line_read()
rodzic
53450b6810
commit
c6dacdf014
|
@ -3607,8 +3607,7 @@ void Genesys_Buffer::consume(size_t size)
|
||||||
|
|
||||||
#include "genesys_conv.cc"
|
#include "genesys_conv.cc"
|
||||||
|
|
||||||
static SANE_Status accurate_line_read(Genesys_Device * dev,
|
static void accurate_line_read(Genesys_Device* dev, Genesys_Buffer& buffer)
|
||||||
Genesys_Buffer& buffer)
|
|
||||||
{
|
{
|
||||||
DBG_HELPER(dbg);
|
DBG_HELPER(dbg);
|
||||||
buffer.reset();
|
buffer.reset();
|
||||||
|
@ -3617,7 +3616,6 @@ static SANE_Status accurate_line_read(Genesys_Device * dev,
|
||||||
buffer.size());
|
buffer.size());
|
||||||
|
|
||||||
buffer.produce(buffer.size());
|
buffer.produce(buffer.size());
|
||||||
return SANE_STATUS_GOOD;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief fill buffer while reducing vertical resolution
|
/** @brief fill buffer while reducing vertical resolution
|
||||||
|
@ -3631,18 +3629,10 @@ genesys_fill_line_interp_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst,
|
||||||
{
|
{
|
||||||
DBG_HELPER(dbg);
|
DBG_HELPER(dbg);
|
||||||
size_t count;
|
size_t count;
|
||||||
SANE_Status status = SANE_STATUS_GOOD;
|
|
||||||
|
|
||||||
/* fill buffer if needed */
|
/* fill buffer if needed */
|
||||||
if (dev->oe_buffer.avail() == 0)
|
if (dev->oe_buffer.avail() == 0)
|
||||||
{
|
{
|
||||||
status = accurate_line_read(dev, dev->oe_buffer);
|
accurate_line_read(dev, dev->oe_buffer);
|
||||||
if (status != SANE_STATUS_GOOD)
|
|
||||||
{
|
|
||||||
DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__,
|
|
||||||
(u_long) dev->oe_buffer.size(), sane_strstatus(status));
|
|
||||||
return SANE_STATUS_IO_ERROR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* copy size bytes of data, copying from a line when line count matches */
|
/* copy size bytes of data, copying from a line when line count matches */
|
||||||
|
@ -3672,13 +3662,7 @@ genesys_fill_line_interp_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst,
|
||||||
/* read a new buffer if needed */
|
/* read a new buffer if needed */
|
||||||
if (dev->oe_buffer.pos() >= dev->oe_buffer.avail())
|
if (dev->oe_buffer.pos() >= dev->oe_buffer.avail())
|
||||||
{
|
{
|
||||||
status = accurate_line_read(dev, dev->oe_buffer);
|
accurate_line_read(dev, dev->oe_buffer);
|
||||||
if (status != SANE_STATUS_GOOD)
|
|
||||||
{
|
|
||||||
DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__,
|
|
||||||
(u_long) dev->oe_buffer.size(), sane_strstatus(status));
|
|
||||||
return SANE_STATUS_IO_ERROR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3696,7 +3680,6 @@ genesys_fill_segmented_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst, s
|
||||||
{
|
{
|
||||||
DBG_HELPER(dbg);
|
DBG_HELPER(dbg);
|
||||||
size_t count;
|
size_t count;
|
||||||
SANE_Status status = SANE_STATUS_GOOD;
|
|
||||||
int depth,i,n,k;
|
int depth,i,n,k;
|
||||||
|
|
||||||
depth = dev->settings.depth;
|
depth = dev->settings.depth;
|
||||||
|
@ -3706,13 +3689,7 @@ genesys_fill_segmented_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst, s
|
||||||
/* fill buffer if needed */
|
/* fill buffer if needed */
|
||||||
if (dev->oe_buffer.avail() == 0)
|
if (dev->oe_buffer.avail() == 0)
|
||||||
{
|
{
|
||||||
status = accurate_line_read(dev, dev->oe_buffer);
|
accurate_line_read(dev, dev->oe_buffer);
|
||||||
if (status != SANE_STATUS_GOOD)
|
|
||||||
{
|
|
||||||
DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__,
|
|
||||||
(u_long) dev->oe_buffer.size(), sane_strstatus(status));
|
|
||||||
return SANE_STATUS_IO_ERROR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* copy size bytes of data, copying from a subwindow of each line
|
/* copy size bytes of data, copying from a subwindow of each line
|
||||||
|
@ -3773,13 +3750,7 @@ genesys_fill_segmented_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst, s
|
||||||
/* read a new buffer if needed */
|
/* read a new buffer if needed */
|
||||||
if (dev->oe_buffer.pos() >= dev->oe_buffer.avail())
|
if (dev->oe_buffer.pos() >= dev->oe_buffer.avail())
|
||||||
{
|
{
|
||||||
status = accurate_line_read(dev, dev->oe_buffer);
|
accurate_line_read(dev, dev->oe_buffer);
|
||||||
if (status != SANE_STATUS_GOOD)
|
|
||||||
{
|
|
||||||
DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__,
|
|
||||||
(u_long) dev->oe_buffer.size(), sane_strstatus(status));
|
|
||||||
return SANE_STATUS_IO_ERROR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue