修复Music播放状态判断问题

This commit is contained in:
Nomango 2018-09-02 00:02:49 +08:00
parent c40ac00ed9
commit 2c454d4a4c
2 changed files with 11 additions and 26 deletions

View File

@ -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);
else if (state.BuffersQueued)
{ return true;
return false;
} }
return false;
} }
IXAudio2SourceVoice * e2d::Music::getIXAudio2SourceVoice() const IXAudio2SourceVoice * e2d::Music::getIXAudio2SourceVoice() const

View File

@ -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;