Xcode 14.3 (and upstream LLVM 14) fixed [a bug](https://github.com/llvm/llvm-project/issues/51273) where `-Wdeclaration-after-statement` would be ignored when building with C99 or a later language standard. This revealed 22 warnings in ObjC files where variables are declared in the middle of a block.
We could simply fix all of these, but declaring variables in the middle of blocks does feel like idiomatic Objective-C (which is why it was done to begin with). It would also mean changes in 22 places.
Disabling the warning is the other option. It's not ideal, but using a pragma in each file seems like the best way to do so.
(We don't have a way to pass special ObjC-only compiler flags, and even if we did, the '-Wno-declaration-after-statement' would have to come after the '-W', which is fragile.)
Alternately, the pragma (guarded by `#ifdef __OBJC__`) could go into a header file included by all files, like `macdrv_cocoa.h`.
Opinions/suggestions/comments are welcome.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4179
First part of a series that allows the shader-runner to test SM1 compilation on [shader] directives even if a backend to run these tests is not available and prepare they way for SM1-only tests.
Specifically:
- Compile [shader] directives separately from backend execution (on part 1).
- Allow specifying more detailed shader ranges for todo(), fail() and notimpl() qualifiers (on part 2).
- Always test shader compilation with SM1 profiles (on part 2).
The `minimum_shader_model` and `maximum_shader_model` parameters for run_shader_tests() are interpreted in the following way:
> Ask the pertaining backend to run the shader_test file so that each test is executed with the lowest profile it can support within the range of shader models specified, if any.
This allows us to control how many shader models we want to test for each backend, e.g.:
```
run_shader_tests(..., SHADER_MODEL_2_0, SHADER_MODEL_3_0)
run_shader_tests(..., SHADER_MODEL_4_0, SHADER_MODEL_5_1)
run_shader_tests(..., SHADER_MODEL_6_0, SHADER_MODEL_6_0)
```
versus
```
for (i = SHADER_MODEL_2_0, i <= SHADER_MODEL_6_0, ++i)
run_shader_tests(..., i, i);
```
Also, to allow to compile [shader] directives, which are not backend-specific, separately from the [test] directives, which are, the run_shader_tests() function is modified to skip backend specific directives if the shader_runner_ops is NULL.
Following patches are on my [master6i](https://gitlab.winehq.org/fcasas/vkd3d/-/commits/master6i) branch.
--
v2: tests/shader-runner: Compile [shader] directives separately from backend execution.
tests/shader-runner: Decouple run_shader_tests() ranges from those supported by the backend.
tests/shader-runner: Discern between the minimum_shader_model and the selected_shader_model.
tests/shader-runner: Add missing requirement checks for backends.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/418
Fixing a couple of flaky tests, a missed change for MIDI time adjustment, as well fixing voice looping that causes notes to end too early.
--
v3: dmime: Force recompute MIDI message reference time.
dmsynth: Set loop and sample generators on the fluid_voice.
dmusic/tests: Skip test_default_gm_collection if gm.dls is missing.
dmime/tests: Ignore failure on missing gm.dls in test_band_track_play.
dmime/tests: Avoid checking message segment state reference count.
dmime/tests: Remove flaky track playing state test.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4176
Fixing a couple of flaky tests, a missed change for MIDI time adjustment, as well fixing voice looping that causes notes to end too early.
--
v2: dmime: Force recompute MIDI message reference time.
dmsynth: Set loop and sample generators on the fluid_voice.
dmusic/tests: Skip test_default_gm_collection if gm.dls is missing.
dmime/tests: Ignore failure on missing gm.dls in test_band_track_play.
dmime/tests: Avoid checking message segment state reference count.
dmime/tests: Remove flaky track playing state test.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4176