sane.ds: Get number of options only once.

This commit is contained in:
Lei Zhang 2007-11-09 01:38:23 -08:00 committed by Alexandre Julliard
parent 4bae34cd2e
commit e984d7ba40

View File

@ -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, 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 i;
INT y = 2; INT y = 2;
LPDLGTEMPLATEW tpl = NULL; LPDLGTEMPLATEW tpl = NULL;
@ -385,15 +383,6 @@ static LPDLGTEMPLATEW create_options_page(HDC hdc, int *from_index,
int group_offset = -1; int group_offset = -1;
INT control_count = 0; 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++) for (i = *from_index; i < optcount; i++)
{ {
LPDLGITEMTEMPLATEW item_tpl = NULL; LPDLGITEMTEMPLATEW item_tpl = NULL;
@ -540,12 +529,17 @@ BOOL DoScannerUI(void)
memset(&psp,0,sizeof(psp)); memset(&psp,0,sizeof(psp));
rc = psane_control_option(activeDS.deviceHandle, 0, SANE_ACTION_GET_VALUE, rc = psane_control_option(activeDS.deviceHandle, 0, SANE_ACTION_GET_VALUE,
&optcount, NULL); &optcount, NULL);
if (rc != SANE_STATUS_GOOD)
{
ERR("Unable to read number of options\n");
return FALSE;
}
while (index < optcount) while (index < optcount)
{ {
const SANE_Option_Descriptor *opt; const SANE_Option_Descriptor *opt;
psp[page_count].u.pResource = create_options_page(hdc, &index, psp[page_count].u.pResource = create_options_page(hdc, &index,
TRUE); optcount, TRUE);
opt = psane_get_option_descriptor(activeDS.deviceHandle, index); opt = psane_get_option_descriptor(activeDS.deviceHandle, index);
if (opt->type == SANE_TYPE_GROUP) if (opt->type == SANE_TYPE_GROUP)