Commit Graph

47 Commits

Author SHA1 Message Date
James Chen d15561e826 issue #1653: Checking the return value of jsapi. Return JSVAL_VOID if jsapi has no return value. 2013-01-11 18:57:33 +08:00
James Chen 7f4146f3e2 issue #1653: JS_ValueToInt32, JS_ValueToECMAInt32 --> jsval_to_int32
Using JSB_PRECONDITION2 to check the return value of js api.
Reporting an error when binding api return JS_FALSE.
2013-01-11 17:44:39 +08:00
James Chen a8361bf703 issue #1653: Checking return value for 'native --> jsval'. 2013-01-11 13:54:57 +08:00
James Chen cc7d383737 fixed #1622: Crash occurs when cc.Node.getChildren is invoked if there are no children. 2012-12-24 11:55:04 +08:00
James Chen 9a0a5e6b31 issue #1603: fixed some warnings. 2012-12-20 17:18:49 +08:00
James Chen e8c0844dd5 fixed #1617: Some improvements for JS Bindings.
1) Changed cc.REPEAT_FOREVER = - 1 to cc.REPEAT_FOREVER = 0xffffffff
[Reason]: If cc.REPEAT_FOREVER = -1, it will be a very big double value after converting it to double by JS_ValueToNumber on android.
Then cast it to unsigned int, the value will be 0. The schedule will not be able to work.
I don't know why this occurs only on android.
[Solution]: Instead of passing -1 to it, I assign it with max value of unsigned int in c++.

2) Added two helper function, cc.ArrayGetIndexOfObject and cc.ArrayContainsObject.

3) Added JSScheduleWrapper::removeTargetForNativeNode to avoid memory leaks.

4) Improvments for JSTouchDelegate. Added four functions as follows:
// Set the touch delegate to map by using the key (pJSObj).
static void setDelegateForJSObject(JSObject* pJSObj, JSTouchDelegate* pDelegate);

// Get the touch delegate by the key (pJSObj).
static JSTouchDelegate* getDelegateForJSObject(JSObject* pJSObj);

// Remove the delegate by the key (pJSObj).
static void removeDelegateForJSObject(JSObject* pJSObj);

void unregisterTouchDelegate();
And exported cc.unregisterTouchDelegate(); to js.
Fix a memory leak for JSTouchDelegate by making it as an autorelease object.

5) Don't add js callback function to the reserved slot of object.
[Reason]: The target object may execute more than one schedule.
Therefore, previous js callback function will be replaced
by the current one. For example:

this.scheduleOnce(function() { temporary function 1 }, 0.5);
this.scheduleOnce(function() { temporary function 2 }, 0.5);

In this case, the temporary function 1 will be removed from reserved slot 0.
And temporary function 2 will be set to reserved slot 0 of this object.
If gc is triggered before the JSScheduleWrapper::scheduleFunc is invoked,
crash will happen. You could simply reproduce it by adding jsc.garbageCollect(); after scheduleOnce.
[Solution] Because one schedule corresponds to one JSScheduleWrapper, we root
the js callback function in JSScheduleWrapper::setJSCallbackFunc and unroot it
at the destructor of JSScheduleWrapper.
2012-12-18 11:56:44 +08:00
James Chen e7328cf3ba fixed #1614: DrawNodeTest crashes on JSB. 2012-12-14 10:31:31 +08:00
James Chen 7c074d4ced issue #1550: fixed a memory leak in jsbinding. 2012-12-03 22:17:53 +08:00
James Chen f6185844a9 fixed #1588: Get the right js callback function in js_CCScheduler_schedule. 2012-12-03 15:59:29 +08:00
James Chen d97dfe162a fixed #1588: RescheduleCallback support for JSBinding. 2012-12-03 15:33:36 +08:00
James Chen 07661a1e21 issue #1581: Added jsb_set_reserved_slot and jsb_get_reserved_slot, 2012-11-30 22:00:30 +08:00
James Chen 15d02e4db8 Merge branch 'iss1581-fix-jsbinding-bugs' of https://github.com/dumganhar/cocos2d-x into iss1583-js-tests
Conflicts:
	scripting/javascript/bindings/cocos2d_specifics.cpp
2012-11-30 21:43:44 +08:00
James Chen 95875112fa Merge branch 'iss1583-js-tests' of https://github.com/dumganhar/cocos2d-x into iss1583-js-tests 2012-11-30 21:19:19 +08:00
James Chen 0d93f2d651 issue #1583: Bind cc.Menu.alignItemsInRows, cc.Menu.alignItemsInColums, cc.LayerMultiplex.create 2012-11-30 21:15:01 +08:00
James Chen e8c5f5f38c Added CCTexture2D::setTexParameters binding.
Fixed pass one more argument in JSCallFuncWrapper::callbackFunc if extraData is void.
2012-11-30 18:15:29 +08:00
James Chen bb4b3fb4bc issue #1581: Deleted JS_AddObjectRoot when construct a JS array since JS_SetElement will not trigger a GC. 2012-11-29 11:01:32 +08:00
Rohan Kuruvilla a4b55b5217 Fixing Accelerometer crash on Android 2012-11-28 15:56:57 -08:00
James Chen a4762605b8 issue #1581: Removed some unused codes. 2012-11-28 22:24:12 +08:00
James Chen a814066601 issue #1581: JSBinding bug fixes.
Some fixes of JSBinding codes:
[1] Check whether the proxy was already added in JS_NEW_PROXY
[2] In struct schedFunc_proxy_t, JSScheduleWrapper* --> CCArray*
Reason: One js function may correspond to many targets. To debug this, you could refer to JSScheduleWrapper::dump function. It will prove that i'm right. :)
[3] In ScriptingCore::cleanupSchedulesAndActions function, we must invoke unschedule for all targets and remove the proxy both in _schedFunc_target_ht and _schedTarget_native_ht, otherwise the hash tables will grow bigger and bigger, so I added a new function JSScheduleWrapper::removeAllTargetsForNatiaveNode to make this things easier.
[4] To easily find out the bugs of binding codes, I add JS_SetGCZeal in ScriptingCore::createGlobalContext, it only works in DEBUG mode.
[5] In js_cocos2dx_CCNode_getChildren, we should add the generated array to root to avoid gc happen when invoking JS_SetElement.
[6] The JSCallFuncWrapper isn't needed since an action will be run by a cc.Node and it will be released at the CCNode::cleanup.
[7] Some improvements of JSScheduleWrapper class.
[8] Added a new function JSScheduleWrapper::setTarget, it's for js_CCNode_unschedule to find out which target need to be unscheduled.
[9] Commented JS_SetReservedSlot in js_CCNode_scheduleOnce and js_CCNode_schedule.
Reason:
For js_CCNode_scheduleOnce: Don't add the callback function to the reserved slot of this js object.Since the class of js object may be inherited from cocos class(e.g. cc.Sprite). The subclass will not contain reserved slots. It will crash if invoking this.
For js_CCNode_schedule: Don't add js callback function to the reserved slot of scheduler js object. Since the scheduler is an object always rooted.
So the callback function might not be released when gc comes.I looked inside the implementation of cc.Node.schedule, and it doesn't use JS_SetReservedSlot there.
2012-11-28 22:04:55 +08:00
James Chen b66bc98a46 issue #1564: Made ChipmunkTest of TestJavascript works 2012-11-22 15:19:16 +08:00
James Chen 51d61ba214 issue #1564: fix the wrong order of parameters in CCScheduler::scheduleSelector.
Made MoonWarriors works.
2012-11-22 12:05:38 +08:00
Rolando Abarca ac539667f4 Merge remote-tracking branch 'origin/gles20' into gles20
Conflicts:
	scripting/javascript/bindings/ScriptingCore.cpp
	scripting/javascript/bindings/js_bindings_chipmunk_manual.cpp
2012-11-16 09:44:34 -08:00
James Chen 0223c0d70a issue #1555: Minor fixes. 2012-11-16 19:38:25 +08:00
Rohan Kuruvilla 39a4e6a19e Fixing bindings bug for CCScheduler. Also adding custom bindings for TMXLayer. Also updating ini 2012-11-16 15:56:27 +08:00
Rohan Kuruvilla f9aea7befe Changing parameter ordering for callbacks (making thisObj optional). Also adding custom bindigns for CCScheduler 2012-11-16 15:56:26 +08:00
Rolando Abarca c9df076378 new JSStringWrapper 2012-11-15 11:14:37 -08:00
James Chen ceb4371f12 issue #1549: Using new JS API for MoonWarriors.
Updated the logics of js_cocos2dx_CCMenuItemSprite_create and js_cocos2dx_CCMenuItemImage_create.
2012-11-05 23:22:59 +08:00
James Chen 10ba589ed5 issue #1549: * Arguments in callbacks:
instead of: callback(this, func), it is now:callback( func, [this] )
2012-11-05 18:44:28 +08:00
James Chen f88aa5058d Merge branch 'gles20' of https://github.com/rohankuruvilla/cocos2d-x into rohan-ccb
Conflicts:
	scripting/javascript/bindings/cocos2d_specifics.cpp
	scripting/javascript/bindings/cocos2d_specifics.hpp
	tools/tojs/cocos2dx.ini
2012-11-02 18:15:25 +08:00
James Chen f031a09e77 Added cc.TMXLayer.getTileFlagsAt to jsbindings. 2012-11-02 15:21:44 +08:00
James Chen d2a9acd227 issue #1530: Two memory leaks fixes. 2012-11-01 16:06:05 +08:00
Rohan Kuruvilla b3c6f1a2e1 Adding bindings for CCBReader and other improvements.
1. Added additional CCBReader bindings, including callback support for animationCompleted
2. Improved design for JS CallbackWrappers
3. Added bindings for pDistance
4. Updating cocos2dx.ini
2012-11-01 15:34:23 +08:00
Rohan Kuruvilla ea92936c1f Adding bindings for CCBReader and other improvements.
1. Added additional CCBReader bindings, including callback support for animationCompleted
2. Improved design for JS CallbackWrappers
3. Added bindings for pDistance
4. Updating cocos2dx.ini
2012-11-01 00:08:01 -07:00
Rohan Kuruvilla 6773dc4154 Adding object roots for extra parameter of CallFunc and schedule 2012-10-29 15:14:25 +08:00
Rohan Kuruvilla 5760ea305c Fixing CallFuncN bindings to properly pass optional third parameter 2012-10-29 15:14:11 +08:00
Rohan Kuruvilla 094d52664d Fixing bug in CCNode::copy bindings. Fixes MoonWarriors crash 2012-10-29 15:10:29 +08:00
Rohan Kuruvilla a409fc0164 Fixing CallFunc bindings to support easier cleanup 2012-10-29 15:07:27 +08:00
Rohan Kuruvilla f8fc7328d7 Fixing bug in bindings for MenuItemImage 2012-10-29 15:06:56 +08:00
James Chen 21491317c0 Fix compilation errors. 2012-10-12 15:41:45 +08:00
Rohan Kuruvilla e7ac758b9f Updating bindings to match cocos2d-html5 2012-10-11 18:45:22 -07:00
James Chen 700b83f3b9 issue #1469: Added 'setBlendFunc' support for CCSprite, CCParticleSystem...etc. 2012-10-10 15:25:27 +08:00
Rohan Kuruvilla 12292afee6 Adding CCSchedule bindings. Also adding CCOrbitCamera bindings and modifying cocos2dx.ini 2012-10-09 15:03:14 -07:00
Rohan Kuruvilla d097406f18 Modifying MenuItemToggle bindings to make it work 2012-09-20 18:02:17 -07:00
Rohan Kuruvilla 9e1e64509b Copying changes previously made into cxx-generator/targets/spidermonkey/common
1. Fixed memory leak while removing proxy objects
2. Fixed JS Context restart
3. Added JS conversion for CCArray
4. Updated generated bindings with some more classes
2012-09-20 18:02:17 -07:00
folecr 122dab03d2 Remove iOS specific code 2012-08-28 17:56:01 -07:00
Rohan Kuruvilla 6c8d2ea75b Fixing GC crash issue. Forcing the GC from Javascript at any time, doesn't crash the app
Fixing GC crash issue. Bug in bind_menu_item. There is no more problem with GC, including force_GC

Updating generated bindings to remove std::string scoping bug
2012-08-28 17:29:25 -07:00
Rohan Kuruvilla ccd5e0a066 Adding cxx-generator/target/common/* files and generated bindings for cocos2d-x. 2012-08-27 10:02:19 -07:00