[gjs] Remove context argument from gjs_keep_alive_add/remove_child
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs] Remove context argument from gjs_keep_alive_add/remove_child
- Date: Wed, 15 Jan 2014 15:22:00 +0000 (UTC)
commit 1848de9fa7d3e86b5de3d417cba89c224ad31edd
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Wed Jan 15 10:18:47 2014 -0500
Remove context argument from gjs_keep_alive_add/remove_child
These can be called from finalizers, so this is wrong in general.
gi/keep-alive.cpp | 33 ++++++++++-----------------------
gi/keep-alive.h | 10 ++++------
gi/object.cpp | 9 ++++-----
3 files changed, 18 insertions(+), 34 deletions(-)
---
diff --git a/gi/keep-alive.cpp b/gi/keep-alive.cpp
index 8eee636..8470a23 100644
--- a/gi/keep-alive.cpp
+++ b/gi/keep-alive.cpp
@@ -263,9 +263,8 @@ gjs_keep_alive_new(JSContext *context)
}
void
-gjs_keep_alive_add_child(JSContext *context,
- JSObject *keep_alive,
- GjsUnrootedFunc notify,
+gjs_keep_alive_add_child(JSObject *keep_alive,
+ GjsUnrootedFunc notify,
JSObject *obj,
void *data)
{
@@ -273,11 +272,7 @@ gjs_keep_alive_add_child(JSContext *context,
Child *child;
g_assert(keep_alive != NULL);
-
- JS_BeginRequest(context);
- priv = priv_from_js(context, keep_alive);
- JS_EndRequest(context);
-
+ priv = (KeepAlive *) JS_GetPrivate(keep_alive);
g_assert(priv != NULL);
g_return_if_fail(!priv->inside_trace);
@@ -298,19 +293,16 @@ gjs_keep_alive_add_child(JSContext *context,
}
void
-gjs_keep_alive_remove_child(JSContext *context,
- JSObject *keep_alive,
- GjsUnrootedFunc notify,
+gjs_keep_alive_remove_child(JSObject *keep_alive,
+ GjsUnrootedFunc notify,
JSObject *obj,
void *data)
{
KeepAlive *priv;
Child child;
- JS_BeginRequest(context);
- priv = priv_from_js(context, keep_alive);
- JS_EndRequest(context);
-
+ g_assert(keep_alive != NULL);
+ priv = (KeepAlive *) JS_GetPrivate(keep_alive);
g_assert(priv != NULL);
g_return_if_fail(!priv->inside_trace);
@@ -320,8 +312,7 @@ gjs_keep_alive_remove_child(JSContext *context,
child.child = obj;
child.data = data;
- g_hash_table_remove(priv->children,
- &child);
+ g_hash_table_remove(priv->children, &child);
}
static JSObject*
@@ -366,9 +357,7 @@ gjs_keep_alive_add_global_child(JSContext *context,
keep_alive = gjs_keep_alive_get_global(context);
- gjs_keep_alive_add_child(context,
- keep_alive,
- notify, child, data);
+ gjs_keep_alive_add_child(keep_alive, notify, child, data);
JS_EndRequest(context);
}
@@ -389,9 +378,7 @@ gjs_keep_alive_remove_global_child(JSContext *context,
g_error("no keep_alive property on the global object, have you "
"previously added this child?");
- gjs_keep_alive_remove_child(context,
- gjs_keep_alive_get_global(context),
- notify, child, data);
+ gjs_keep_alive_remove_child(keep_alive, notify, child, data);
JS_EndRequest(context);
}
diff --git a/gi/keep-alive.h b/gi/keep-alive.h
index a5880c1..4460472 100644
--- a/gi/keep-alive.h
+++ b/gi/keep-alive.h
@@ -54,14 +54,12 @@ typedef void (* GjsUnrootedFunc) (JSObject *obj,
JSObject* gjs_keep_alive_new (JSContext *context);
-void gjs_keep_alive_add_child (JSContext *context,
- JSObject *keep_alive,
- GjsUnrootedFunc notify,
+void gjs_keep_alive_add_child (JSObject *keep_alive,
+ GjsUnrootedFunc notify,
JSObject *child,
void *data);
-void gjs_keep_alive_remove_child (JSContext *context,
- JSObject *keep_alive,
- GjsUnrootedFunc notify,
+void gjs_keep_alive_remove_child (JSObject *keep_alive,
+ GjsUnrootedFunc notify,
JSObject *child,
void *data);
JSObject* gjs_keep_alive_get_global (JSContext *context);
diff --git a/gi/object.cpp b/gi/object.cpp
index 2d38e8a..af35c4d 100644
--- a/gi/object.cpp
+++ b/gi/object.cpp
@@ -858,7 +858,7 @@ handle_toggle_down(JSContext *context,
*/
if (priv->keep_alive != NULL) {
gjs_debug_lifecycle(GJS_DEBUG_GOBJECT, "Removing object from keep alive");
- gjs_keep_alive_remove_child(context, priv->keep_alive,
+ gjs_keep_alive_remove_child(priv->keep_alive,
gobj_no_longer_kept_alive_func,
obj,
priv);
@@ -906,7 +906,7 @@ handle_toggle_up(JSContext *context,
if (priv->keep_alive == NULL) {
gjs_debug_lifecycle(GJS_DEBUG_GOBJECT, "Adding object to keep alive");
priv->keep_alive = gjs_keep_alive_get_global(context);
- gjs_keep_alive_add_child(context, priv->keep_alive,
+ gjs_keep_alive_add_child(priv->keep_alive,
gobj_no_longer_kept_alive_func,
obj,
priv);
@@ -1154,8 +1154,7 @@ associate_js_gobject (JSContext *context,
* wrappee).
*/
priv->keep_alive = gjs_keep_alive_get_global(context);
- gjs_keep_alive_add_child(context,
- priv->keep_alive,
+ gjs_keep_alive_add_child(priv->keep_alive,
gobj_no_longer_kept_alive_func,
object,
priv);
@@ -1374,7 +1373,7 @@ object_instance_finalize(JSFreeOp *fop,
*/
{
JSContext *context = JS_NewContext(fop->runtime(), 8192);
- gjs_keep_alive_remove_child(context, priv->keep_alive,
+ gjs_keep_alive_remove_child(priv->keep_alive,
gobj_no_longer_kept_alive_func,
obj,
priv);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]