play a bell sound
This commit is contained in:
parent
e4a570b247
commit
329921ff32
Binary file not shown.
38
main.c
38
main.c
|
@ -16,6 +16,10 @@
|
||||||
// allow us to load and scale fonts
|
// allow us to load and scale fonts
|
||||||
#include <proto/diskfont.h>
|
#include <proto/diskfont.h>
|
||||||
|
|
||||||
|
// handle images and sound
|
||||||
|
#include <proto/datatypes.h>
|
||||||
|
#include <datatypes/datatypesclass.h>
|
||||||
|
|
||||||
// timer stuff. using proto/timer.h did not work well, likely
|
// timer stuff. using proto/timer.h did not work well, likely
|
||||||
// because of how you have to open the device.
|
// because of how you have to open the device.
|
||||||
#include <clib/timer_protos.h>
|
#include <clib/timer_protos.h>
|
||||||
|
@ -110,6 +114,10 @@ struct Device *TimerBase;
|
||||||
struct timerequest *TimerIO;
|
struct timerequest *TimerIO;
|
||||||
struct timeval currentSystemTime;
|
struct timeval currentSystemTime;
|
||||||
|
|
||||||
|
// sound stuff
|
||||||
|
// get that bell
|
||||||
|
#define BELL_FILENAME "bell.8svx"
|
||||||
|
|
||||||
// our business logic
|
// our business logic
|
||||||
// for how long should I cook this pizza?
|
// for how long should I cook this pizza?
|
||||||
unsigned int uiHours = 0;
|
unsigned int uiHours = 0;
|
||||||
|
@ -562,6 +570,29 @@ void handleIntuitionMessage(struct IntuiMessage *iMessage) {
|
||||||
|
|
||||||
void endTimer(void) {
|
void endTimer(void) {
|
||||||
// TODO: play an included IFF 8SVX sound
|
// TODO: play an included IFF 8SVX sound
|
||||||
|
APTR bellSound = NULL;
|
||||||
|
struct dtTrigger myTrigger;
|
||||||
|
struct MsgPort *TimerPort;
|
||||||
|
ULONG soundPlayResult, timerSignal;
|
||||||
|
|
||||||
|
if (bellSound = NewDTObject(BELL_FILENAME, DTA_GroupID, GID_SOUND, TAG_END)) {
|
||||||
|
myTrigger.MethodID = DTM_TRIGGER;
|
||||||
|
myTrigger.dtt_GInfo = NULL;
|
||||||
|
myTrigger.dtt_Function = STM_PLAY;
|
||||||
|
myTrigger.dtt_Data = NULL;
|
||||||
|
|
||||||
|
// https://github.com/khval/AmosKittens/blob/79f00ba3b81805b54fd4e437f667ea2eecab740d/OS/AmigaOS/animation.cpp#L128
|
||||||
|
soundPlayResult = DoDTMethodA(bellSound, NULL, NULL, (Msg) &myTrigger);
|
||||||
|
|
||||||
|
TimerPort = TimerIO->tr_node.io_Message.mn_ReplyPort;
|
||||||
|
|
||||||
|
// eventually wait for the sound to stop playing
|
||||||
|
TimerIO->tr_node.io_Command = TR_ADDREQUEST;
|
||||||
|
TimerIO->tr_time.tv_secs = 3;
|
||||||
|
TimerIO->tr_time.tv_micro = 0;
|
||||||
|
SendIO((struct IORequest *)TimerIO);
|
||||||
|
}
|
||||||
|
|
||||||
DisplayBeep(screen);
|
DisplayBeep(screen);
|
||||||
|
|
||||||
uiHours = uiMinutes = uiSeconds = 0;
|
uiHours = uiMinutes = uiSeconds = 0;
|
||||||
|
@ -572,6 +603,13 @@ void endTimer(void) {
|
||||||
|
|
||||||
clearUI();
|
clearUI();
|
||||||
renderUI();
|
renderUI();
|
||||||
|
|
||||||
|
if (bellSound) {
|
||||||
|
timerSignal = 1L << TimerPort->mp_SigBit;
|
||||||
|
Wait(timerSignal);
|
||||||
|
|
||||||
|
DisposeDTObject(bellSound);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleTimerMessage(void) {
|
void handleTimerMessage(void) {
|
||||||
|
|
Loading…
Reference in New Issue