glib2 4.2.5 → 4.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2002-2023 Ruby-GNOME Project Team
3
+ * Copyright (C) 2002-2025 Ruby-GNOME Project Team
4
4
  * Copyright (C) 2002-2003 Masahiro Sakai
5
5
  * Copyright (C) 1998-2000 Yukihiro Matsumoto,
6
6
  * Daisuke Kanda,
@@ -112,7 +112,7 @@ static const rb_data_type_t rg_glib_object_type = {
112
112
  holder_mark,
113
113
  holder_free,
114
114
  },
115
- NULL,
115
+ &rbg_glib_instantiatable_type,
116
116
  NULL,
117
117
  RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE,
118
118
  };
@@ -301,144 +301,142 @@ gobj_mark(gpointer ptr)
301
301
  g_free(properties);
302
302
  }
303
303
 
304
- static VALUE
305
- rg_s_new_bang(int argc, VALUE *argv, VALUE self)
306
- {
307
- const RGObjClassInfo* cinfo = rbgobj_lookup_class(self);
308
- VALUE params_hash;
309
- GObject* gobj;
310
- VALUE result;
311
-
312
- rb_scan_args(argc, argv, "01", &params_hash);
313
-
314
- if (!NIL_P(params_hash))
315
- Check_Type(params_hash, RUBY_T_HASH);
316
-
317
- if (cinfo->klass != self)
318
- rb_raise(rb_eTypeError, "%s isn't registered class",
319
- rb_class2name(self));
320
-
321
- gobj = rbgobj_gobject_new(cinfo->gtype, params_hash);
322
- result = GOBJ2RVAL(gobj);
323
- g_object_unref(gobj);
324
-
325
- return result;
326
- }
327
-
328
- static VALUE
329
- rg_s_init(VALUE self)
330
- {
331
- return RUBY_Qnil;
332
- }
333
-
334
- struct param_setup_arg {
304
+ typedef struct {
305
+ VALUE rb_properties;
335
306
  GObjectClass* gclass;
336
- GParameter* params;
337
- guint param_size;
338
- VALUE params_hash;
307
+ guint n_properties;
308
+ const char **names;
309
+ GValue* values;
339
310
  guint index;
340
- };
311
+ } rbgobj_new_data;
341
312
 
342
- static VALUE
343
- _params_setup(VALUE arg,
344
- VALUE rb_param_setup_arg,
345
- G_GNUC_UNUSED int argc,
346
- G_GNUC_UNUSED const VALUE *argv,
347
- G_GNUC_UNUSED VALUE block)
313
+ static int
314
+ rbgobj_new_set_property(VALUE key,
315
+ VALUE value,
316
+ VALUE rb_data)
348
317
  {
349
- struct param_setup_arg *param_setup_arg =
350
- (struct param_setup_arg *)rb_param_setup_arg;
351
- guint index;
352
- VALUE name, val;
353
- GParamSpec* pspec;
354
-
355
- index = param_setup_arg->index;
356
- if (index >= param_setup_arg->param_size)
357
- rb_raise(rb_eArgError, "too many parameters");
318
+ rbgobj_new_data *data = (rbgobj_new_data *)rb_data;
358
319
 
359
- name = rb_ary_entry(arg, 0);
360
- val = rb_ary_entry(arg, 1);
320
+ guint index = data->index;
321
+ if (index >= data->n_properties)
322
+ rb_raise(rb_eArgError, "too many properties");
361
323
 
362
- if (SYMBOL_P(name))
363
- param_setup_arg->params[index].name = rb_id2name(SYM2ID(name));
364
- else
365
- param_setup_arg->params[index].name = StringValuePtr(name);
324
+ const char *name;
325
+ if (SYMBOL_P(key)) {
326
+ name = rb_id2name(SYM2ID(key));
327
+ } else {
328
+ name = StringValueCStr(key);
329
+ }
366
330
 
367
- pspec = g_object_class_find_property(
368
- param_setup_arg->gclass,
369
- param_setup_arg->params[index].name);
331
+ GParamSpec *pspec = g_object_class_find_property(data->gclass, name);
370
332
  if (!pspec)
371
- rb_raise(rb_eArgError, "No such property: %s",
372
- param_setup_arg->params[index].name);
333
+ rb_raise(rb_eArgError, "No such property: %s", name);
373
334
 
374
- g_value_init(&(param_setup_arg->params[index].value),
375
- G_PARAM_SPEC_VALUE_TYPE(pspec));
376
- rbgobj_rvalue_to_gvalue(val, &(param_setup_arg->params[index].value));
335
+ data->names[index] = pspec->name;
336
+ g_value_init(&(data->values[index]), G_PARAM_SPEC_VALUE_TYPE(pspec));
337
+ rbgobj_rvalue_to_gvalue(value, &(data->values[index]));
377
338
 
378
- param_setup_arg->index++;
339
+ data->index++;
379
340
 
380
- return Qnil;
341
+ return ST_CONTINUE;
381
342
  }
382
343
 
383
344
  static VALUE
384
- gobj_new_body(VALUE rb_arg)
345
+ rbgobj_new_body(VALUE rb_data)
385
346
  {
386
- struct param_setup_arg *arg = (struct param_setup_arg *)rb_arg;
387
- ID id_each;
388
- CONST_ID(id_each, "each");
389
- rb_block_call(arg->params_hash, id_each, 0, NULL, _params_setup, (VALUE)arg);
390
- return (VALUE)g_object_newv(G_TYPE_FROM_CLASS(arg->gclass),
391
- arg->param_size, arg->params);
347
+ rbgobj_new_data *data = (rbgobj_new_data *)rb_data;
348
+ rb_hash_foreach(data->rb_properties, rbgobj_new_set_property, rb_data);
349
+ return (VALUE)g_object_new_with_properties(G_TYPE_FROM_CLASS(data->gclass),
350
+ data->n_properties,
351
+ data->names,
352
+ data->values);
392
353
  }
393
354
 
394
355
  static VALUE
395
- gobj_new_ensure(VALUE rb_arg)
356
+ rbgobj_new_ensure(VALUE rb_data)
396
357
  {
397
- struct param_setup_arg *arg = (struct param_setup_arg *)rb_arg;
358
+ rbgobj_new_data *data = (rbgobj_new_data *)rb_data;
398
359
  guint i;
399
- g_type_class_unref(arg->gclass);
400
- for (i = 0; i < arg->param_size; i++) {
401
- if (G_IS_VALUE(&arg->params[i].value))
402
- g_value_unset(&arg->params[i].value);
360
+ for (i = 0; i < data->n_properties; i++) {
361
+ g_value_unset(&(data->values[i]));
403
362
  }
363
+ g_type_class_unref(data->gclass);
404
364
  return Qnil;
405
365
  }
406
366
 
407
- GObject*
408
- rbgobj_gobject_new(GType gtype, VALUE params_hash)
367
+ static GObject *
368
+ rbgobj_gobject_new(int argc, VALUE *argv, GType gtype)
409
369
  {
410
- GObject* result;
411
-
412
370
  if (!g_type_is_a(gtype, G_TYPE_OBJECT))
413
371
  rb_raise(rb_eArgError,
414
372
  "type \"%s\" is not descendant of GObject",
415
373
  g_type_name(gtype));
416
374
 
417
- if (NIL_P(params_hash)) {
418
- result = g_object_newv(gtype, 0, NULL);
375
+ VALUE rb_properties = Qnil;
376
+ #ifdef RB_SCAN_ARGS_LAST_HASH_KEYWORDS
377
+ /* TODO: Can we use rb_get_kwargs()? */
378
+ rb_scan_args_kw(RB_SCAN_ARGS_LAST_HASH_KEYWORDS, argc, argv,
379
+ "0:", &rb_properties);
380
+ #else
381
+ /* We can remove this when we drop support for AlmaLinux 8 that
382
+ * ships Ruby 2.5 as the default Ruby. */
383
+ rb_scan_args(argc, argv, "01", &rb_properties);
384
+ #endif
385
+
386
+ GObject *gobject;
387
+ if (NIL_P(rb_properties)) {
388
+ gobject = g_object_new_with_properties(gtype, 0, NULL, NULL);
419
389
  } else {
420
- guint param_size;
421
- struct param_setup_arg arg;
390
+ rbgobj_new_data data;
391
+ data.rb_properties = rb_properties;
392
+ data.gclass = G_OBJECT_CLASS(g_type_class_ref(gtype));
393
+ data.n_properties = RHASH_SIZE(rb_properties);
394
+ data.names = NULL;
395
+ data.values = NULL;
396
+ data.names = ALLOCA_N(const char *, data.n_properties);
397
+ data.values = ALLOCA_N(GValue, data.n_properties);
398
+ guint i;
399
+ GValue empty_value = G_VALUE_INIT;
400
+ for (i = 0; i < data.n_properties; i++) {
401
+ data.names[i] = NULL;
402
+ data.values[i] = empty_value;
403
+ }
404
+ data.index = 0;
422
405
 
423
- param_size = NUM2UINT(rb_funcall(params_hash, rb_intern("length"), 0));
406
+ gobject = (GObject *)rb_ensure(&rbgobj_new_body, (VALUE)(&data),
407
+ &rbgobj_new_ensure, (VALUE)(&data));
408
+ }
424
409
 
425
- arg.param_size = param_size;
426
- arg.gclass = G_OBJECT_CLASS(g_type_class_ref(gtype));
427
- arg.params = ALLOCA_N(GParameter, param_size);
428
- memset(arg.params, 0, sizeof(GParameter) * param_size);
429
- arg.params_hash = params_hash;
430
- arg.index = 0;
410
+ if (!gobject)
411
+ rb_raise(rb_eRuntimeError, "g_object_new_with_properties() failed");
431
412
 
432
- result = (GObject*)rb_ensure(&gobj_new_body, (VALUE)&arg,
433
- &gobj_new_ensure, (VALUE)&arg);
434
- }
413
+ return gobject;
414
+ }
435
415
 
436
- if (!result)
437
- rb_raise(rb_eRuntimeError, "g_object_newv failed");
416
+ static VALUE
417
+ rg_s_new_bang(int argc, VALUE *argv, VALUE self)
418
+ {
419
+ const RGObjClassInfo* cinfo = rbgobj_lookup_class(self);
420
+ GObject* gobj;
421
+ VALUE result;
422
+
423
+ if (cinfo->klass != self)
424
+ rb_raise(rb_eTypeError, "%s isn't registered class",
425
+ rb_class2name(self));
426
+
427
+ gobj = rbgobj_gobject_new(argc, argv, cinfo->gtype);
428
+ result = GOBJ2RVAL(gobj);
429
+ g_object_unref(gobj);
438
430
 
439
431
  return result;
440
432
  }
441
433
 
434
+ static VALUE
435
+ rg_s_init(VALUE self)
436
+ {
437
+ return RUBY_Qnil;
438
+ }
439
+
442
440
  static VALUE
443
441
  rg_s_install_property(int argc, VALUE* argv, VALUE self)
444
442
  {
@@ -867,7 +865,6 @@ static VALUE
867
865
  rg_initialize(int argc, VALUE *argv, VALUE self)
868
866
  {
869
867
  GType gtype;
870
- VALUE params_hash;
871
868
  GObject* gobj;
872
869
 
873
870
  gtype = CLASS2GTYPE(CLASS_OF(self));
@@ -877,12 +874,7 @@ rg_initialize(int argc, VALUE *argv, VALUE self)
877
874
  RBG_INSPECT(CLASS_OF(self)));
878
875
  }
879
876
 
880
- rb_scan_args(argc, argv, "01", &params_hash);
881
-
882
- if (!NIL_P(params_hash))
883
- Check_Type(params_hash, RUBY_T_HASH);
884
-
885
- gobj = rbgobj_gobject_new(RVAL2GTYPE(self), params_hash);
877
+ gobj = rbgobj_gobject_new(argc, argv, gtype);
886
878
 
887
879
  G_INITIALIZE(self, gobj);
888
880
 
@@ -1052,8 +1044,8 @@ rbgobj_register_type(VALUE klass, VALUE type_name, GClassInitFunc class_init)
1052
1044
  initialize_module = rb_define_module_under(klass,
1053
1045
  RubyGObjectHookModule);
1054
1046
  if (!(cinfo->flags & RBGOBJ_DEFINED_BY_RUBY)) {
1055
- rbg_define_method(initialize_module,
1056
- "initialize", rg_initialize, -1);
1047
+ rb_define_method(initialize_module,
1048
+ "initialize", rg_initialize, -1);
1057
1049
  }
1058
1050
 
1059
1051
  rb_include_module(klass, initialize_module);
@@ -1092,8 +1084,8 @@ Init_gobject_gobject(void)
1092
1084
 
1093
1085
  RG_DEF_SMETHOD(init, 0);
1094
1086
 
1095
- rbg_define_singleton_method(RG_TARGET_NAMESPACE, "property", &gobj_s_property, 1);
1096
- rbg_define_singleton_method(RG_TARGET_NAMESPACE, "properties", &gobj_s_properties, -1);
1087
+ rb_define_singleton_method(RG_TARGET_NAMESPACE, "property", gobj_s_property, 1);
1088
+ rb_define_singleton_method(RG_TARGET_NAMESPACE, "properties", gobj_s_properties, -1);
1097
1089
  RG_DEF_SMETHOD(install_property, -1);
1098
1090
  q_ruby_getter = g_quark_from_static_string("__ruby_getter");
1099
1091
  q_ruby_setter = g_quark_from_static_string("__ruby_setter");
@@ -1108,7 +1100,7 @@ Init_gobject_gobject(void)
1108
1100
 
1109
1101
  RG_DEF_METHOD(initialize, -1);
1110
1102
  RG_DEF_PRIVATE_METHOD(initialize_post, 0);
1111
- rbg_define_method(RG_TARGET_NAMESPACE, "ref_count", gobj_ref_count, 0); /* for debugging */
1103
+ rb_define_method(RG_TARGET_NAMESPACE, "ref_count", gobj_ref_count, 0); /* for debugging */
1112
1104
  RG_DEF_METHOD_P(floating, 0); /* for debugging */
1113
1105
  RG_DEF_METHOD(unref, 0);
1114
1106
  RG_DEF_METHOD(inspect, 0);
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2011-2021 Ruby-GNOME Project Team
3
+ * Copyright (C) 2011-2025 Ruby-GNOME Project Team
4
4
  * Copyright (C) 2002,2003 Masahiro Sakai
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
@@ -59,7 +59,7 @@ static const rb_data_type_t rg_glib_param_type = {
59
59
  pspec_mark,
60
60
  pspec_free,
61
61
  },
62
- NULL,
62
+ &rbg_glib_instantiatable_type,
63
63
  NULL,
64
64
  RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE,
65
65
  };
@@ -410,26 +410,26 @@ Init_gobject_gparam(void)
410
410
  /* for debugging */
411
411
  RG_DEF_METHOD(ref_count, 0);
412
412
 
413
- rbg_define_method(RG_TARGET_NAMESPACE, "readable?",
414
- param_is_G_PARAM_READABLE, 0);
415
- rbg_define_method(RG_TARGET_NAMESPACE, "writable?",
416
- param_is_G_PARAM_WRITABLE, 0);
417
- rbg_define_method(RG_TARGET_NAMESPACE, "readwrite?",
418
- param_is_G_PARAM_READWRITE, 0);
419
- rbg_define_method(RG_TARGET_NAMESPACE, "construct?",
420
- param_is_G_PARAM_CONSTRUCT, 0);
421
- rbg_define_method(RG_TARGET_NAMESPACE, "construct_only?",
422
- param_is_G_PARAM_CONSTRUCT_ONLY, 0);
423
- rbg_define_method(RG_TARGET_NAMESPACE, "lax_validation?",
424
- param_is_G_PARAM_LAX_VALIDATION, 0);
425
- rbg_define_method(RG_TARGET_NAMESPACE, "static_name?",
426
- param_is_G_PARAM_STATIC_NAME, 0);
427
- rbg_define_method(RG_TARGET_NAMESPACE, "static_nick?",
428
- param_is_G_PARAM_STATIC_NICK, 0);
429
- rbg_define_method(RG_TARGET_NAMESPACE, "static_blurb?",
430
- param_is_G_PARAM_STATIC_BLURB, 0);
431
- rbg_define_method(RG_TARGET_NAMESPACE, "explicit_notify?",
432
- param_is_G_PARAM_EXPLICIT_NOTIFY, 0);
433
- rbg_define_method(RG_TARGET_NAMESPACE, "deprecated?",
434
- param_is_G_PARAM_DEPRECATED, 0);
413
+ rb_define_method(RG_TARGET_NAMESPACE, "readable?",
414
+ param_is_G_PARAM_READABLE, 0);
415
+ rb_define_method(RG_TARGET_NAMESPACE, "writable?",
416
+ param_is_G_PARAM_WRITABLE, 0);
417
+ rb_define_method(RG_TARGET_NAMESPACE, "readwrite?",
418
+ param_is_G_PARAM_READWRITE, 0);
419
+ rb_define_method(RG_TARGET_NAMESPACE, "construct?",
420
+ param_is_G_PARAM_CONSTRUCT, 0);
421
+ rb_define_method(RG_TARGET_NAMESPACE, "construct_only?",
422
+ param_is_G_PARAM_CONSTRUCT_ONLY, 0);
423
+ rb_define_method(RG_TARGET_NAMESPACE, "lax_validation?",
424
+ param_is_G_PARAM_LAX_VALIDATION, 0);
425
+ rb_define_method(RG_TARGET_NAMESPACE, "static_name?",
426
+ param_is_G_PARAM_STATIC_NAME, 0);
427
+ rb_define_method(RG_TARGET_NAMESPACE, "static_nick?",
428
+ param_is_G_PARAM_STATIC_NICK, 0);
429
+ rb_define_method(RG_TARGET_NAMESPACE, "static_blurb?",
430
+ param_is_G_PARAM_STATIC_BLURB, 0);
431
+ rb_define_method(RG_TARGET_NAMESPACE, "explicit_notify?",
432
+ param_is_G_PARAM_EXPLICIT_NOTIFY, 0);
433
+ rb_define_method(RG_TARGET_NAMESPACE, "deprecated?",
434
+ param_is_G_PARAM_DEPRECATED, 0);
435
435
  }
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2004-2024 Ruby-GNOME Project Team
3
+ * Copyright (C) 2004-2025 Ruby-GNOME Project Team
4
4
  * Copyright (C) 2002,2003 Masahiro Sakai
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
@@ -281,14 +281,14 @@ Init_gobject_gparamspecs(void)
281
281
 
282
282
  #define DEF_NUMERIC_PSPEC_METHODS(c, typename) \
283
283
  G_STMT_START {\
284
- rbg_define_method(c, "initialize", typename##_initialize, 7); \
285
- rbg_define_method(c, "minimum", typename##_minimum, 0); \
286
- rbg_define_method(c, "maximum", typename##_maximum, 0); \
287
- rbg_define_method(c, "range", typename##_range, 0); \
284
+ rb_define_method(c, "initialize", typename##_initialize, 7); \
285
+ rb_define_method(c, "minimum", typename##_minimum, 0); \
286
+ rb_define_method(c, "maximum", typename##_maximum, 0); \
287
+ rb_define_method(c, "range", typename##_range, 0); \
288
288
  } G_STMT_END
289
289
 
290
290
  #if 0
291
- rbg_define_method(c, "default_value", typename##_default_value, 0); \
291
+ rb_define_method(c, "default_value", typename##_default_value, 0); \
292
292
  rb_define_alias(c, "default", "default_value"); \
293
293
 
294
294
  #endif
@@ -319,39 +319,39 @@ Init_gobject_gparamspecs(void)
319
319
 
320
320
  c = G_DEF_CLASS(G_TYPE_PARAM_FLOAT, "Float", cParamSpec);
321
321
  DEF_NUMERIC_PSPEC_METHODS(c, float);
322
- rbg_define_method(c, "epsilon", float_epsilon, 0);
322
+ rb_define_method(c, "epsilon", float_epsilon, 0);
323
323
 
324
324
  c = G_DEF_CLASS(G_TYPE_PARAM_DOUBLE, "Double", cParamSpec);
325
325
  DEF_NUMERIC_PSPEC_METHODS(c, double);
326
- rbg_define_method(c, "epsilon", double_epsilon, 0);
326
+ rb_define_method(c, "epsilon", double_epsilon, 0);
327
327
 
328
328
  c = G_DEF_CLASS(G_TYPE_PARAM_BOOLEAN, "Boolean", cParamSpec);
329
- rbg_define_method(c, "initialize", boolean_initialize, 5);
329
+ rb_define_method(c, "initialize", boolean_initialize, 5);
330
330
 
331
331
  c = G_DEF_CLASS(G_TYPE_PARAM_UNICHAR, "UniChar", cParamSpec);
332
- rbg_define_method(c, "initialize", unichar_initialize, 5);
332
+ rb_define_method(c, "initialize", unichar_initialize, 5);
333
333
 
334
334
  c = G_DEF_CLASS(G_TYPE_PARAM_ENUM, "Enum", cParamSpec);
335
- rbg_define_method(c, "initialize", enum_initialize, 6);
335
+ rb_define_method(c, "initialize", enum_initialize, 6);
336
336
 
337
337
  c = G_DEF_CLASS(G_TYPE_PARAM_FLAGS, "Flags", cParamSpec);
338
- rbg_define_method(c, "initialize", flags_initialize, 6);
338
+ rb_define_method(c, "initialize", flags_initialize, 6);
339
339
 
340
340
  c = G_DEF_CLASS(G_TYPE_PARAM_STRING, "String", cParamSpec);
341
- rbg_define_method(c, "initialize", string_initialize, 5);
341
+ rb_define_method(c, "initialize", string_initialize, 5);
342
342
 
343
343
  c = G_DEF_CLASS(G_TYPE_PARAM_PARAM, "Param", cParamSpec);
344
- rbg_define_method(c, "initialize", param_initialize, 5);
344
+ rb_define_method(c, "initialize", param_initialize, 5);
345
345
 
346
346
  c = G_DEF_CLASS(G_TYPE_PARAM_BOXED, "Boxed", cParamSpec);
347
- rbg_define_method(c, "initialize", boxed_initialize, 5);
347
+ rb_define_method(c, "initialize", boxed_initialize, 5);
348
348
 
349
349
  c = G_DEF_CLASS(G_TYPE_PARAM_POINTER, "Pointer", cParamSpec);
350
- rbg_define_method(c, "initialize", pointer_initialize, 4);
350
+ rb_define_method(c, "initialize", pointer_initialize, 4);
351
351
 
352
352
  c = G_DEF_CLASS(G_TYPE_PARAM_VALUE_ARRAY, "ValueArray", cParamSpec);
353
- rbg_define_method(c, "initialize", value_array_initialize, 5);
353
+ rb_define_method(c, "initialize", value_array_initialize, 5);
354
354
 
355
355
  c = G_DEF_CLASS(G_TYPE_PARAM_OBJECT, "Object", cParamSpec);
356
- rbg_define_method(c, "initialize", object_initialize, 5);
356
+ rb_define_method(c, "initialize", object_initialize, 5);
357
357
  }
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2002-2023 Ruby-GNOME Project Team
3
+ * Copyright (C) 2002-2025 Ruby-GNOME Project Team
4
4
  * Copyright (C) 2002,2003 Masahiro Sakai
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
@@ -769,7 +769,7 @@ gobj_s_signal_handler_attach(VALUE klass,
769
769
  {
770
770
  VALUE mod = rb_define_module_under(klass, RubyGObjectHookModule);
771
771
  rb_include_module(klass, mod);
772
- rbg_define_method(mod, handler_name, gobj_sig_chain_from_overridden, -1);
772
+ rb_define_method(mod, handler_name, gobj_sig_chain_from_overridden, -1);
773
773
  }
774
774
 
775
775
  return Qnil;
@@ -1026,13 +1026,13 @@ Init_gobject_gsignal(void)
1026
1026
  rb_define_const(cSignalFlags, "MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
1027
1027
  rb_define_const(RG_TARGET_NAMESPACE, "FLAGS_MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
1028
1028
 
1029
- rbg_define_method(RG_TARGET_NAMESPACE, "run_first?", query_is_G_SIGNAL_RUN_FIRST, 0);
1030
- rbg_define_method(RG_TARGET_NAMESPACE, "run_last?", query_is_G_SIGNAL_RUN_LAST, 0);
1031
- rbg_define_method(RG_TARGET_NAMESPACE, "run_cleanup?", query_is_G_SIGNAL_RUN_CLEANUP, 0);
1032
- rbg_define_method(RG_TARGET_NAMESPACE, "no_recurse?", query_is_G_SIGNAL_NO_RECURSE, 0);
1033
- rbg_define_method(RG_TARGET_NAMESPACE, "detailed?", query_is_G_SIGNAL_DETAILED, 0);
1034
- rbg_define_method(RG_TARGET_NAMESPACE, "action?", query_is_G_SIGNAL_ACTION, 0);
1035
- rbg_define_method(RG_TARGET_NAMESPACE, "no_hooks?", query_is_G_SIGNAL_NO_HOOKS, 0);
1029
+ rb_define_method(RG_TARGET_NAMESPACE, "run_first?", query_is_G_SIGNAL_RUN_FIRST, 0);
1030
+ rb_define_method(RG_TARGET_NAMESPACE, "run_last?", query_is_G_SIGNAL_RUN_LAST, 0);
1031
+ rb_define_method(RG_TARGET_NAMESPACE, "run_cleanup?", query_is_G_SIGNAL_RUN_CLEANUP, 0);
1032
+ rb_define_method(RG_TARGET_NAMESPACE, "no_recurse?", query_is_G_SIGNAL_NO_RECURSE, 0);
1033
+ rb_define_method(RG_TARGET_NAMESPACE, "detailed?", query_is_G_SIGNAL_DETAILED, 0);
1034
+ rb_define_method(RG_TARGET_NAMESPACE, "action?", query_is_G_SIGNAL_ACTION, 0);
1035
+ rb_define_method(RG_TARGET_NAMESPACE, "no_hooks?", query_is_G_SIGNAL_NO_HOOKS, 0);
1036
1036
 
1037
1037
  /* GConnectFlags */
1038
1038
  G_DEF_CLASS(G_TYPE_CONNECT_FLAGS, "ConnectFlags", rbg_mGLib());
@@ -1056,40 +1056,40 @@ Init_gobject_gsignal(void)
1056
1056
  g_mutex_init(&rbg_signal_call_func_table_mutex);
1057
1057
 
1058
1058
  rbgobj_mMetaSignal = rb_define_module_under(rbg_mGLib(), "MetaSignal");
1059
- rbg_define_method(rbgobj_mMetaSignal, "define_signal", gobj_s_define_signal, -1);
1059
+ rb_define_method(rbgobj_mMetaSignal, "define_signal", gobj_s_define_signal, -1);
1060
1060
  rb_define_alias(rbgobj_mMetaSignal, "signal_new", "define_signal");
1061
- rbg_define_method(rbgobj_mMetaSignal, "signals", gobj_s_signals, -1);
1062
- rbg_define_method(rbgobj_mMetaSignal, "signal", gobj_s_signal, 1);
1061
+ rb_define_method(rbgobj_mMetaSignal, "signals", gobj_s_signals, -1);
1062
+ rb_define_method(rbgobj_mMetaSignal, "signal", gobj_s_signal, 1);
1063
1063
  rb_extend_object(rbgobj_cObject, rbgobj_mMetaSignal);
1064
1064
  rb_extend_object(rbgobj_mInterface, rbgobj_mMetaSignal);
1065
1065
 
1066
- rbg_define_method(cInstantiatable, "signal_has_handler_pending?",
1066
+ rb_define_method(cInstantiatable, "signal_has_handler_pending?",
1067
1067
  gobj_sig_has_handler_pending, -1);
1068
- rbg_define_method(cInstantiatable, "signal_connect", gobj_sig_connect, -1);
1069
- rbg_define_method(cInstantiatable, "signal_connect_after",
1068
+ rb_define_method(cInstantiatable, "signal_connect", gobj_sig_connect, -1);
1069
+ rb_define_method(cInstantiatable, "signal_connect_after",
1070
1070
  gobj_sig_connect_after, -1);
1071
1071
 
1072
1072
  #if 0
1073
- rbg_define_method(cInstantiatable, "signal_invocation_hint",
1073
+ rb_define_method(cInstantiatable, "signal_invocation_hint",
1074
1074
  gobj_sig_get_invocation_hint, 0);
1075
1075
  #endif
1076
1076
 
1077
- rbg_define_method(cInstantiatable, "signal_emit",
1077
+ rb_define_method(cInstantiatable, "signal_emit",
1078
1078
  gobj_sig_emit, -1);
1079
- rbg_define_method(cInstantiatable, "signal_emit_stop",
1079
+ rb_define_method(cInstantiatable, "signal_emit_stop",
1080
1080
  gobj_sig_emit_stop, 1);
1081
- rbg_define_method(cInstantiatable, "signal_handler_block",
1081
+ rb_define_method(cInstantiatable, "signal_handler_block",
1082
1082
  gobj_sig_handler_block, 1);
1083
- rbg_define_method(cInstantiatable, "signal_handler_unblock",
1083
+ rb_define_method(cInstantiatable, "signal_handler_unblock",
1084
1084
  gobj_sig_handler_unblock, 1);
1085
- rbg_define_method(cInstantiatable, "signal_handler_disconnect",
1085
+ rb_define_method(cInstantiatable, "signal_handler_disconnect",
1086
1086
  gobj_sig_handler_disconnect, 1);
1087
1087
 
1088
- rbg_define_method(cInstantiatable, "signal_handler_is_connected?",
1088
+ rb_define_method(cInstantiatable, "signal_handler_is_connected?",
1089
1089
  gobj_sig_handler_is_connected, 1);
1090
1090
 
1091
- rbg_define_singleton_method(cInstantiatable,
1092
- "signal_handler_attach",
1093
- gobj_s_signal_handler_attach,
1094
- 2);
1091
+ rb_define_singleton_method(cInstantiatable,
1092
+ "signal_handler_attach",
1093
+ gobj_s_signal_handler_attach,
1094
+ 2);
1095
1095
  }
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2002-2023 Ruby-GNOME Project Team
3
+ * Copyright (C) 2002-2025 Ruby-GNOME Project Team
4
4
  * Copyright (C) 2002,2003 Masahiro Sakai
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
@@ -365,14 +365,10 @@ rbgobj_class_info_lookup(VALUE klass)
365
365
  VALUE data = rb_hash_aref(klass_to_cinfo, klass);
366
366
  if (!NIL_P(data)) {
367
367
  RGObjClassInfo *cinfo;
368
- if (RTYPEDDATA_P(data)) {
369
- TypedData_Get_Struct(data,
370
- RGObjClassInfo,
371
- RTYPEDDATA_TYPE(data),
372
- cinfo);
373
- } else {
374
- Data_Get_Struct(data, RGObjClassInfo, cinfo);
375
- }
368
+ TypedData_Get_Struct(data,
369
+ RGObjClassInfo,
370
+ RTYPEDDATA_TYPE(data),
371
+ cinfo);
376
372
  return cinfo;
377
373
  }
378
374
 
@@ -664,14 +660,10 @@ rg_s_try_convert(VALUE self, VALUE value)
664
660
  if (NIL_P(data))
665
661
  continue;
666
662
 
667
- if (RTYPEDDATA_P(data)) {
668
- TypedData_Get_Struct(data,
669
- RGObjClassInfo,
670
- RTYPEDDATA_TYPE(data),
671
- cinfo);
672
- } else {
673
- Data_Get_Struct(data, RGObjClassInfo, cinfo);
674
- }
663
+ TypedData_Get_Struct(data,
664
+ RGObjClassInfo,
665
+ RTYPEDDATA_TYPE(data),
666
+ cinfo);
675
667
  return rb_funcall(self, id_new, 1, SIZET2NUM(cinfo->gtype));
676
668
  }
677
669
  return Qnil;