static void removeJSTouchObject(JSContext *cx, CCTouch *x, jsval &jsret) { js_proxy_t* nproxy; js_proxy_t* jsproxy; void *ptr = (void*)x; JS_GET_PROXY(nproxy, ptr); if (nproxy) { JS_GET_NATIVE_PROXY(jsproxy, nproxy->obj); JS_RemoveObjectRoot(cx, &jsproxy->obj); JS_REMOVE_PROXY(nproxy, jsproxy); } }
JSBool js_cocos2dx_swap_native_object(JSContext *cx, uint32_t argc, jsval *vp) { if (argc == 2) { // get the native object from the second object to the first object jsval *argv = JS_ARGV(cx, vp); JSObject *one = JSVAL_TO_OBJECT(argv[0]); JSObject *two = JSVAL_TO_OBJECT(argv[1]); js_proxy_t *nproxy; JS_GET_NATIVE_PROXY(nproxy, two); void *ptrTwo = (nproxy ? nproxy->ptr : NULL); if (nproxy) { js_proxy_t *jsproxy; JS_GET_PROXY(jsproxy, ptrTwo); if (jsproxy) { JS_REMOVE_PROXY(jsproxy, nproxy); JS_NEW_PROXY(nproxy, ptrTwo, one); } } } return JS_TRUE; }