Mercurial > hg > dmlib
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); |