SDL_mixer: added Timidity_Stop() and music->TIMIDITY_Stop()

From 620ebbbb01fb9cc7864c9f4acf710c6c543a37f9 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Sun, 21 Mar 2021 18:55:00 +0300
Subject: [PATCH] added Timidity_Stop() and music->TIMIDITY_Stop()

Closes: https://github.com/libsdl-org/SDL_mixer/pull/304
---
 src/codecs/music_timidity.c    | 8 +++++++-
 src/codecs/timidity/playmidi.c | 5 +++++
 src/codecs/timidity/timidity.h | 1 +
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/codecs/music_timidity.c b/src/codecs/music_timidity.c
index 651d770..e0c1bc8 100644
--- a/src/codecs/music_timidity.c
+++ b/src/codecs/music_timidity.c
@@ -250,6 +250,12 @@ static void TIMIDITY_Delete(void *context)
     SDL_free(music);
 }
 
+static void TIMIDITY_Stop(void *context)
+{
+    TIMIDITY_Music *music = (TIMIDITY_Music *)context;
+    Timidity_Stop(music->song);
+}
+
 Mix_MusicInterface Mix_MusicInterface_TIMIDITY =
 {
     "TIMIDITY",
@@ -277,7 +283,7 @@ Mix_MusicInterface Mix_MusicInterface_TIMIDITY =
     NULL,   /* GetMetaTag */
     NULL,   /* Pause */
     NULL,   /* Resume */
-    NULL,   /* Stop */
+    TIMIDITY_Stop,
     TIMIDITY_Delete,
     TIMIDITY_Close,
     NULL    /* Unload */
diff --git a/src/codecs/timidity/playmidi.c b/src/codecs/timidity/playmidi.c
index 618f616..87ed253 100644
--- a/src/codecs/timidity/playmidi.c
+++ b/src/codecs/timidity/playmidi.c
@@ -630,6 +630,11 @@ void Timidity_Start(MidiSong *song)
   skip_to(song, 0);
 }
 
+void Timidity_Stop(MidiSong *song)
+{
+  song->playing = 0;
+}
+
 int Timidity_IsActive(MidiSong *song)
 {
   return song->playing;
diff --git a/src/codecs/timidity/timidity.h b/src/codecs/timidity/timidity.h
index db4c36f..3764c4f 100644
--- a/src/codecs/timidity/timidity.h
+++ b/src/codecs/timidity/timidity.h
@@ -156,6 +156,7 @@ extern void Timidity_Start(MidiSong *song);
 extern void Timidity_Seek(MidiSong *song, Uint32 ms);
 extern Uint32 Timidity_GetSongLength(MidiSong *song); /* returns millseconds */
 extern Uint32 Timidity_GetSongTime(MidiSong *song);   /* returns millseconds */
+extern void Timidity_Stop(MidiSong *song);
 extern int Timidity_IsActive(MidiSong *song);
 extern void Timidity_FreeSong(MidiSong *song);
 extern void Timidity_Exit(void);