diff --git a/cocos/audio/RDAudio.cpp b/cocos/audio/RDAudio.cpp index 0774485..e6beb06 100644 --- a/cocos/audio/RDAudio.cpp +++ b/cocos/audio/RDAudio.cpp @@ -67,18 +67,16 @@ void RDAudio::destroyInstance() void RDAudio::pause() { -//#if CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID - alcMakeContextCurrent(NULL); - alcSuspendContext(_context); -//#endif + if (_device) { + alcDevicePauseSOFT(_device); + } } void RDAudio::resume() { -//#if CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID - alcMakeContextCurrent(_context); - alcProcessContext(_context); -//#endif + if (_device) { + alcDeviceResumeSOFT(_device); + } } void RDAudio::waitForQuit() diff --git a/cocos/audio/RDAudio.h b/cocos/audio/RDAudio.h index f41a236..7646802 100644 --- a/cocos/audio/RDAudio.h +++ b/cocos/audio/RDAudio.h @@ -24,6 +24,7 @@ #include "platform/CCPlatformConfig.h" #include "base/CCRef.h" +#define AL_ALEXT_PROTOTYPES #include "alext.h" typedef void (*AudioCallback)(int funcID, ALuint bufferID); diff --git a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxActivity.java b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxActivity.java index 556f598..df27aa1 100644 --- a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxActivity.java +++ b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxActivity.java @@ -53,6 +53,8 @@ import org.cocos2dx.lib.Cocos2dxHelper.Cocos2dxHelperListener; import org.cocos2dx.utils.PSNetwork; import org.cocos2dx.utils.PSDevice; +import java.util.ArrayList; + import javax.microedition.khronos.egl.EGL10; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.egl.EGLDisplay; diff --git a/cocos/scripting/lua-bindings/manual/audio/lua_audio_manual.cpp b/cocos/scripting/lua-bindings/manual/audio/lua_audio_manual.cpp index 9dfe8d7..649ac3d 100755 --- a/cocos/scripting/lua-bindings/manual/audio/lua_audio_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/audio/lua_audio_manual.cpp @@ -78,6 +78,18 @@ static int lnewSource(lua_State * L) return 1;// number of return values } +static int lpause(lua_State * L) +{ + RDAudio::getInstance()->pause(); + return 0; +} + +static int lresume(lua_State * L) +{ + RDAudio::getInstance()->resume(); + return 0; +} + /******************** for buffer metatable ********************/ static int lBufferGC(lua_State *L) { @@ -228,6 +240,8 @@ static const struct luaL_Reg meta_source [] = { static const struct luaL_Reg audio_funcs [] = { {"newBuffer", lnewBuffer}, {"newSource", lnewSource}, + {"pause", lpause}, + {"resume", lresume}, {NULL, NULL} }; diff --git a/templates/src/framework/AppBase.lua b/templates/src/framework/AppBase.lua index 1d2110f..d566bde 100755 --- a/templates/src/framework/AppBase.lua +++ b/templates/src/framework/AppBase.lua @@ -4,12 +4,12 @@ local AppBase = class("AppBase") function AppBase:ctor() local eventDispatcher = cc.Director:getInstance():getEventDispatcher() local customListenerBg = cc.EventListenerCustom:create("APP_ENTER_BACKGROUND_EVENT", function() - audio.pauseAll() + Rapid2D_CAudio.pause() -- stop OpenAL backend thread self:onEnterBackground() end) eventDispatcher:addEventListenerWithFixedPriority(customListenerBg, 1) local customListenerFg = cc.EventListenerCustom:create("APP_ENTER_FOREGROUND_EVENT", function() - audio.resumeAll() + Rapid2D_CAudio.resume() -- start OpenAL backend thread self:onEnterForeground() end) eventDispatcher:addEventListenerWithFixedPriority(customListenerFg, 1)