This is a merge request to solve a problem that became visible by this merge request from Ivan Lyugaev:
https://gitlab.winehq.org/wine/wine/-/merge_requests/9184#note_121010
When used with a HP Officejet Pro 8600 N911a, it is no longer possible to choose a scan resolution other than 75 DPI.
The reason is that the code always set the "source" option after the "resolution" option, and setting the "source" option resets the resolution on that scanner to 75 DPI, even if it is not changed. Sane services are implemented in hplip. On Debian:
``` apt source hplip sed -n '560,563p' hplip-3.22.10+dfsg0/scan/sane/ledm.c i = session->adf_resolutionList[0] + 1; while(i--) session->resolutionList[i] = session->adf_resolutionList[i]; } ps->currentResolution = session->resolutionList[1]; ```
This new commit changes two things:
1. The order in which parameters are set in sane is changed. A parameter called "source" is set earlier than all other parameters. 2. If a parameter derived from a combobox of named options is not changed, it is not set in sane to the same value again.
This seems to solve the problem on the HP Officejet Pro 8600 N911a, but other sane backends might have more dependencies that might still need to be addressed.
-- v2: comctl32/progress: Add a helper to check if a progress bar is smooth. comctl32/progress: Get the theme handle from window. comctl32/progress: Get the theme state directly from PROGRESS_INFO. comctl32/progress: Move the theme background rect calculation. comctl32/progress: Add a helper to draw the background. dmsynth: Remove format and sample_count from struct wave. dmsynth: Allow zero-copy access to the sample data. dmusic: Defer releasing IDirectMusicDownload when can_free is FALSE. jscript: Return JS_E_OBJECT_EXPECTED in valueOf with NULL disps in IE10+ modes. jscript: Expose Uint8ClampedArray only in ES6 mode. jscript: Implement Uint8ClampedArray. comctl32/edit: Allow setting password char on multiline edit controls. comctl32/tests: Add EM_{SET,GET}PASSWORDCHAR tests for edit control. user32/edit: Allow setting password char on multiline edit controls. user32/tests: Add EM_{SET,GET}PASSWORDCHAR tests for edit control. winex11: Flush X requests in X11DRV_UpdateLayeredWindow. winex11: Flush X requests in X11DRV_SetLayeredWindowAttributes. winex11: Flush X requests in X11DRV_SetWindowStyle. winex11: Flush X requests in X11DRV_SetWindowIcons. winex11: Flush X requests in X11DRV_ActivateWindow. win32u: Disable vsync when emulating front buffer rendering. opengl32: Avoid a potential crash when flushing in wglSwapBuffers. dsound: Do not query for supported formats for the primary buffer. dsound: Do not query for mixing format support. dsound: Simplify computing the mixing format. dsound: Always require a floating-point mixing format. dsound: Use AUTOCONVERTPCM when initializing the render audio client. winex11: Prevent larger than monitor window resizes. win32u: Get rid of is_window_rect_full_screen helper. win32u: Use a private flag to indicate fullscreen windows. win32u: Hoist get_thread_dpi in apply_window_pos. ntdll: Don't import the Unix environment variables if they are too large. ntdll: Treat all the XDG_ variables as special. ntdll: Set the environment variables for Unix child processes from their UNIX_ variant. ntdll: Store special environment variables with a UNIX_ prefix. vccorlib140: Fix exception type descriptors. vccorlib140: Fix exceptions RTTI data.
This merge request has too many patches to be relayed via email. Please visit the URL below to see the contents of the merge request. https://gitlab.winehq.org/wine/wine/-/merge_requests/9399
Please check your commits. Only your commit should be in MR.