On Samstag, 12. Februar 2022 18:27:18 CET Christian Schoenebeck wrote: > On Samstag, 12. Februar 2022 16:23:49 CET Akihiko Odaki wrote: > > On 2022/02/12 1:34, Philippe Mathieu-Daudé via wrote: > > > When building on macOS 12 we get: > > > audio/coreaudio.c:50:5: error: 'kAudioObjectPropertyElementMaster' is > > > deprecated: first deprecated in macOS 12.0 > > > [-Werror,-Wdeprecated-declarations]> > > > > > > kAudioObjectPropertyElementMaster > > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > kAudioObjectPropertyElementMain > > > > > > /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Fr > > > am > > > eworks/CoreAudio.framework/Headers/AudioHardwareBase.h:208:5: note: > > > 'kAudioObjectPropertyElementMaster' has been explicitly marked > > > deprecated here> > > > > > > kAudioObjectPropertyElementMaster > > > API_DEPRECATED_WITH_REPLACEMENT("kAudioObjectPropertyElementMain" > > > , > > > macos(10.0, 12.0), ios(2.0, 15.0), watchos(1.0, 8.0), tvos(9.0, > > > 15.0)) = kAudioObjectPropertyElementMain ^ > > > > > > Replace by kAudioObjectPropertyElementMain, redefining it to > > > kAudioObjectPropertyElementMaster if not available. > > > > > > Suggested-by: Akihiko Odaki <akihiko.od...@gmail.com> > > > Suggested-by: Christian Schoenebeck <qemu_...@crudebyte.com> > > > Suggested-by: Roman Bolshakov <ro...@roolebo.dev> > > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > > > Reviewed-by: Christian Schoenebeck <qemu_...@crudebyte.com> > > > --- > > > > > > audio/coreaudio.c | 17 +++++++++++------ > > > 1 file changed, 11 insertions(+), 6 deletions(-) > > > > > > diff --git a/audio/coreaudio.c b/audio/coreaudio.c > > > index d8a21d3e50..5b3aeaced0 100644 > > > --- a/audio/coreaudio.c > > > +++ b/audio/coreaudio.c > > > @@ -44,10 +44,15 @@ typedef struct coreaudioVoiceOut { > > > > > > bool enabled; > > > > > > } coreaudioVoiceOut; > > > > > > +#if !defined(MAC_OS_VERSION_12_0) \ > > > + || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_VERSION_12_0) > > > +#define kAudioObjectPropertyElementMain > > > kAudioObjectPropertyElementMaster > > > +#endif > > > + > > > > Unless I have missed something, we have found > > MAC_OS_X_VERSION_MIN_REQUIRED is better even for a constant in the > > following thread: > > https://lore.kernel.org/all/524515d6-2fb5-15c1-0aaf-bcda3684c...@gmail.com > > / > > > > Regards, > > Akihiko Odaki > > Well, MAC_OS_X_VERSION_MIN_REQUIRED would work as well, note though that it > would effectively result with older SDKs (Xcode <= 13.0) to this: > > enum { > MAIN, > MASTER = MAIN > }; > > #define MAIN MASTER > > int main() { > int k = MAIN; > } > > Which compiles and works (as both enums reflect the same value anyway), but > strictly the defined preprocessor macro would mask (with older SDKs) the > already existing enum. Not that I would care, just noting. > > On practical side though, your solution (MAC_OS_X_VERSION_MIN_REQUIRED) > would avoid deprecation warnings in future. So yes, maybe it's a bit > better.
Correction: it would result in this masking scenario with recent SDK (e.g. Xcode 13.2.1) and targeting a minimum deployment target macOs <12.0 (not when compiling directly with Xcode <13.1). Best regards, Christian Schoenebeck