const char * COMgetName (COMobject cObj) { nsresult rv; nsISupports *_cObj = NS_STATIC_CAST (nsISupports *, cObj); nsCOMPtr <swarmITyping> typing (do_QueryInterface (_cObj)); if (!typing) { nsCOMPtr <nsIXPConnectJSObjectHolder> jsObj (do_QueryInterface (_cObj)); if (jsObj) return "[wrapped JavaScript]"; else abort (); } else { nsCID *cid; rv = typing->GetCID (&cid); if (NS_FAILED (rv)) abort (); return COMgetComponentName (cid); } }
void GLNode::onDraw(Mat4 &transform, uint32_t flags) { JSContext *cx = ScriptingCore::getInstance()->getGlobalContext(); js_type_class_t *typeClass = js_get_type_from_native<cocos2d::GLNode>(this); JS::RootedObject jsObj(cx, jsb_ref_get_or_create_jsobject(cx, this, typeClass, "cocos2d::GLNode")); if (jsObj.get()) { bool found = false; JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET JS_HasProperty(cx, jsObj, "draw", &found); if (found) { auto director = Director::getInstance(); director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform); JS::RootedValue rval(cx); JS::RootedValue fval(cx); JS_GetProperty(cx, jsObj, "draw", &fval); JS_CallFunctionValue(cx, jsObj, fval, JS::HandleValueArray::empty(), &rval); director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); } } }