comparison libao2/ao_nas.c @ 9583:e442209e6241

Fix small memleak in control().
author ranma
date Fri, 14 Mar 2003 17:19:19 +0000
parents b1c5460a8105
children 12b1790038b0
comparison
equal deleted inserted replaced
9582:c9012dcd3a70 9583:e442209e6241
337 { 337 {
338 AuDeviceAttributes *dattr; 338 AuDeviceAttributes *dattr;
339 AuFixedPoint fpgain; 339 AuFixedPoint fpgain;
340 AuStatus as; 340 AuStatus as;
341 int gain; 341 int gain;
342 int retval = CONTROL_UNKNOWN;
343
342 ao_control_vol_t *vol = (ao_control_vol_t *)arg; 344 ao_control_vol_t *vol = (ao_control_vol_t *)arg;
343 345
344 dattr = AuGetDeviceAttributes(nas_data->aud, nas_data->dev, &as); 346 dattr = AuGetDeviceAttributes(nas_data->aud, nas_data->dev, &as);
345 if (as != AuSuccess) { 347 if (as != AuSuccess) {
346 nas_print_error(nas_data->aud, 348 nas_print_error(nas_data->aud,
354 case AOCONTROL_GET_VOLUME: 356 case AOCONTROL_GET_VOLUME:
355 357
356 vol->right = (float) gain; 358 vol->right = (float) gain;
357 vol->left = vol->right; 359 vol->left = vol->right;
358 360
359 return CONTROL_OK; 361 mp_msg(MSGT_AO, MSGL_DBG2, "ao_nas: AOCONTROL_GET_VOLUME: %d\n", gain);
362 retval = CONTROL_OK;
363 break;
360 364
361 case AOCONTROL_SET_VOLUME: 365 case AOCONTROL_SET_VOLUME:
362 /* 366 /*
363 * kn: we should have vol->left == vol->right but i don't 367 * kn: we should have vol->left == vol->right but i don't
364 * know if something can change it outside of ao_nas 368 * know if something can change it outside of ao_nas
365 * so i take the mean of both values. 369 * so i take the mean of both values.
366 */ 370 */
367 gain = (int) ((vol->left+vol->right)/2); 371 gain = (int) ((vol->left+vol->right)/2);
372 mp_msg(MSGT_AO, MSGL_DBG2, "ao_nas: AOCONTROL_SET_VOLUME: %d\n", gain);
368 373
369 fpgain = AuFixedPointFromSum(gain, 0); 374 fpgain = AuFixedPointFromSum(gain, 0);
370 AuDeviceGain(dattr) = fpgain; 375 AuDeviceGain(dattr) = fpgain;
371 AuSetDeviceAttributes(nas_data->aud, nas_data->dev, 376 AuSetDeviceAttributes(nas_data->aud, nas_data->dev,
372 AuCompDeviceGainMask, dattr, &as); 377 AuCompDeviceGainMask, dattr, &as);
373 if (as != AuSuccess) { 378 if (as != AuSuccess) {
374 nas_print_error(nas_data->aud, 379 nas_print_error(nas_data->aud,
375 "control(): AuSetDeviceAttributes", as); 380 "control(): AuSetDeviceAttributes", as);
376 return CONTROL_ERROR; 381 retval = CONTROL_ERROR;
377 } 382 } else retval = CONTROL_OK;
378 return CONTROL_OK; 383 break;
379
380 default:
381 return CONTROL_UNKNOWN;
382 }; 384 };
385
386 AuFreeDeviceAttributes(nas_data->aud, 1, dattr);
387 return retval;
383 } 388 }
384 389
385 // open & setup audio device 390 // open & setup audio device
386 // return: 1=success 0=fail 391 // return: 1=success 0=fail
387 static int init(int rate,int channels,int format,int flags) 392 static int init(int rate,int channels,int format,int flags)