Skip to content

Commit 3c1e36c

Browse files
James Chenminggo
authored andcommitted
Cleanup AudioEngine resource after exiting NewAudioEngineTest. (cocos2d#17675)
* Unschedules update in AudioEngine implementation while AudioEngine::end is called. * Cleanup AudioEngine resource after exiting NewAudioEngineTest.
1 parent 75d0ebf commit 3c1e36c

File tree

5 files changed

+23
-0
lines changed

5 files changed

+23
-0
lines changed

cocos/audio/apple/AudioEngine-inl.mm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,18 @@ -(void) dealloc
192192
AudioEngineImpl::AudioEngineImpl()
193193
: _lazyInitLoop(true)
194194
, _currentAudioID(0)
195+
, _scheduler(nullptr)
195196
{
196197

197198
}
198199

199200
AudioEngineImpl::~AudioEngineImpl()
200201
{
202+
if (_scheduler != nullptr)
203+
{
204+
_scheduler->unschedule(CC_SCHEDULE_SELECTOR(AudioEngineImpl::update), this);
205+
}
206+
201207
if (s_ALContext) {
202208
alDeleteSources(MAX_AUDIOINSTANCES, _alSources);
203209

cocos/audio/win32/AudioEngine-win32.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,18 @@ static ALCcontext *s_ALContext = nullptr;
112112
AudioEngineImpl::AudioEngineImpl()
113113
: _lazyInitLoop(true)
114114
, _currentAudioID(0)
115+
, _scheduler(nullptr)
115116
{
116117

117118
}
118119

119120
AudioEngineImpl::~AudioEngineImpl()
120121
{
122+
if (_scheduler != nullptr)
123+
{
124+
_scheduler->unschedule(CC_SCHEDULE_SELECTOR(AudioEngineImpl::update), this);
125+
}
126+
121127
if (s_ALContext) {
122128
alDeleteSources(MAX_AUDIOINSTANCES, _alSources);
123129

cocos/audio/winrt/AudioEngine-winrt.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ AudioEngineImpl::AudioEngineImpl()
3838

3939
AudioEngineImpl::~AudioEngineImpl()
4040
{
41+
auto scheduler = cocos2d::Director::getInstance()->getScheduler();
42+
scheduler->unschedule(schedule_selector(AudioEngineImpl::update), this);
4143
_audioCaches.clear();
4244
}
4345

tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,12 @@ std::string AudioEngineTestDemo::title() const
207207
return "New Audio Engine Test";
208208
}
209209

210+
void AudioEngineTestDemo::onBackCallback(cocos2d::Ref* sender)
211+
{
212+
AudioEngine::end();
213+
TestCase::onBackCallback(sender);
214+
}
215+
210216
// AudioControlTest
211217
bool AudioControlTest::init()
212218
{

tests/cpp-tests/Classes/NewAudioEngineTest/NewAudioEngineTest.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ class AudioEngineTestDemo : public TestCase
4141

4242
virtual std::string title() const override;
4343
virtual void onExit() override;
44+
45+
virtual void onBackCallback(cocos2d::Ref* sender) override;
46+
4447
protected:
4548
std::shared_ptr<bool> _isDestroyed;
4649
};

0 commit comments

Comments
 (0)