From: Bernd Herd codeberg@herdsoft.com
Many applications need YOffset to make the mandatory Buffered Memory transfer work. --- dlls/sane.ds/ds_image.c | 4 +++- dlls/sane.ds/sane_i.h | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/sane.ds/ds_image.c b/dlls/sane.ds/ds_image.c index a5e68f1ba44..a1e7d91553b 100644 --- a/dlls/sane.ds/ds_image.c +++ b/dlls/sane.ds/ds_image.c @@ -75,6 +75,7 @@ TW_UINT16 SANE_Start(void) activeDS.frame_params.last_frame);
activeDS.currentState = 7; + activeDS.YOffset = 0; } return twRC; } @@ -304,8 +305,9 @@ TW_UINT16 SANE_ImageMemXferGet (pTW_IDENTITY pOrigin, pImageMemXfer->Columns = activeDS.frame_params.pixels_per_line; pImageMemXfer->Rows = rows; pImageMemXfer->XOffset = 0; - pImageMemXfer->YOffset = 0; + pImageMemXfer->YOffset = activeDS.YOffset; pImageMemXfer->BytesWritten = retlen; + activeDS.YOffset += rows;
ScanningDialogBox(activeDS.progressWnd, retlen);
diff --git a/dlls/sane.ds/sane_i.h b/dlls/sane.ds/sane_i.h index 75cc9076a9a..69ded09b3fd 100644 --- a/dlls/sane.ds/sane_i.h +++ b/dlls/sane.ds/sane_i.h @@ -53,6 +53,9 @@ struct tagActiveDS BOOL YResolutionSet; TW_FIX32 defaultYResolution;
+ /* Number of scan lines already transfered in DG_IMAGE / DAT_IMAGEMEMXFER / MSG_GET. */ + TW_UINT32 YOffset; + /* Remaining number of images to transfer or -1 for unlimited */ TW_INT16 remainingImages; };