Mercurial > mplayer.hg
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) |