From e984d7ba40e6d7e6de78a2cd4f88f0b3a2f4f087 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 9 Nov 2007 01:38:23 -0800 Subject: [PATCH] sane.ds: Get number of options only once. --- dlls/sane.ds/ui.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/dlls/sane.ds/ui.c b/dlls/sane.ds/ui.c index 18fd8def11..6c877a2360 100644 --- a/dlls/sane.ds/ui.c +++ b/dlls/sane.ds/ui.c @@ -370,10 +370,8 @@ static int create_item(HDC hdc, const SANE_Option_Descriptor *opt, static LPDLGTEMPLATEW create_options_page(HDC hdc, int *from_index, - BOOL split_tabs) + SANE_Int optcount, BOOL split_tabs) { - SANE_Status rc; - SANE_Int optcount; int i; INT y = 2; LPDLGTEMPLATEW tpl = NULL; @@ -385,15 +383,6 @@ static LPDLGTEMPLATEW create_options_page(HDC hdc, int *from_index, int group_offset = -1; INT control_count = 0; - rc = psane_control_option(activeDS.deviceHandle, 0, SANE_ACTION_GET_VALUE, - &optcount, NULL); - - if (rc != SANE_STATUS_GOOD) - { - ERR("Unable to read number of options\n"); - return NULL; - } - for (i = *from_index; i < optcount; i++) { LPDLGITEMTEMPLATEW item_tpl = NULL; @@ -540,12 +529,17 @@ BOOL DoScannerUI(void) memset(&psp,0,sizeof(psp)); rc = psane_control_option(activeDS.deviceHandle, 0, SANE_ACTION_GET_VALUE, &optcount, NULL); + if (rc != SANE_STATUS_GOOD) + { + ERR("Unable to read number of options\n"); + return FALSE; + } while (index < optcount) { const SANE_Option_Descriptor *opt; psp[page_count].u.pResource = create_options_page(hdc, &index, - TRUE); + optcount, TRUE); opt = psane_get_option_descriptor(activeDS.deviceHandle, index); if (opt->type == SANE_TYPE_GROUP)