@zhangxm
I sent you another email with my real project in it. Hope we can fix it…
With respect to your attach file, i didn’t see any activity class with egl initialization just the appdelegate with just the instance of it.
On v3.0, we use native activity.
@newstar55a
I know right… all NativeActivity code is written in cpp. That’s why I’m confused because it’s different than usual initialization which includes GLSurfaceView. So is there workaround on this?
@siauw
I’m running your sample project. Now I have reproduced the problem.
And I will reply in this topic once I found some clues.
After some searching on google it seems the problem is only happened when using opegl es 2 on adreno 200 series.
What’s the key word you searched? <qgl2DrvAPI_glDrawElementsInstancedXXX:689>: GLINVALIDVALUE
This one?
I found if close the FPS output, the errors in logcat : “CCTextureAtlas.cpp drawNumberOfQuads 701” will not output anymore.
But the app always crashed. So I think the GL errors are not the real reason of crash.
@zhangbin
I searched “adreno200 crash on resume”, you will get pages with similar issues with this on all other graphic engine.
http://comments.gmane.org/gmane.comp.lib.sdl/64140
https://developer.qualcomm.com/forum/qdevnet-forums/mobile-gaming-graphics-optimization-adreno/11525
I tried a game made with cocos2d-x “Run Cow Run”, there is no problem at all like this, it seems the developer @Obg1 managed to fix the problem.
If I remove director->setDisplayStats(true) on AppDelegate, I got this error instead
02-25 14:39:21.709: E/dalvikvm(25375): JNI ERROR: env->self != thread-self (0xa3b970 vs. 0xec3718); auto-correcting
Hi, @siauw.
I found the reason of the crash:
void MainMenu::onPlay( Object *pSender, gui::TouchEventType type)
{
// this line caused the crash, because it removed the event listeners in engine.
this->_eventDispatcher->removeAllEventListeners();
CCLOG("play clicked");
Director::getInstance()->replaceScene(PlayState::createScene());
cleanUp();
}
There is a new issue to handle the problem: http://www.cocos2d-x.org/issues/4129
Before it’s fixed, you can solve the problem by remove the code : removeAllEventListeners().
Thanks for your feedback!
siauw wrote:
@newstar55a
I know right… all NativeActivity code is written in cpp. That’s why I’m confused because it’s different than usual initialization which includes GLSurfaceView. So is there workaround on this?
Oh i see
But no matter whether it’s NativeActivity or android’s activity im sure there’s an EGL code somewhere? This is becoming interesting for me now im curious how EGL was initialize.
But i notice on the appdelegate you have an instance of the egl right? how about look at the available methods there?
@zhangbin
Thanks your solution works… I thought there was something wrong with the renderer, but it’s not
@newstar55a
Thanks for your help also. I still don’t find anything related to GLSurfaceView from EGLView.
Cool…
You may want to edit your title thread and put a “[SOLVED]” mark?
this way others would know that this issue is resolve.
zhangbin wrote:
Hi, @siauw.
I found the reason of the crash:void MainMenu::onPlay( Object *pSender, gui::TouchEventType type) { // this line caused the crash, because it removed the event listeners in engine. this->_eventDispatcher->removeAllEventListeners(); CCLOG("play clicked"); Director::getInstance()->replaceScene(PlayState::createScene()); cleanUp(); }
There is a new issue to handle the problem: http://www.cocos2d-x.org/issues/4129
Before it’s fixed, you can solve the problem by remove the code : removeAllEventListeners().
Thanks for your feedback!