Charles Davis : winecoreaudio: Fix deprecation warnings in audio.c.
Alexandre Julliard
julliard at winehq.org
Mon Jan 31 11:26:15 CST 2011
Module: wine
Branch: master
Commit: 94d1e8ec7faaf97a4863ff3d21cb385ed2aea548
URL: http://source.winehq.org/git/wine.git/?a=commit;h=94d1e8ec7faaf97a4863ff3d21cb385ed2aea548
Author: Charles Davis <cdavis at mymail.mines.edu>
Date: Sat Jan 29 16:42:25 2011 -0700
winecoreaudio: Fix deprecation warnings in audio.c.
---
dlls/winecoreaudio.drv/audio.c | 52 ++++++++++++++++++++++++++++-----------
1 files changed, 37 insertions(+), 15 deletions(-)
diff --git a/dlls/winecoreaudio.drv/audio.c b/dlls/winecoreaudio.drv/audio.c
index cf876ff..ded830d 100644
--- a/dlls/winecoreaudio.drv/audio.c
+++ b/dlls/winecoreaudio.drv/audio.c
@@ -486,27 +486,44 @@ BOOL CoreAudio_GetDevCaps (void)
OSStatus status;
UInt32 propertySize;
AudioDeviceID devId = CoreAudio_DefaultDevice.outputDeviceID;
+ AudioObjectPropertyAddress propertyAddress;
- char name[MAXPNAMELEN];
+ CFStringRef name;
+ CFRange range;
- propertySize = MAXPNAMELEN;
- status = AudioDeviceGetProperty(devId, 0 , FALSE, kAudioDevicePropertyDeviceName, &propertySize, name);
+ propertySize = sizeof(name);
+ propertyAddress.mSelector = kAudioObjectPropertyName;
+ propertyAddress.mScope = kAudioDevicePropertyScopeOutput;
+ propertyAddress.mElement = kAudioObjectPropertyElementMaster;
+ status = AudioObjectGetPropertyData(devId, &propertyAddress, 0, NULL, &propertySize, &name);
if (status) {
- ERR("AudioHardwareGetProperty for kAudioDevicePropertyDeviceName return %s\n", wine_dbgstr_fourcc(status));
+ ERR("AudioObjectGetPropertyData for kAudioObjectPropertyName return %s\n", wine_dbgstr_fourcc(status));
return FALSE;
}
- memcpy(CoreAudio_DefaultDevice.ds_desc.szDesc, name, sizeof(name));
+ CFStringGetCString(name, CoreAudio_DefaultDevice.ds_desc.szDesc,
+ sizeof(CoreAudio_DefaultDevice.ds_desc.szDesc),
+ kCFStringEncodingUTF8);
strcpy(CoreAudio_DefaultDevice.ds_desc.szDrvname, "winecoreaudio.drv");
- MultiByteToWideChar(CP_UNIXCP, 0, name, sizeof(name),
- CoreAudio_DefaultDevice.out_caps.szPname,
- sizeof(CoreAudio_DefaultDevice.out_caps.szPname) / sizeof(WCHAR));
- memcpy(CoreAudio_DefaultDevice.dev_name, name, 32);
+ range = CFRangeMake(0, min(sizeof(CoreAudio_DefaultDevice.out_caps.szPname) / sizeof(WCHAR) - 1, CFStringGetLength(name)));
+ CFStringGetCharacters(name, range, CoreAudio_DefaultDevice.out_caps.szPname);
+ CoreAudio_DefaultDevice.out_caps.szPname[range.length] = 0;
+ CFStringGetCString(name, CoreAudio_DefaultDevice.dev_name, 32, kCFStringEncodingUTF8);
+ CFRelease(name);
propertySize = sizeof(CoreAudio_DefaultDevice.streamDescription);
- status = AudioDeviceGetProperty(devId, 0, FALSE , kAudioDevicePropertyStreamFormat, &propertySize, &CoreAudio_DefaultDevice.streamDescription);
+ /* FIXME: kAudioDevicePropertyStreamFormat is deprecated. We're
+ * "supposed" to get an AudioStream object from the AudioDevice,
+ * then query it for the format with kAudioStreamPropertyVirtualFormat.
+ * Apple says that this is for our own good, because this property
+ * "has been shown to lead to programming mistakes by clients when
+ * working with devices with multiple streams." Only one problem:
+ * which stream? For now, just query the device.
+ */
+ propertyAddress.mSelector = kAudioDevicePropertyStreamFormat;
+ status = AudioObjectGetPropertyData(devId, &propertyAddress, 0, NULL, &propertySize, &CoreAudio_DefaultDevice.streamDescription);
if (status != noErr) {
- ERR("AudioHardwareGetProperty for kAudioDevicePropertyStreamFormat return %s\n", wine_dbgstr_fourcc(status));
+ ERR("AudioObjectGetPropertyData for kAudioDevicePropertyStreamFormat return %s\n", wine_dbgstr_fourcc(status));
return FALSE;
}
@@ -549,6 +566,7 @@ LONG CoreAudio_WaveInit(void)
{
OSStatus status;
UInt32 propertySize;
+ AudioObjectPropertyAddress propertyAddress;
int i;
CFStringRef messageThreadPortName;
CFMessagePortRef port_ReceiveInMessageThread;
@@ -557,19 +575,23 @@ LONG CoreAudio_WaveInit(void)
TRACE("()\n");
/* number of sound cards */
- AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &propertySize, NULL);
+ propertyAddress.mSelector = kAudioHardwarePropertyDevices;
+ propertyAddress.mScope = kAudioObjectPropertyScopeGlobal;
+ propertyAddress.mElement = kAudioObjectPropertyElementMaster;
+ AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &propertySize);
propertySize /= sizeof(AudioDeviceID);
TRACE("sound cards : %lu\n", propertySize);
/* Get the output device */
propertySize = sizeof(CoreAudio_DefaultDevice.outputDeviceID);
- status = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &propertySize, &CoreAudio_DefaultDevice.outputDeviceID);
+ propertyAddress.mSelector = kAudioHardwarePropertyDefaultOutputDevice;
+ status = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &propertySize, &CoreAudio_DefaultDevice.outputDeviceID);
if (status) {
- ERR("AudioHardwareGetProperty return %s for kAudioHardwarePropertyDefaultOutputDevice\n", wine_dbgstr_fourcc(status));
+ ERR("AudioObjectGetPropertyData return %s for kAudioHardwarePropertyDefaultOutputDevice\n", wine_dbgstr_fourcc(status));
return DRV_FAILURE;
}
if (CoreAudio_DefaultDevice.outputDeviceID == kAudioDeviceUnknown) {
- ERR("AudioHardwareGetProperty: CoreAudio_DefaultDevice.outputDeviceID == kAudioDeviceUnknown\n");
+ ERR("AudioObjectGetPropertyData: CoreAudio_DefaultDevice.outputDeviceID == kAudioDeviceUnknown\n");
return DRV_FAILURE;
}
More information about the wine-cvs
mailing list