gobject-introspection 3.2.8 → 3.2.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c7213d8a13c2cd45d21596d404c17a9f3bea46dbadb2ba5e8760c977695d41d0
4
- data.tar.gz: a7d12df78a07de72ed3eecf958787eaf047398c84bb53cf93a21638bb11a9031
3
+ metadata.gz: 917092e759a8742c56e050f7564bd36b76062ee4c732891e6670a74b824e3f93
4
+ data.tar.gz: 5ec4fc8c4ab4e4849d2e7f0545a287897dfe3efdc7da378f513244cb5d904dcb
5
5
  SHA512:
6
- metadata.gz: 309702c449dc20eccff306ed969c55d2905fcc5c92b2f93bb13b9d8280973c98a753dc3280eab22911dff0539b82c5d85bf0126d8dabd50249eb51ec048746c9
7
- data.tar.gz: 6f827b081c4ef531c1d34d2dfc2eedfe010ac6616be8c6615a491abb212c0ff21dd0ac08f870d8d9cec28df83fc998c0448cd62260bb1c44f67d0caa94ff75ce
6
+ metadata.gz: 81a9fc8d8357c45bb75b74e3db39b29583f1294bbda8ece4ae4f2a788bce83ddf883b3852b395d0174b2b8f481f30aff4af91da96e39896793518526a5187022
7
+ data.tar.gz: 2d90c21ce441298992cfb78de060d042bb0fe9ff94091023520f6b2ad60508ae9dccbf3384ee1cc6351078dfce6636a490041873c4f8cd8c0a9c8a0215c7443f
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2012 Ruby-GNOME2 Project Team
3
+ * Copyright (C) 2012-2018 Ruby-GNOME2 Project Team
4
4
  *
5
5
  * This library is free software; you can redistribute it and/or
6
6
  * modify it under the terms of the GNU Lesser General Public
@@ -49,7 +49,7 @@ rg_value(VALUE self)
49
49
  {
50
50
  GIConstantInfo *info;
51
51
  GIArgument value;
52
- gint value_size;
52
+ G_GNUC_UNUSED gint value_size;
53
53
  GITypeInfo *type_info;
54
54
  VALUE rb_value;
55
55
 
@@ -46,6 +46,7 @@ struct RBGICallbackData_ {
46
46
  RBGICallback *callback;
47
47
  RBGIArgMetadata *metadata;
48
48
  VALUE rb_callback;
49
+ GObject *owner;
49
50
  };
50
51
 
51
52
  static VALUE RG_TARGET_NAMESPACE;
@@ -303,18 +304,6 @@ fill_metadata(GPtrArray *args_metadata, GICallableInfo *info)
303
304
  fill_metadata_rb_arg_index(args_metadata);
304
305
  }
305
306
 
306
- static void
307
- callback_data_guard_from_gc(RBGICallbackData *callback_data)
308
- {
309
- rbg_gc_guard(callback_data, callback_data->rb_callback);
310
- }
311
-
312
- static void
313
- callback_data_unguard_from_gc(RBGICallbackData *callback_data)
314
- {
315
- rbg_gc_unguard(callback_data);
316
- }
317
-
318
307
  static void
319
308
  rb_gi_callback_free(RBGICallback *callback)
320
309
  {
@@ -325,13 +314,30 @@ rb_gi_callback_free(RBGICallback *callback)
325
314
  xfree(callback);
326
315
  }
327
316
 
317
+ static void
318
+ rb_gi_callback_data_weak_notify(gpointer data, GObject* where_the_object_was)
319
+ {
320
+ RBGICallbackData *callback_data = data;
321
+ callback_data->owner = NULL;
322
+ }
323
+
328
324
  void
329
325
  rb_gi_callback_data_free(RBGICallbackData *callback_data)
330
326
  {
331
327
  if (callback_data->callback) {
332
328
  rb_gi_callback_free(callback_data->callback);
333
329
  }
334
- callback_data_unguard_from_gc(callback_data);
330
+ if (callback_data->owner) {
331
+ VALUE rb_owner;
332
+ g_object_weak_unref(callback_data->owner,
333
+ rb_gi_callback_data_weak_notify,
334
+ callback_data);
335
+ rb_owner = rbgobj_ruby_object_from_instance2(callback_data->owner,
336
+ FALSE);
337
+ if (!NIL_P(rb_owner)) {
338
+ rbgobj_object_remove_relative(rb_owner, callback_data->rb_callback);
339
+ }
340
+ }
335
341
  xfree(callback_data->metadata);
336
342
  xfree(callback_data);
337
343
  }
@@ -349,7 +355,7 @@ rb_gi_callback_data_get_rb_callback(RBGICallbackData *callback_data)
349
355
  }
350
356
 
351
357
  static void
352
- destroy_notify(gpointer data)
358
+ rb_gi_callback_data_destroy_notify(gpointer data)
353
359
  {
354
360
  RBGICallbackData *callback_data = data;
355
361
  rb_gi_callback_data_free(callback_data);
@@ -1087,7 +1093,10 @@ ffi_closure_callback(G_GNUC_UNUSED ffi_cif *cif,
1087
1093
  }
1088
1094
 
1089
1095
  static void
1090
- in_callback_argument_from_ruby(RBGIArgMetadata *metadata, GArray *in_args)
1096
+ in_callback_argument_from_ruby(RBGIArgMetadata *metadata,
1097
+ GArray *in_args,
1098
+ VALUE self,
1099
+ VALUE rb_arguments)
1091
1100
  {
1092
1101
  gpointer callback_function;
1093
1102
  GIArgInfo *arg_info;
@@ -1140,17 +1149,27 @@ in_callback_argument_from_ruby(RBGIArgMetadata *metadata, GArray *in_args)
1140
1149
 
1141
1150
  if (closure_argument) {
1142
1151
  RBGICallbackData *callback_data;
1152
+ VALUE rb_owner;
1143
1153
 
1144
1154
  callback_data = ALLOC(RBGICallbackData);
1145
1155
  callback_data->callback = callback;
1146
1156
  callback_data->metadata = metadata;
1147
1157
  callback_data->rb_callback = rb_block_proc();
1148
- callback_data_guard_from_gc(callback_data);
1158
+ if (NIL_P(self)) {
1159
+ rb_owner = rb_ary_entry(rb_arguments, 0);
1160
+ } else {
1161
+ rb_owner = self;
1162
+ }
1163
+ rbgobj_object_add_relative(rb_owner, callback_data->rb_callback);
1164
+ callback_data->owner = RVAL2GOBJ(rb_owner);
1165
+ g_object_weak_ref(callback_data->owner,
1166
+ rb_gi_callback_data_weak_notify,
1167
+ callback_data);
1149
1168
  closure_argument->v_pointer = callback_data;
1150
1169
  }
1151
1170
 
1152
1171
  if (destroy_argument) {
1153
- destroy_argument->v_pointer = destroy_notify;
1172
+ destroy_argument->v_pointer = rb_gi_callback_data_destroy_notify;
1154
1173
  }
1155
1174
  }
1156
1175
 
@@ -1163,7 +1182,7 @@ in_argument_from_ruby(GICallableInfo *callable_info,
1163
1182
  VALUE self)
1164
1183
  {
1165
1184
  if (metadata->callback_p && !metadata->destroy_p) {
1166
- in_callback_argument_from_ruby(metadata, in_args);
1185
+ in_callback_argument_from_ruby(metadata, in_args, self, rb_arguments);
1167
1186
  return;
1168
1187
  }
1169
1188
 
@@ -596,7 +596,7 @@ module GObjectIntrospection
596
596
  end
597
597
 
598
598
  def define_equal_style_setter(info, klass, method_name)
599
- if /\Aset_/ =~ method_name and info.n_args == 1
599
+ if /\Aset_/ =~ method_name and info.n_in_args == 1
600
600
  setter_method_name = "#{$POSTMATCH}="
601
601
  remove_existing_method(klass, setter_method_name)
602
602
  klass.__send__(:alias_method, setter_method_name, method_name)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gobject-introspection
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.8
4
+ version: 3.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Ruby-GNOME2 Project Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-06 00:00:00.000000000 Z
11
+ date: 2018-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glib2
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.8
19
+ version: 3.2.9
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.2.8
26
+ version: 3.2.9
27
27
  description: Ruby/GObjectIntrospection provides bindings of GObject Introspection
28
28
  and a loader module that can generate dynamically Ruby bindings of any GObject C
29
29
  libraries