修复Music播放状态判断问题
This commit is contained in:
		
							parent
							
								
									c40ac00ed9
								
							
						
					
					
						commit
						2c454d4a4c
					
				|  | @ -62,7 +62,6 @@ IXAudio2MasteringVoice * e2d::Music::XAudio2Tool::getMasteringVoice() | ||||||
| 
 | 
 | ||||||
| e2d::Music::Music() | e2d::Music::Music() | ||||||
| 	: _opened(false) | 	: _opened(false) | ||||||
| 	, _playing(false) |  | ||||||
| 	, _wfx(nullptr) | 	, _wfx(nullptr) | ||||||
| 	, _hmmio(nullptr) | 	, _hmmio(nullptr) | ||||||
| 	, _resBuffer(nullptr) | 	, _resBuffer(nullptr) | ||||||
|  | @ -77,7 +76,6 @@ e2d::Music::Music() | ||||||
| 
 | 
 | ||||||
| e2d::Music::Music(const e2d::String & filePath) | e2d::Music::Music(const e2d::String & filePath) | ||||||
| 	: _opened(false) | 	: _opened(false) | ||||||
| 	, _playing(false) |  | ||||||
| 	, _wfx(nullptr) | 	, _wfx(nullptr) | ||||||
| 	, _hmmio(nullptr) | 	, _hmmio(nullptr) | ||||||
| 	, _resBuffer(nullptr) | 	, _resBuffer(nullptr) | ||||||
|  | @ -94,7 +92,6 @@ e2d::Music::Music(const e2d::String & filePath) | ||||||
| 
 | 
 | ||||||
| e2d::Music::Music(const Resource& res) | e2d::Music::Music(const Resource& res) | ||||||
| 	: _opened(false) | 	: _opened(false) | ||||||
| 	, _playing(false) |  | ||||||
| 	, _wfx(nullptr) | 	, _wfx(nullptr) | ||||||
| 	, _hmmio(nullptr) | 	, _hmmio(nullptr) | ||||||
| 	, _resBuffer(nullptr) | 	, _resBuffer(nullptr) | ||||||
|  | @ -187,7 +184,6 @@ bool e2d::Music::open(const e2d::String & filePath) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	_opened = true; | 	_opened = true; | ||||||
| 	_playing = false; |  | ||||||
| 	return true; | 	return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -266,7 +262,6 @@ bool e2d::Music::open(const Resource& res) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	_opened = true; | 	_opened = true; | ||||||
| 	_playing = false; |  | ||||||
| 	return true; | 	return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -284,7 +279,9 @@ bool e2d::Music::play(int nLoopCount) | ||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (_playing) | 	XAUDIO2_VOICE_STATE state; | ||||||
|  | 	_voice->GetState(&state); | ||||||
|  | 	if (state.BuffersQueued) | ||||||
| 	{ | 	{ | ||||||
| 		stop(); | 		stop(); | ||||||
| 	} | 	} | ||||||
|  | @ -308,10 +305,7 @@ bool e2d::Music::play(int nLoopCount) | ||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (SUCCEEDED(hr = _voice->Start(0))) | 	hr = _voice->Start(0); | ||||||
| 	{ |  | ||||||
| 		_playing = true; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	return SUCCEEDED(hr); | 	return SUCCEEDED(hr); | ||||||
| } | } | ||||||
|  | @ -320,10 +314,7 @@ void e2d::Music::pause() | ||||||
| { | { | ||||||
| 	if (_voice) | 	if (_voice) | ||||||
| 	{ | 	{ | ||||||
| 		if (SUCCEEDED(_voice->Stop())) | 		_voice->Stop(); | ||||||
| 		{ |  | ||||||
| 			_playing = false; |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -331,10 +322,7 @@ void e2d::Music::resume() | ||||||
| { | { | ||||||
| 	if (_voice) | 	if (_voice) | ||||||
| 	{ | 	{ | ||||||
| 		if (SUCCEEDED(_voice->Start())) | 		_voice->Start(); | ||||||
| 		{ |  | ||||||
| 			_playing = true; |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -346,7 +334,6 @@ void e2d::Music::stop() | ||||||
| 		{ | 		{ | ||||||
| 			_voice->ExitLoop(); | 			_voice->ExitLoop(); | ||||||
| 			_voice->FlushSourceBuffers(); | 			_voice->FlushSourceBuffers(); | ||||||
| 			_playing = false; |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -372,19 +359,18 @@ void e2d::Music::close() | ||||||
| 	SAFE_DELETE_ARRAY(_wfx); | 	SAFE_DELETE_ARRAY(_wfx); | ||||||
| 
 | 
 | ||||||
| 	_opened = false; | 	_opened = false; | ||||||
| 	_playing = false; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool e2d::Music::isPlaying() const | bool e2d::Music::isPlaying() const | ||||||
| { | { | ||||||
| 	if (_opened && _voice) | 	if (_opened && _voice) | ||||||
| 	{ | 	{ | ||||||
| 		return _playing; | 		XAUDIO2_VOICE_STATE state; | ||||||
|  | 		_voice->GetState(&state); | ||||||
|  | 		if (state.BuffersQueued) | ||||||
|  | 			return true; | ||||||
| 	} | 	} | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 	return false; | 	return false; | ||||||
| 	} |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| IXAudio2SourceVoice * e2d::Music::getIXAudio2SourceVoice() const | IXAudio2SourceVoice * e2d::Music::getIXAudio2SourceVoice() const | ||||||
|  |  | ||||||
|  | @ -154,7 +154,6 @@ protected: | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
| 	bool					_opened; | 	bool					_opened; | ||||||
| 	bool					_playing; |  | ||||||
| 	DWORD					_dwSize; | 	DWORD					_dwSize; | ||||||
| 	CHAR*					_resBuffer; | 	CHAR*					_resBuffer; | ||||||
| 	BYTE*					_waveData; | 	BYTE*					_waveData; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue