This MR attempts to bring Wine's handling of `setlocale` and `_create_locale` more in line with the behavior of native >= `msvcr110`. It does this by replacing the usage of the LCID based `GetLocaleInfo` with the sname based `GetLocaleInfoEx`. `GetLocaleInfo` doesn't support neutral locales, even on native, which causes problems with neutral Chinese locales like `zh-Hans` and `zh-Hant`.
It also improves the accuracy of the internal `__lc_locale_name_func`, as tests indicate that it returns `LOCALE_SNAME`s instead of ISO 639 language names.
Potential future improvements:
* Modifying the generation of the `pclmap` and `pcumap` fields of `threadlocaleinfostruct` to work on WCHARs.
* I've done some changes to `__thread_data` which make it not fully match native, I'll submit a follow up which fixes this.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3050
Mainly promoting single object components to variables for SM 5.0's RDEF block and lowering combined samplers to separate sampler+texture objects for SM 4.
Following patches (including prepending uniform copies resource components within struct parameters) in:
https://gitlab.winehq.org/fcasas/vkd3d/-/commits/master6c
--
v3: vkd3d-shader/hlsl: Don't allocate all texture registers for synthetic separated samplers.
vkd3d-shader/hlsl: Lower combined samplers to separate sampler and texture objects for SM4.
vkd3d-shader/hlsl: Separate tracking of sampler_dim and usage for object components.
vkd3d-shader/hlsl: Introduce hlsl_new_synthetic_var_named().
vkd3d-shader/hlsl: Check is_uniform instead of HLSL_STORAGE_UNIFORM when validating object refs.
tests: Add lowering combined samplers tests.
vkd3d-shader/hlsl: Handle resource components individually for SM 5.0.
vkd3d-shader/tpf: Introduce struct extern_resource.
vkd3d-shader/hlsl: Allow derefs to provide the data_type.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/209
This introduces temporary helpers block_to_list and list_to_block.
The job of block_to_list(), at least, could be done by simply writing
"&block->instrs" everywhere instead. Using the helper instead ensures that
all of these instances will eventually be converted.
--
v2: vkd3d-shader/hlsl: Store the fields of struct parse_if_body as hlsl_block pointers.
vkd3d-shader/hlsl: Store the "instrs" field of struct parse_initializer as a hlsl_block pointer.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/230
This introduces temporary helpers block_to_list and list_to_block.
The job of block_to_list(), at least, could be done by simply writing
"&block->instrs" everywhere instead. Using the helper instead ensures that
all of these instances will eventually be converted.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/230
--
v5: wineoss: Implement main_loop in unixlib.
winecoreaudio: Implement main_loop in unixlib.
winealsa: Implement main_loop in unixlib.
winepulse: Move main loop logic into mmdevapi.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3027