oops, here is the patch
-- Jindrich Makovicka
diff -ur openttd-1.0.0-RC1.orig/src/driver.h openttd-1.0.0~rc1/src/driver.h --- openttd-1.0.0-RC1.orig/src/driver.h 2010-01-15 17:41:15.000000000 +0100 +++ openttd-1.0.0~rc1/src/driver.h 2010-02-20 09:44:59.344586485 +0100 @@ -30,8 +30,8 @@ enum Type { DT_BEGIN = 0, - DT_SOUND = 0, - DT_MUSIC, + DT_MUSIC = 0, + DT_SOUND, DT_VIDEO, DT_END, }; @@ -64,7 +64,7 @@ static const char *GetDriverTypeName(Driver::Type type) { - static const char * const driver_type_name[] = { "sound", "music", "video" }; + static const char * const driver_type_name[] = { "music", "sound", "video" }; return driver_type_name[type]; } diff -ur openttd-1.0.0-RC1.orig/src/music/extmidi.cpp openttd-1.0.0~rc1/src/music/extmidi.cpp --- openttd-1.0.0-RC1.orig/src/music/extmidi.cpp 2010-01-15 17:41:15.000000000 +0100 +++ openttd-1.0.0~rc1/src/music/extmidi.cpp 2010-02-20 02:00:52.000000000 +0100 @@ -50,7 +50,20 @@ { free(command); this->song[0] = '\0'; - this->DoStop(); + if (this->pid > 0) { + int i; + for (i = 0; i < 5; i++) { + kill(this->pid, SIGTERM); + if (waitpid(this->pid, NULL, WNOHANG) == this->pid) { + this->pid = -1; + return; + } + sleep(1); + } + kill(this->pid, SIGKILL); + waitpid(this->pid, NULL, 0); + this->pid = -1; + } } void MusicDriver_ExtMidi::PlaySong(const char *filename)