| | 405 | else if( i_action == ACTIONID_AUDIODEVICE_CYCLE ) |
|---|
| | 406 | { |
|---|
| | 407 | vlc_value_t val, list, list2; |
|---|
| | 408 | int i_count, i; |
|---|
| | 409 | |
|---|
| | 410 | aout_instance_t *p_aout = |
|---|
| | 411 | vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); |
|---|
| | 412 | var_Get( p_aout, "audio-device", &val ); |
|---|
| | 413 | var_Change( p_aout, "audio-device", VLC_VAR_GETCHOICES, |
|---|
| | 414 | &list, &list2 ); |
|---|
| | 415 | i_count = list.p_list->i_count; |
|---|
| | 416 | |
|---|
| | 417 | /* Not enough device to switch between */ |
|---|
| | 418 | if( i_count <= 1 ) |
|---|
| | 419 | continue; |
|---|
| | 420 | |
|---|
| | 421 | for( i = 0; i < i_count; i++ ) |
|---|
| | 422 | { |
|---|
| | 423 | if( val.i_int == list.p_list->p_values[i].i_int ) |
|---|
| | 424 | { |
|---|
| | 425 | break; |
|---|
| | 426 | } |
|---|
| | 427 | } |
|---|
| | 428 | if( i == i_count ) |
|---|
| | 429 | { |
|---|
| | 430 | msg_Warn( p_aout, |
|---|
| | 431 | "invalid current audio device, selecting 0" ); |
|---|
| | 432 | var_Set( p_aout, "audio-device", |
|---|
| | 433 | list.p_list->p_values[0] ); |
|---|
| | 434 | i = 0; |
|---|
| | 435 | } |
|---|
| | 436 | else if( i == i_count -1 ) |
|---|
| | 437 | { |
|---|
| | 438 | var_Set( p_aout, "audio-device", |
|---|
| | 439 | list.p_list->p_values[0] ); |
|---|
| | 440 | i = 0; |
|---|
| | 441 | } |
|---|
| | 442 | else |
|---|
| | 443 | { |
|---|
| | 444 | var_Set( p_aout, "audio-device", |
|---|
| | 445 | list.p_list->p_values[i+1] ); |
|---|
| | 446 | i++; |
|---|
| | 447 | } |
|---|
| | 448 | vout_OSDMessage( p_intf, DEFAULT_CHAN, |
|---|
| | 449 | _("Audio Device: %s"), |
|---|
| | 450 | list2.p_list->p_values[i].psz_string); |
|---|
| | 451 | vlc_object_release( p_aout ); |
|---|
| | 452 | } |
|---|
| 512 | | } |
|---|
| 513 | | else if( i_action == ACTIONID_AUDIODEVICE_CYCLE && p_vout) |
|---|
| 514 | | { |
|---|
| 515 | | vlc_value_t val, list, list2; |
|---|
| 516 | | int i_count, i; |
|---|
| 517 | | aout_instance_t *p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE ); |
|---|
| 518 | | var_Get( p_aout, "audio-device", &val ); |
|---|
| 519 | | var_Change( p_aout, "audio-device", VLC_VAR_GETCHOICES,&list, &list2 ); |
|---|
| 520 | | i_count = list.p_list->i_count; |
|---|
| 521 | | if( i_count <= 1 ) |
|---|
| 522 | | { |
|---|
| 523 | | continue; |
|---|
| 524 | | } |
|---|
| 525 | | |
|---|
| 526 | | for( i = 0; i < i_count; i++ ) |
|---|
| 527 | | { |
|---|
| 528 | | if( val.i_int == list.p_list->p_values[i].i_int ) |
|---|
| 529 | | { |
|---|
| 530 | | break; |
|---|
| 531 | | } |
|---|
| 532 | | } |
|---|
| 533 | | if( i == i_count ) |
|---|
| 534 | | { |
|---|
| 535 | | msg_Warn( p_aout, |
|---|
| 536 | | "invalid current audio device, selecting 0" ); |
|---|
| 537 | | var_Set( p_aout, "audio-device", |
|---|
| 538 | | list.p_list->p_values[0] ); |
|---|
| 539 | | i = 0; |
|---|
| 540 | | |
|---|
| 541 | | } |
|---|
| 542 | | else if( i == i_count -1 ) |
|---|
| 543 | | { |
|---|
| 544 | | var_Set( p_aout, "audio-device", |
|---|
| 545 | | list.p_list->p_values[0] ); |
|---|
| 546 | | i = 0; |
|---|
| 547 | | |
|---|
| 548 | | } |
|---|
| 549 | | else |
|---|
| 550 | | { |
|---|
| 551 | | var_Set( p_aout, "audio-device", |
|---|
| 552 | | list.p_list->p_values[i+1] ); |
|---|
| 553 | | i++; |
|---|
| 554 | | } |
|---|
| 555 | | vout_OSDMessage( VLC_OBJECT(p_input), |
|---|
| 556 | | DEFAULT_CHAN, |
|---|
| 557 | | _("Audio Device: %s"), |
|---|
| 558 | | list2.p_list->p_values[i].psz_string); |
|---|
| 559 | | vlc_object_release( p_aout ); |
|---|