File diff r7169:b87d36998a2d → r7170:38b143754b40
src/music/dmusic.cpp
Show inline comments
 
@@ -44,13 +44,13 @@ struct ProcPtrs {
 
	void (WINAPI * CoUninitialize)();
 
};
 

	
 
static ProcPtrs proc;
 

	
 

	
 
static const char* DMusicMidiStart(const char* const* parm)
 
const char *MusicDriver_DMusic::Start(const char * const *parm)
 
{
 
	if (performance != NULL) return NULL;
 

	
 
	if (proc.CoCreateInstance == NULL) {
 
		if (!LoadLibraryList((Function*)&proc, ole_files))
 
			return "ole32.dll load failed";
 
@@ -106,13 +106,13 @@ static const char* DMusicMidiStart(const
 
	}
 

	
 
	return NULL;
 
}
 

	
 

	
 
static void DMusicMidiStop()
 
void MusicDriver_DMusic::Stop()
 
{
 
	seeking = false;
 

	
 
	if (performance != NULL) performance->Stop(NULL, NULL, 0, 0);
 

	
 
	if (segment != NULL) {
 
@@ -133,13 +133,13 @@ static void DMusicMidiStop()
 
	}
 

	
 
	proc.CoUninitialize();
 
}
 

	
 

	
 
static void DMusicMidiPlaySong(const char* filename)
 
void MusicDriver_DMusic::PlaySong(const char* filename)
 
{
 
	/* set up the loader object info */
 
	DMUS_OBJECTDESC obj_desc;
 
	ZeroMemory(&obj_desc, sizeof(obj_desc));
 
	obj_desc.dwSize = sizeof(obj_desc);
 
	obj_desc.guidClass = CLSID_DirectMusicSegment;
 
@@ -185,45 +185,36 @@ static void DMusicMidiPlaySong(const cha
 
	}
 

	
 
	seeking = true;
 
}
 

	
 

	
 
static void DMusicMidiStopSong()
 
void MusicDriver_DMusic::StopSong()
 
{
 
	if (FAILED(performance->Stop(segment, NULL, 0, 0))) {
 
		DEBUG(driver, 0, "DirectMusic: StopSegment failed");
 
	}
 
	seeking = false;
 
}
 

	
 

	
 
static bool DMusicMidiIsSongPlaying()
 
bool MusicDriver_DMusic::IsSongPlaying()
 
{
 
	/* Not the nicest code, but there is a short delay before playing actually
 
	 * starts. OpenTTD makes no provision for this. */
 
	if (performance->IsPlaying(segment, NULL) == S_OK) {
 
		seeking = false;
 
		return true;
 
	} else {
 
		return seeking;
 
	}
 
}
 

	
 

	
 
static void DMusicMidiSetVolume(byte vol)
 
void MusicDriver_DMusic::SetVolume(byte vol)
 
{
 
	long db = vol * 2000 / 127 - 2000; ///< 0 - 127 -> -2000 - 0
 
	performance->SetGlobalParam(GUID_PerfMasterVolume, &db, sizeof(db));
 
}
 

	
 

	
 
const HalMusicDriver _dmusic_midi_driver = {
 
	DMusicMidiStart,
 
	DMusicMidiStop,
 
	DMusicMidiPlaySong,
 
	DMusicMidiStopSong,
 
	DMusicMidiIsSongPlaying,
 
	DMusicMidiSetVolume,
 
};
 

	
 
#endif /* WIN32_ENABLE_DIRECTMUSIC_SUPPORT */