diff --git a/cocos/scripting/js-bindings/manual/ScriptingCore.cpp b/cocos/scripting/js-bindings/manual/ScriptingCore.cpp index 1a6db4248c..b789aa03d2 100644 --- a/cocos/scripting/js-bindings/manual/ScriptingCore.cpp +++ b/cocos/scripting/js-bindings/manual/ScriptingCore.cpp @@ -386,7 +386,13 @@ bool JSB_core_restartVM(JSContext *cx, uint32_t argc, jsval *vp) bool JSB_closeWindow(JSContext *cx, uint32_t argc, jsval *vp) { - ScriptingCore::getInstance()->cleanup(); + EventListenerCustom* _event = Director::getInstance()->getEventDispatcher()->addCustomEventListener(Director::EVENT_AFTER_DRAW, [&](EventCustom *event) { + Director::getInstance()->getEventDispatcher()->removeEventListener(_event); + _event->release(); + + ScriptingCore::getInstance()->cleanup(); + }); + _event->retain(); Director::getInstance()->end(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) exit(0);