comparison ppl.c @ 203:bed7457cd8da

Improve channel mute control. Now shift+M will toggle mute of all channels, ctrl+M will clear all mutes and 'M' alone will toggle one channel.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 07 Oct 2012 12:09:44 +0300
parents 844f38cbff65
children 247b03797fc9
comparison
equal deleted inserted replaced
202:85614db5f577 203:bed7457cd8da
524 jvmRenderAudio(d, stream, len / jvmGetSampleSize(d)); 524 jvmRenderAudio(d, stream, len / jvmGetSampleSize(d));
525 } 525 }
526 } 526 }
527 527
528 528
529 void dmMuteChannels(int nchannel) 529 void dmMuteChannels(BOOL mute)
530 { 530 {
531 int i; 531 int i;
532 for (i = 0; i < engine.mod->nchannels; i++) 532 for (i = 0; i < engine.mod->nchannels; i++)
533 jvmMute(engine.dev, i, TRUE); 533 jvmMute(engine.dev, i, mute);
534
535 jvmMute(engine.dev, nchannel, FALSE);
536 } 534 }
537 535
538 int main(int argc, char *argv[]) 536 int main(int argc, char *argv[])
539 { 537 {
540 BOOL initSDL = FALSE; 538 BOOL initSDL = FALSE;
541 DMResource *file = NULL; 539 DMResource *file = NULL;
542 int result = -1; 540 int result = -1;
541 BOOL muteState = FALSE;
543 542
544 memset(&engine, 0, sizeof(engine)); 543 memset(&engine, 0, sizeof(engine));
545 544
546 engine.optScrWidth = 640; 545 engine.optScrWidth = 640;
547 engine.optScrHeight = 480; 546 engine.optScrHeight = 480;
688 jmpPlayOrder(engine.plr, optStartOrder); 687 jmpPlayOrder(engine.plr, optStartOrder);
689 jvmSetGlobalVol(engine.dev, 64); 688 jvmSetGlobalVol(engine.dev, 64);
690 689
691 if (optMuteOChannels >= 0 && optMuteOChannels < engine.mod->nchannels) 690 if (optMuteOChannels >= 0 && optMuteOChannels < engine.mod->nchannels)
692 { 691 {
693 dmMuteChannels(optMuteOChannels); 692 dmMuteChannels(TRUE);
693 jvmMute(engine.dev, optMuteOChannels, FALSE);
694 engine.actChannel = optMuteOChannels; 694 engine.actChannel = optMuteOChannels;
695 muteState = TRUE;
695 } 696 }
696 697
697 // Initialize video 698 // Initialize video
698 if (!dmInitializeVideo()) 699 if (!dmInitializeVideo())
699 goto error_exit; 700 goto error_exit;
740 engine.actChannel++; 741 engine.actChannel++;
741 force = TRUE; 742 force = TRUE;
742 } 743 }
743 break; 744 break;
744 745
745 case SDLK_RETURN:
746 jvmMute(engine.dev, engine.actChannel, !jvmGetMute(engine.dev, engine.actChannel));
747 force = TRUE;
748 break;
749
750 case SDLK_m: 746 case SDLK_m:
751 dmMuteChannels(engine.actChannel); 747 if (engine.event.key.keysym.mod & KMOD_SHIFT)
748 {
749 muteState = !muteState;
750 dmMuteChannels(muteState);
751 }
752 else
753 if (engine.event.key.keysym.mod & KMOD_CTRL)
754 {
755 dmMuteChannels(FALSE);
756 }
757 else
758 {
759 jvmMute(engine.dev, engine.actChannel, !jvmGetMute(engine.dev, engine.actChannel));
760 }
752 force = TRUE; 761 force = TRUE;
753 break; 762 break;
754 763
755 case SDLK_PAGEUP: 764 case SDLK_PAGEUP:
756 JSS_LOCK(engine.dev); 765 JSS_LOCK(engine.dev);