[gjs] Correct the signature of finalizers



commit 4d8c5135c653b074f7fb5f2cb335788498246af4
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Thu Apr 11 16:02:35 2013 -0400

    Correct the signature of finalizers
    
    With the context mostly unused, we can finally correct this.
    Additionally, fix up the one or two places that still use a
    context.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=697838

 gi/boxed.c                      |    4 ++--
 gi/function.c                   |    4 ++--
 gi/gerror.c                     |    4 ++--
 gi/gtype.c                      |    4 ++--
 gi/interface.c                  |    4 ++--
 gi/keep-alive.c                 |    4 ++--
 gi/ns.c                         |    4 ++--
 gi/object.c                     |   16 ++++++++++------
 gi/param.c                      |    4 ++--
 gi/repo.c                       |    4 ++--
 gi/union.c                      |    4 ++--
 gjs/byteArray.c                 |    6 +++---
 gjs/importer.c                  |    4 ++--
 gjs/jsapi-util.h                |    2 +-
 modules/cairo-context.c         |    4 ++--
 modules/cairo-gradient.c        |    6 +++---
 modules/cairo-image-surface.c   |    6 +++---
 modules/cairo-linear-gradient.c |    6 +++---
 modules/cairo-path.c            |    4 ++--
 modules/cairo-pattern.c         |   14 +++++++-------
 modules/cairo-pdf-surface.c     |    6 +++---
 modules/cairo-private.h         |    4 ++--
 modules/cairo-ps-surface.c      |    6 +++---
 modules/cairo-radial-gradient.c |    6 +++---
 modules/cairo-solid-pattern.c   |    6 +++---
 modules/cairo-surface-pattern.c |    6 +++---
 modules/cairo-surface.c         |   14 +++++++-------
 modules/cairo-svg-surface.c     |    6 +++---
 28 files changed, 83 insertions(+), 79 deletions(-)
---
diff --git a/gi/boxed.c b/gi/boxed.c
index 9eb8d35..47857e6 100644
--- a/gi/boxed.c
+++ b/gi/boxed.c
@@ -508,8 +508,8 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(boxed)
 }
 
 static void
-boxed_finalize(JSContext *context,
-               JSObject  *obj)
+boxed_finalize(JSFreeOp *fop,
+               JSObject *obj)
 {
     Boxed *priv;
 
diff --git a/gi/function.c b/gi/function.c
index ff34eed..b23c894 100644
--- a/gi/function.c
+++ b/gi/function.c
@@ -1224,8 +1224,8 @@ uninit_cached_function_data (Function *function)
 }
 
 static void
-function_finalize(JSContext *context,
-                  JSObject  *obj)
+function_finalize(JSFreeOp *fop,
+                  JSObject *obj)
 {
     Function *priv;
 
diff --git a/gi/gerror.c b/gi/gerror.c
index 02e0df5..329a07b 100644
--- a/gi/gerror.c
+++ b/gi/gerror.c
@@ -130,8 +130,8 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(error)
 }
 
 static void
-error_finalize(JSContext *context,
-               JSObject  *obj)
+error_finalize(JSFreeOp *fop,
+               JSObject *obj)
 {
     Error *priv;
 
diff --git a/gi/gtype.c b/gi/gtype.c
index f04ca34..850b926 100644
--- a/gi/gtype.c
+++ b/gi/gtype.c
@@ -49,8 +49,8 @@ gjs_get_gtype_wrapper_quark(void)
 }
 
 static void
-gjs_gtype_finalize(JSContext *context,
-                   JSObject  *obj)
+gjs_gtype_finalize(JSFreeOp *fop,
+                   JSObject *obj)
 {
     GType gtype = GPOINTER_TO_SIZE(JS_GetPrivate(obj));
 
diff --git a/gi/interface.c b/gi/interface.c
index 37f8100..b4f1907 100644
--- a/gi/interface.c
+++ b/gi/interface.c
@@ -47,8 +47,8 @@ GJS_DEFINE_PRIV_FROM_JS(Interface, gjs_interface_class)
 GJS_NATIVE_CONSTRUCTOR_DEFINE_ABSTRACT(interface)
 
 static void
-interface_finalize(JSContext *context,
-                   JSObject  *obj)
+interface_finalize(JSFreeOp *fop,
+                   JSObject *obj)
 {
     Interface *priv;
 
diff --git a/gi/keep-alive.c b/gi/keep-alive.c
index 1dada57..415023f 100644
--- a/gi/keep-alive.c
+++ b/gi/keep-alive.c
@@ -82,8 +82,8 @@ child_free(void *data)
 GJS_NATIVE_CONSTRUCTOR_DEFINE_ABSTRACT(keep_alive)
 
 static void
-keep_alive_finalize(JSContext *context,
-                    JSObject  *obj)
+keep_alive_finalize(JSFreeOp *fop,
+                    JSObject *obj)
 {
     KeepAlive *priv;
     void *key;
diff --git a/gi/ns.c b/gi/ns.c
index 23d0db0..33aec80 100644
--- a/gi/ns.c
+++ b/gi/ns.c
@@ -129,8 +129,8 @@ ns_new_resolve(JSContext *context,
 GJS_NATIVE_CONSTRUCTOR_DEFINE_ABSTRACT(ns)
 
 static void
-ns_finalize(JSContext *context,
-            JSObject  *obj)
+ns_finalize(JSFreeOp *fop,
+            JSObject *obj)
 {
     Ns *priv;
 
diff --git a/gi/object.c b/gi/object.c
index a832a2d..17c981f 100644
--- a/gi/object.c
+++ b/gi/object.c
@@ -1329,7 +1329,7 @@ object_instance_trace(JSTracer *tracer,
 }
 
 static void
-object_instance_finalize(JSContext *context,
+object_instance_finalize(JSFreeOp  *fop,
                          JSObject  *obj)
 {
     ObjectInstance *priv;
@@ -1366,7 +1366,7 @@ object_instance_finalize(JSContext *context,
 
         set_js_obj(priv->gobj, NULL);
         g_object_remove_toggle_ref(priv->gobj, wrapped_gobj_toggle_notify,
-                                   JS_GetRuntime(context));
+                                   fop->runtime);
         priv->gobj = NULL;
     }
 
@@ -1386,10 +1386,14 @@ object_instance_finalize(JSContext *context,
          * into jsapi, but we have to do this or the keep alive could
          * be finalized later and call gobj_no_longer_kept_alive_func.
          */
-        gjs_keep_alive_remove_child(context, priv->keep_alive,
-                                    gobj_no_longer_kept_alive_func,
-                                    obj,
-                                    priv);
+        {
+            JSContext *context = JS_NewContext(fop->runtime, 8192);
+            gjs_keep_alive_remove_child(context, priv->keep_alive,
+                                        gobj_no_longer_kept_alive_func,
+                                        obj,
+                                        priv);
+            JS_DestroyContext(context);
+        }
     }
 
     if (priv->info) {
diff --git a/gi/param.c b/gi/param.c
index b58f7da..3c58f04 100644
--- a/gi/param.c
+++ b/gi/param.c
@@ -159,8 +159,8 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(param)
 }
 
 static void
-param_finalize(JSContext *context,
-               JSObject  *obj)
+param_finalize(JSFreeOp *fop,
+               JSObject *obj)
 {
     Param *priv;
 
diff --git a/gi/repo.c b/gi/repo.c
index 0bd4a75..24d10ae 100644
--- a/gi/repo.c
+++ b/gi/repo.c
@@ -200,8 +200,8 @@ repo_new_resolve(JSContext *context,
 GJS_NATIVE_CONSTRUCTOR_DEFINE_ABSTRACT(repo)
 
 static void
-repo_finalize(JSContext *context,
-              JSObject  *obj)
+repo_finalize(JSFreeOp *fop,
+              JSObject *obj)
 {
     Repo *priv;
 
diff --git a/gi/union.c b/gi/union.c
index 8ae46d0..0f338d5 100644
--- a/gi/union.c
+++ b/gi/union.c
@@ -254,8 +254,8 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(union)
 }
 
 static void
-union_finalize(JSContext *context,
-               JSObject  *obj)
+union_finalize(JSFreeOp *fop,
+               JSObject *obj)
 {
     Union *priv;
 
diff --git a/gjs/byteArray.c b/gjs/byteArray.c
index 25bebdd..f8d189c 100644
--- a/gjs/byteArray.c
+++ b/gjs/byteArray.c
@@ -55,7 +55,7 @@ static JSBool byte_array_new_resolve   (JSContext    *context,
                                         unsigned      flags,
                                         JSObject    **objp);
 GJS_NATIVE_CONSTRUCTOR_DECLARE(byte_array);
-static void   byte_array_finalize      (JSContext    *context,
+static void   byte_array_finalize      (JSFreeOp     *fop,
                                         JSObject     *obj);
 
 
@@ -459,8 +459,8 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(byte_array)
 }
 
 static void
-byte_array_finalize(JSContext *context,
-                    JSObject  *obj)
+byte_array_finalize(JSFreeOp *fop,
+                    JSObject *obj)
 {
     ByteArrayInstance *priv;
 
diff --git a/gjs/importer.c b/gjs/importer.c
index f24e360..6fa0723 100644
--- a/gjs/importer.c
+++ b/gjs/importer.c
@@ -969,8 +969,8 @@ importer_new_resolve(JSContext *context,
 GJS_NATIVE_CONSTRUCTOR_DEFINE_ABSTRACT(importer)
 
 static void
-importer_finalize(JSContext *context,
-                  JSObject  *obj)
+importer_finalize(JSFreeOp *fop,
+                  JSObject *obj)
 {
     Importer *priv;
 
diff --git a/gjs/jsapi-util.h b/gjs/jsapi-util.h
index 4d21cdf..62cffed 100644
--- a/gjs/jsapi-util.h
+++ b/gjs/jsapi-util.h
@@ -129,7 +129,7 @@ _GJS_DEFINE_PROTO_FULL(tn, cn, NULL)
 #define _GJS_DEFINE_PROTO_FULL(type_name, cname, ctor) \
 static JSPropertySpec gjs_##cname##_proto_props[]; \
 static JSFunctionSpec gjs_##cname##_proto_funcs[]; \
-static void gjs_##cname##_finalize(JSContext *context, JSObject *obj); \
+static void gjs_##cname##_finalize(JSFreeOp *fop, JSObject *obj); \
 static JSBool gjs_##cname##_new_resolve(JSContext *context, \
                                         JSObject  *obj, \
                                         jsval      id, \
diff --git a/modules/cairo-context.c b/modules/cairo-context.c
index 1879be2..25c6b70 100644
--- a/modules/cairo-context.c
+++ b/modules/cairo-context.c
@@ -305,8 +305,8 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(cairo_context)
 }
 
 static void
-gjs_cairo_context_finalize(JSContext *context,
-                           JSObject  *obj)
+gjs_cairo_context_finalize(JSFreeOp *fop,
+                           JSObject *obj)
 {
     GjsCairoContext *priv;
     priv = JS_GetPrivate(obj);
diff --git a/modules/cairo-gradient.c b/modules/cairo-gradient.c
index b55c852..b00f18a 100644
--- a/modules/cairo-gradient.c
+++ b/modules/cairo-gradient.c
@@ -30,10 +30,10 @@
 GJS_DEFINE_PROTO_ABSTRACT("CairoGradient", cairo_gradient)
 
 static void
-gjs_cairo_gradient_finalize(JSContext *context,
-                            JSObject  *obj)
+gjs_cairo_gradient_finalize(JSFreeOp *fop,
+                            JSObject *obj)
 {
-    gjs_cairo_pattern_finalize_pattern(context, obj);
+    gjs_cairo_pattern_finalize_pattern(fop, obj);
 }
 
 /* Properties */
diff --git a/modules/cairo-image-surface.c b/modules/cairo-image-surface.c
index c0d6f05..6a55960 100644
--- a/modules/cairo-image-surface.c
+++ b/modules/cairo-image-surface.c
@@ -58,10 +58,10 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(cairo_image_surface)
 }
 
 static void
-gjs_cairo_image_surface_finalize(JSContext *context,
-                                 JSObject  *obj)
+gjs_cairo_image_surface_finalize(JSFreeOp *fop,
+                                 JSObject *obj)
 {
-    gjs_cairo_surface_finalize_surface(context, obj);
+    gjs_cairo_surface_finalize_surface(fop, obj);
 }
 
 static JSPropertySpec gjs_cairo_image_surface_proto_props[] = {
diff --git a/modules/cairo-linear-gradient.c b/modules/cairo-linear-gradient.c
index 23e72a8..7553314 100644
--- a/modules/cairo-linear-gradient.c
+++ b/modules/cairo-linear-gradient.c
@@ -58,10 +58,10 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(cairo_linear_gradient)
 }
 
 static void
-gjs_cairo_linear_gradient_finalize(JSContext *context,
-                                   JSObject  *obj)
+gjs_cairo_linear_gradient_finalize(JSFreeOp *fop,
+                                   JSObject *obj)
 {
-    gjs_cairo_pattern_finalize_pattern(context, obj);
+    gjs_cairo_pattern_finalize_pattern(fop, obj);
 }
 
 static JSPropertySpec gjs_cairo_linear_gradient_proto_props[] = {
diff --git a/modules/cairo-path.c b/modules/cairo-path.c
index 48435fd..a0f00ed 100644
--- a/modules/cairo-path.c
+++ b/modules/cairo-path.c
@@ -37,8 +37,8 @@ GJS_DEFINE_PROTO_ABSTRACT("CairoPath", cairo_path)
 GJS_DEFINE_PRIV_FROM_JS(GjsCairoPath, gjs_cairo_path_class)
 
 static void
-gjs_cairo_path_finalize(JSContext *context,
-                        JSObject  *obj)
+gjs_cairo_path_finalize(JSFreeOp *fop,
+                        JSObject *obj)
 {
     GjsCairoPath *priv;
     priv = JS_GetPrivate(obj);
diff --git a/modules/cairo-pattern.c b/modules/cairo-pattern.c
index 63eb9a3..4b0d0bd 100644
--- a/modules/cairo-pattern.c
+++ b/modules/cairo-pattern.c
@@ -38,8 +38,8 @@ GJS_DEFINE_PROTO_ABSTRACT("CairoPattern", cairo_pattern)
 GJS_DEFINE_PRIV_FROM_JS(GjsCairoPattern, gjs_cairo_pattern_class)
 
 static void
-gjs_cairo_pattern_finalize(JSContext *context,
-                           JSObject  *obj)
+gjs_cairo_pattern_finalize(JSFreeOp *fop,
+                           JSObject *obj)
 {
     GjsCairoPattern *priv;
     priv = JS_GetPrivate(obj);
@@ -123,7 +123,7 @@ gjs_cairo_pattern_construct(JSContext       *context,
 
 /**
  * gjs_cairo_pattern_finalize:
- * @context: the context
+ * @fop: the free op
  * @object: object to finalize
  *
  * Destroys the resources associated with a pattern wrapper.
@@ -132,13 +132,13 @@ gjs_cairo_pattern_construct(JSContext       *context,
  */
 
 void
-gjs_cairo_pattern_finalize_pattern(JSContext *context,
-                                   JSObject  *object)
+gjs_cairo_pattern_finalize_pattern(JSFreeOp *fop,
+                                   JSObject *object)
 {
-    g_return_if_fail(context != NULL);
+    g_return_if_fail(fop != NULL);
     g_return_if_fail(object != NULL);
 
-    gjs_cairo_pattern_finalize(context, object);
+    gjs_cairo_pattern_finalize(fop, object);
 }
 
 /**
diff --git a/modules/cairo-pdf-surface.c b/modules/cairo-pdf-surface.c
index 5380e24..dd7506d 100644
--- a/modules/cairo-pdf-surface.c
+++ b/modules/cairo-pdf-surface.c
@@ -65,10 +65,10 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(cairo_pdf_surface)
 }
 
 static void
-gjs_cairo_pdf_surface_finalize(JSContext *context,
-                               JSObject  *obj)
+gjs_cairo_pdf_surface_finalize(JSFreeOp *fop,
+                               JSObject *obj)
 {
-    gjs_cairo_surface_finalize_surface(context, obj);
+    gjs_cairo_surface_finalize_surface(fop, obj);
 }
 
 static JSPropertySpec gjs_cairo_pdf_surface_proto_props[] = {
diff --git a/modules/cairo-private.h b/modules/cairo-private.h
index a1ca1ec..6edfb6d 100644
--- a/modules/cairo-private.h
+++ b/modules/cairo-private.h
@@ -59,7 +59,7 @@ jsval            gjs_cairo_surface_create_proto         (JSContext       *contex
 void             gjs_cairo_surface_construct            (JSContext       *context,
                                                          JSObject        *object,
                                                          cairo_surface_t *surface);
-void             gjs_cairo_surface_finalize_surface     (JSContext       *context,
+void             gjs_cairo_surface_finalize_surface     (JSFreeOp        *fop,
                                                          JSObject        *object);
 JSObject *       gjs_cairo_surface_from_surface         (JSContext       *context,
                                                          cairo_surface_t *surface);
@@ -114,7 +114,7 @@ jsval            gjs_cairo_pattern_create_proto         (JSContext       *contex
 void             gjs_cairo_pattern_construct            (JSContext       *context,
                                                          JSObject        *object,
                                                          cairo_pattern_t *pattern);
-void             gjs_cairo_pattern_finalize_pattern     (JSContext       *context,
+void             gjs_cairo_pattern_finalize_pattern     (JSFreeOp        *fop,
                                                          JSObject        *object);
 JSObject*        gjs_cairo_pattern_from_pattern         (JSContext       *context,
                                                          cairo_pattern_t *pattern);
diff --git a/modules/cairo-ps-surface.c b/modules/cairo-ps-surface.c
index 19072da..345eede 100644
--- a/modules/cairo-ps-surface.c
+++ b/modules/cairo-ps-surface.c
@@ -65,10 +65,10 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(cairo_ps_surface)
 }
 
 static void
-gjs_cairo_ps_surface_finalize(JSContext *context,
-                              JSObject  *obj)
+gjs_cairo_ps_surface_finalize(JSFreeOp *fop,
+                              JSObject *obj)
 {
-    gjs_cairo_surface_finalize_surface(context, obj);
+    gjs_cairo_surface_finalize_surface(fop, obj);
 }
 
 static JSPropertySpec gjs_cairo_ps_surface_proto_props[] = {
diff --git a/modules/cairo-radial-gradient.c b/modules/cairo-radial-gradient.c
index 544040f..516ff33 100644
--- a/modules/cairo-radial-gradient.c
+++ b/modules/cairo-radial-gradient.c
@@ -60,10 +60,10 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(cairo_radial_gradient)
 }
 
 static void
-gjs_cairo_radial_gradient_finalize(JSContext *context,
-                                   JSObject  *obj)
+gjs_cairo_radial_gradient_finalize(JSFreeOp *fop,
+                                   JSObject *obj)
 {
-    gjs_cairo_pattern_finalize_pattern(context, obj);
+    gjs_cairo_pattern_finalize_pattern(fop, obj);
 }
 
 static JSPropertySpec gjs_cairo_radial_gradient_proto_props[] = {
diff --git a/modules/cairo-solid-pattern.c b/modules/cairo-solid-pattern.c
index 879d446..5daea52 100644
--- a/modules/cairo-solid-pattern.c
+++ b/modules/cairo-solid-pattern.c
@@ -30,10 +30,10 @@
 GJS_DEFINE_PROTO_ABSTRACT("CairoSolidPattern", cairo_solid_pattern)
 
 static void
-gjs_cairo_solid_pattern_finalize(JSContext *context,
-                                   JSObject  *obj)
+gjs_cairo_solid_pattern_finalize(JSFreeOp *fop,
+                                 JSObject *obj)
 {
-    gjs_cairo_pattern_finalize_pattern(context, obj);
+    gjs_cairo_pattern_finalize_pattern(fop, obj);
 }
 
 static JSPropertySpec gjs_cairo_solid_pattern_proto_props[] = {
diff --git a/modules/cairo-surface-pattern.c b/modules/cairo-surface-pattern.c
index 9eca2b8..66dd50f 100644
--- a/modules/cairo-surface-pattern.c
+++ b/modules/cairo-surface-pattern.c
@@ -63,10 +63,10 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(cairo_surface_pattern)
 
 
 static void
-gjs_cairo_surface_pattern_finalize(JSContext *context,
-                                   JSObject  *obj)
+gjs_cairo_surface_pattern_finalize(JSFreeOp *fop,
+                                   JSObject *obj)
 {
-    gjs_cairo_pattern_finalize_pattern(context, obj);
+    gjs_cairo_pattern_finalize_pattern(fop, obj);
 }
 
 static JSPropertySpec gjs_cairo_surface_pattern_proto_props[] = {
diff --git a/modules/cairo-surface.c b/modules/cairo-surface.c
index 7d3044a..5f4d7a8 100644
--- a/modules/cairo-surface.c
+++ b/modules/cairo-surface.c
@@ -38,8 +38,8 @@ GJS_DEFINE_PROTO_ABSTRACT("CairoSurface", cairo_surface)
 GJS_DEFINE_PRIV_FROM_JS(GjsCairoSurface, gjs_cairo_surface_class)
 
 static void
-gjs_cairo_surface_finalize(JSContext *context,
-                           JSObject  *obj)
+gjs_cairo_surface_finalize(JSFreeOp *fop,
+                           JSObject *obj)
 {
     GjsCairoSurface *priv;
     priv = JS_GetPrivate(obj);
@@ -161,7 +161,7 @@ gjs_cairo_surface_construct(JSContext       *context,
 
 /**
  * gjs_cairo_surface_finalize:
- * @context: the context
+ * @fop: the free op
  * @object: object to finalize
  *
  * Destroys the resources associated with a surface wrapper.
@@ -169,13 +169,13 @@ gjs_cairo_surface_construct(JSContext       *context,
  * This is mainly used for subclasses.
  */
 void
-gjs_cairo_surface_finalize_surface(JSContext *context,
-                                   JSObject  *object)
+gjs_cairo_surface_finalize_surface(JSFreeOp *fop,
+                                   JSObject *object)
 {
-    g_return_if_fail(context != NULL);
+    g_return_if_fail(fop != NULL);
     g_return_if_fail(object != NULL);
 
-    gjs_cairo_surface_finalize(context, object);
+    gjs_cairo_surface_finalize(fop, object);
 }
 
 /**
diff --git a/modules/cairo-svg-surface.c b/modules/cairo-svg-surface.c
index cca746d..3d37d99 100644
--- a/modules/cairo-svg-surface.c
+++ b/modules/cairo-svg-surface.c
@@ -65,10 +65,10 @@ GJS_NATIVE_CONSTRUCTOR_DECLARE(cairo_svg_surface)
 }
 
 static void
-gjs_cairo_svg_surface_finalize(JSContext *context,
-                               JSObject  *obj)
+gjs_cairo_svg_surface_finalize(JSFreeOp *fop,
+                               JSObject *obj)
 {
-    gjs_cairo_surface_finalize_surface(context, obj);
+    gjs_cairo_surface_finalize_surface(fop, obj);
 }
 
 static JSPropertySpec gjs_cairo_svg_surface_proto_props[] = {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]