glib2 4.2.5 → 4.2.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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;