[Freeswitch-trunk] [commit] r3515 - freeswitch/trunk/src/mod/languages/mod_spidermonkey

Freeswitch SVN anthm at freeswitch.org
Sat Dec 2 00:40:58 EST 2006


Author: anthm
Date: Sat Dec  2 00:40:58 2006
New Revision: 3515

Modified:
   freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c

Log:
try adding the gc code 

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	(original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	Sat Dec  2 00:40:58 2006
@@ -94,6 +94,7 @@
 	jsval ret;
 	JSContext *cx;
 	JSObject *obj;
+    jsrefcount saveDepth;
 	void *extra;
 };
 
@@ -641,7 +642,9 @@
 		argv[argc++] = cb_state->arg;
 	}
 
+    JS_ResumeRequest(cb_state->cx, cb_state->saveDepth);
 	JS_CallFunction(cb_state->cx, cb_state->obj, cb_state->function, argc, argv, &cb_state->ret);
+    cb_state->saveDepth = JS_SuspendRequest(cb_state->cx);
 
 	return SWITCH_STATUS_SUCCESS;
 }
@@ -877,7 +880,9 @@
     
 	cb_state.extra = &fh;
 	cb_state.ret = BOOLEAN_TO_JSVAL( JS_FALSE );
+    cb_state.saveDepth = JS_SuspendRequest(cx);
 	switch_ivr_record_file(jss->session, &fh, file_name, dtmf_func, bp, len, limit);
+    JS_ResumeRequest(cx, cb_state.saveDepth);
 	*rval = cb_state.ret;
 
 	return (switch_channel_ready(channel)) ? JS_TRUE : JS_FALSE;
@@ -920,7 +925,10 @@
 		JS_ValueToInt32(jss->cx, argv[2], &to);
 	}
 
+    cb_state.saveDepth = JS_SuspendRequest(cx);
 	switch_ivr_collect_digits_callback(jss->session, dtmf_func, bp, len, to);
+    JS_ResumeRequest(cx, cb_state.saveDepth);
+
 	*rval = cb_state.ret;
 
 	return (switch_channel_ready(channel)) ? JS_TRUE : JS_FALSE;
@@ -981,7 +989,9 @@
 
 	cb_state.extra = &fh;
 	cb_state.ret = BOOLEAN_TO_JSVAL( JS_FALSE );
+    cb_state.saveDepth = JS_SuspendRequest(cx);
 	switch_ivr_play_file(jss->session, &fh, file_name, timer_name, dtmf_func, bp, len);
+    JS_ResumeRequest(cx, cb_state.saveDepth);
 	*rval = cb_state.ret;
 	
 	return (switch_channel_ready(channel)) ? JS_TRUE : JS_FALSE;
@@ -1090,6 +1100,7 @@
 
 	codec = switch_core_session_get_read_codec(jss->session);
 	cb_state.ret = BOOLEAN_TO_JSVAL( JS_FALSE );
+    cb_state.saveDepth = JS_SuspendRequest(cx);
 	switch_ivr_speak_text(jss->session,
 						  tts_name,
 						  voice_name && strlen(voice_name) ? voice_name : NULL, 
@@ -1099,7 +1110,7 @@
 						  text,
 						  bp,
 						  len);
-
+    JS_ResumeRequest(cx, cb_state.saveDepth);
 	*rval = cb_state.ret;
 
 	return (switch_channel_ready(channel)) ? JS_TRUE : JS_FALSE;
@@ -1231,13 +1242,13 @@
 		char *app_name = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
 		char *app_arg = JS_GetStringBytes(JS_ValueToString(cx, argv[1]));
 		struct js_session *jss = JS_GetPrivate(cx, obj);
-		//jsrefcount saveDepth;
+		jsrefcount saveDepth;
 
 		if ((application_interface = switch_loadable_module_get_application_interface(app_name))) {
 			if (application_interface->application_function) {
-				//saveDepth = JS_SuspendRequest(cx);
+				saveDepth = JS_SuspendRequest(cx);
 				application_interface->application_function(jss->session, app_arg);
-				//JS_ResumeRequest(cx, saveDepth);
+				JS_ResumeRequest(cx, saveDepth);
 				retval = JS_TRUE;
 			}
 		} 
@@ -2102,7 +2113,10 @@
 		}
 	}
 
+    cb_state.saveDepth = JS_SuspendRequest(cx);
 	switch_ivr_multi_threaded_bridge(jss_a->session, jss_b->session, dtmf_func, bp, bp);
+    JS_ResumeRequest(cx, cb_state.saveDepth);
+
 
 	return JS_TRUE;
 }



More information about the Freeswitch-trunk mailing list