qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH v2 2/6] audio/coreaudio: Remove a deprecation warning on


From: Philippe Mathieu-Daudé
Subject: Re: [RFC PATCH v2 2/6] audio/coreaudio: Remove a deprecation warning on macOS 12
Date: Mon, 10 Jan 2022 14:14:10 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0

On 1/10/22 14:07, Christian Schoenebeck wrote:
> On Montag, 10. Januar 2022 13:24:06 CET Philippe Mathieu-Daudé wrote:
>> On 1/10/22 09:44, Philippe Mathieu-Daudé wrote:
>>> On 1/10/22 09:17, Akihiko Odaki wrote:
>>>> On 2022/01/10 2:06, Philippe Mathieu-Daudé 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/Frame
>>>>> works/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
>>>>>        ^
>>>>>
>>>>> Use kAudioObjectPropertyElementMain (define it to
>>>>> kAudioObjectPropertyElementMaster on macOS < 12).
>>>>>
>>>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>>>> ---
>>>>>   audio/coreaudio.c | 16 ++++++++++------
>>>>>   1 file changed, 10 insertions(+), 6 deletions(-)
>>>>>
>>>>> diff --git a/audio/coreaudio.c b/audio/coreaudio.c
>>>>> index d8a21d3e507..c836bc9dd37 100644
>>>>> --- a/audio/coreaudio.c
>>>>> +++ b/audio/coreaudio.c
>>>>> @@ -44,10 +44,14 @@ typedef struct coreaudioVoiceOut {
>>>>>       bool enabled;
>>>>>   } coreaudioVoiceOut;
>>>>>   +#if !defined(MAC_OS_VERSION_12_0)
>>>>> +#define kAudioObjectPropertyElementMain
>>>>> kAudioObjectPropertyElementMaster
>>>>> +#endif
>>>>> +
>>>>
>>>> Semantically MAC_OS_VERSION_12_0 defines the numeric value of version
>>>> 12.0 and its existence does not mean that
>>>> kAudioObjectPropertyElementMain is defined. I suggest the following:
>>>> #if !__is_identifier(kAudioObjectPropertyElementMain)
>>>> #define kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster
>>>> #endif
>>
>> Apparently __is_identifier() is Clang specific. It might be acceptable
>> since this file is restricted to macOS. Similarly for the other
>> block/file-posix.c patch, the section is conditional to  __APPLE__
>> being defined.
> 
> Correct, __is_identifier() is a clang extension and does not work with GCC
> (tested). I would not use it. People on Mac usually use clang, but there are
> also cross compilers for macOS binaries.
> 
> I'd suggest to use:
> 
> #if !defined(MAC_OS_VERSION_12_0) ||
>     (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_VERSION_12_0)
> #define kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster
> #endif

Uh I just posted v3. I didn't test GCC. I'll wait for more comment on v3
then repost v4 with your suggestion, thanks.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]