glib2 3.4.3 → 3.4.4
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.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/ext/glib2/extconf.rb +1 -5
- data/ext/glib2/rbglib-bytes.c +1 -5
- data/ext/glib2/rbglib-gc.c +98 -52
- data/ext/glib2/rbglib-variant-type.c +1 -5
- data/ext/glib2/rbglib-variant.c +3 -5
- data/ext/glib2/rbglib.c +4 -0
- data/ext/glib2/rbglib.h +4 -1
- data/ext/glib2/rbglib_bookmarkfile.c +1 -1
- data/ext/glib2/rbglib_datetime.c +1 -5
- data/ext/glib2/rbglib_fileutils.c +1 -17
- data/ext/glib2/rbglib_iochannel.c +4 -4
- data/ext/glib2/rbglib_keyfile.c +1 -35
- data/ext/glib2/rbglib_maincontext.c +6 -32
- data/ext/glib2/rbglib_mainloop.c +2 -17
- data/ext/glib2/rbglib_matchinfo.c +1 -5
- data/ext/glib2/rbglib_pollfd.c +1 -25
- data/ext/glib2/rbglib_regex.c +1 -13
- data/ext/glib2/rbglib_source.c +1 -39
- data/ext/glib2/rbglib_spawn.c +5 -10
- data/ext/glib2/rbglib_spawnerror.c +2 -2
- data/ext/glib2/rbglib_threads.c +2 -15
- data/ext/glib2/rbglib_timezone.c +1 -5
- data/ext/glib2/rbglib_unichar.c +46 -5
- data/ext/glib2/rbglib_unicode.c +1 -18
- data/ext/glib2/rbglib_utils.c +1 -14
- data/ext/glib2/rbglib_win32.c +3 -7
- data/ext/glib2/rbgobj_binding.c +1 -7
- data/ext/glib2/rbgobj_closure.c +22 -9
- data/ext/glib2/rbgobj_object.c +113 -104
- data/ext/glib2/rbgobj_param.c +2 -8
- data/ext/glib2/rbgobj_paramspecs.c +6 -24
- data/ext/glib2/rbgobj_signal.c +81 -48
- data/ext/glib2/rbgobj_strv.c +2 -2
- data/ext/glib2/rbgobj_type.c +57 -67
- data/ext/glib2/rbgobj_value.c +3 -7
- data/ext/glib2/rbgobj_valuetypes.c +14 -62
- data/ext/glib2/rbgobject.c +4 -6
- data/ext/glib2/rbgobject.h +2 -27
- data/ext/glib2/rbgprivate.h +6 -6
- data/ext/glib2/rbgutil_callback.c +23 -26
- data/lib/glib2/deprecated.rb +22 -1
- data/lib/mkmf-gnome.rb +5 -5
- data/test/glib-test-utils.rb +18 -3
- data/test/run-test.rb +49 -15
- data/test/test-binding.rb +1 -11
- data/test/test-bytes.rb +1 -5
- data/test/test-date-time.rb +1 -3
- data/test/test-file-utils.rb +1 -32
- data/test/test-iochannel.rb +3 -5
- data/test/test-key-file.rb +5 -6
- data/test/test-match-info.rb +1 -5
- data/test/test-regex.rb +1 -5
- data/test/test-source.rb +1 -14
- data/test/test-spawn.rb +2 -1
- data/test/test-time-zone.rb +1 -5
- data/test/test-timeout.rb +2 -3
- data/test/test-unicode.rb +16 -12
- data/test/test-utils.rb +2 -8
- data/test/test-variant-type.rb +1 -3
- data/test/test-win32.rb +6 -6
- metadata +3 -5
- data/ext/glib2/rbgobj_valuearray.c +0 -100
- data/test/glib-test-init.rb +0 -19
data/ext/glib2/rbglib_win32.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2011 Ruby-
|
3
|
+
* Copyright (C) 2011-2021 Ruby-GNOME Project Team
|
4
4
|
* Copyright (C) 2006 Kouhei Sutou
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -65,11 +65,10 @@ rbglib_m_win32_locale_filename_from_utf8_deprecated(VALUE self,
|
|
65
65
|
return rg_s_locale_filename_from_utf8(self, utf8_filename);
|
66
66
|
}
|
67
67
|
|
68
|
-
# if GLIB_CHECK_VERSION(2, 16, 0)
|
69
68
|
static VALUE
|
70
69
|
rg_s_get_package_installation_directory_of_module(int argc,
|
71
|
-
|
72
|
-
|
70
|
+
VALUE *argv,
|
71
|
+
VALUE self)
|
73
72
|
{
|
74
73
|
VALUE rb_module;
|
75
74
|
gchar *directory;
|
@@ -84,7 +83,6 @@ rg_s_get_package_installation_directory_of_module(int argc,
|
|
84
83
|
directory = g_win32_get_package_installation_directory_of_module(hmodule);
|
85
84
|
return CSTR2RVAL_FREE(directory);
|
86
85
|
}
|
87
|
-
# endif
|
88
86
|
#endif
|
89
87
|
|
90
88
|
void
|
@@ -105,8 +103,6 @@ Init_glib_win32(void)
|
|
105
103
|
rbg_define_singleton_method(mGLib, "win32_locale_filename_from_utf8",
|
106
104
|
rbglib_m_win32_locale_filename_from_utf8_deprecated, 1);
|
107
105
|
|
108
|
-
# if GLIB_CHECK_VERSION(2, 16, 0)
|
109
106
|
RG_DEF_SMETHOD(get_package_installation_directory_of_module, -1);
|
110
|
-
# endif
|
111
107
|
#endif
|
112
108
|
}
|
data/ext/glib2/rbgobj_binding.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2015 Ruby-
|
3
|
+
* Copyright (C) 2015-2021 Ruby-GNOME 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
|
@@ -24,7 +24,6 @@
|
|
24
24
|
|
25
25
|
#define _SELF(object) G_BINDING(RVAL2GOBJ(self))
|
26
26
|
|
27
|
-
#if GLIB_CHECK_VERSION(2, 38, 0)
|
28
27
|
static VALUE
|
29
28
|
rg_unbind(VALUE self)
|
30
29
|
{
|
@@ -39,18 +38,13 @@ rg_unbind(VALUE self)
|
|
39
38
|
|
40
39
|
return self;
|
41
40
|
}
|
42
|
-
#endif
|
43
41
|
|
44
42
|
void
|
45
43
|
Init_gobject_gbinding(void)
|
46
44
|
{
|
47
|
-
#if GLIB_CHECK_VERSION(2, 26, 0)
|
48
45
|
VALUE RG_TARGET_NAMESPACE;
|
49
46
|
|
50
47
|
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_BINDING, "Binding", mGLib);
|
51
|
-
#endif
|
52
48
|
|
53
|
-
#if GLIB_CHECK_VERSION(2, 38, 0)
|
54
49
|
RG_DEF_METHOD(unbind, 0);
|
55
|
-
#endif
|
56
50
|
}
|
data/ext/glib2/rbgobj_closure.c
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C)
|
4
|
-
* Copyright (C) 2002-2006 Ruby-GNOME2 Project
|
3
|
+
* Copyright (C) 2002-2021 Ruby-GNOME Project Team
|
5
4
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
6
5
|
*
|
7
6
|
* This library is free software; you can redistribute it and/or
|
@@ -173,7 +172,7 @@ rclosure_unref(GRClosure *rclosure)
|
|
173
172
|
g_list_free(rclosure->objects);
|
174
173
|
rclosure->objects = NULL;
|
175
174
|
if (!NIL_P(rclosure->rb_holder)) {
|
176
|
-
|
175
|
+
RTYPEDDATA_DATA(rclosure->rb_holder) = NULL;
|
177
176
|
rclosure->rb_holder = Qnil;
|
178
177
|
}
|
179
178
|
}
|
@@ -201,8 +200,10 @@ rclosure_invalidate(G_GNUC_UNUSED gpointer data, GClosure *closure)
|
|
201
200
|
}
|
202
201
|
|
203
202
|
static void
|
204
|
-
gr_closure_holder_mark(
|
203
|
+
gr_closure_holder_mark(void *data)
|
205
204
|
{
|
205
|
+
GRClosure *rclosure = data;
|
206
|
+
|
206
207
|
if (!rclosure)
|
207
208
|
return;
|
208
209
|
|
@@ -211,8 +212,10 @@ gr_closure_holder_mark(GRClosure *rclosure)
|
|
211
212
|
}
|
212
213
|
|
213
214
|
static void
|
214
|
-
gr_closure_holder_free(
|
215
|
+
gr_closure_holder_free(void *data)
|
215
216
|
{
|
217
|
+
GRClosure *rclosure = data;
|
218
|
+
|
216
219
|
if (!rclosure)
|
217
220
|
return;
|
218
221
|
|
@@ -225,6 +228,17 @@ gr_closure_holder_free(GRClosure *rclosure)
|
|
225
228
|
}
|
226
229
|
}
|
227
230
|
|
231
|
+
static const rb_data_type_t rbg_closure_holder_type = {
|
232
|
+
"GLib::ClosureHolder",
|
233
|
+
{
|
234
|
+
gr_closure_holder_mark,
|
235
|
+
gr_closure_holder_free,
|
236
|
+
},
|
237
|
+
NULL,
|
238
|
+
NULL,
|
239
|
+
RUBY_TYPED_FREE_IMMEDIATELY,
|
240
|
+
};
|
241
|
+
|
228
242
|
static GClosure *
|
229
243
|
g_rclosure_new_raw(VALUE callback_proc,
|
230
244
|
VALUE extra_args,
|
@@ -241,10 +255,9 @@ g_rclosure_new_raw(VALUE callback_proc,
|
|
241
255
|
closure->objects = NULL;
|
242
256
|
closure->callback = callback_proc;
|
243
257
|
closure->extra_args = extra_args;
|
244
|
-
closure->rb_holder =
|
245
|
-
|
246
|
-
|
247
|
-
closure);
|
258
|
+
closure->rb_holder = TypedData_Wrap_Struct(rb_cObject,
|
259
|
+
&rbg_closure_holder_type,
|
260
|
+
closure);
|
248
261
|
closure->tag[0] = '\0';
|
249
262
|
|
250
263
|
g_closure_set_marshal((GClosure*)closure, &rclosure_marshal);
|
data/ext/glib2/rbgobj_object.c
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C)
|
4
|
-
* Copyright (C) 2002-2004 Ruby-GNOME Project Team
|
3
|
+
* Copyright (C) 2002-2021 Ruby-GNOME Project Team
|
5
4
|
* Copyright (C) 2002-2003 Masahiro Sakai
|
6
|
-
* Copyright (C) 1998-2000
|
7
|
-
*
|
8
|
-
*
|
5
|
+
* Copyright (C) 1998-2000 Yukihiro Matsumoto,
|
6
|
+
* Daisuke Kanda,
|
7
|
+
* Hiroshi Igarashi
|
9
8
|
*
|
10
9
|
* This library is free software; you can redistribute it and/or
|
11
10
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -496,140 +495,146 @@ gobj_s_properties(int argc, VALUE* argv, VALUE self)
|
|
496
495
|
return ary;
|
497
496
|
}
|
498
497
|
|
499
|
-
static
|
500
|
-
static
|
498
|
+
static GHashTable *rbg_type_to_prop_setter_tables;
|
499
|
+
static GMutex rbg_type_to_prop_setter_tables_mutex;
|
500
|
+
static GHashTable *rbg_type_to_prop_getter_tables;
|
501
|
+
static GMutex rbg_type_to_prop_getter_tables_mutex;
|
501
502
|
|
502
|
-
void
|
503
|
-
|
503
|
+
static void
|
504
|
+
rbg_register_property_accessor(GHashTable *tables,
|
505
|
+
GMutex *mutex,
|
506
|
+
GType gtype,
|
507
|
+
const char *name,
|
508
|
+
gpointer accessor)
|
504
509
|
{
|
505
|
-
|
506
|
-
GParamSpec* pspec;
|
510
|
+
g_mutex_lock(mutex);
|
507
511
|
|
508
|
-
|
509
|
-
if (
|
510
|
-
table =
|
511
|
-
|
512
|
+
GHashTable *table = g_hash_table_lookup(tables, GUINT_TO_POINTER(gtype));
|
513
|
+
if (!table) {
|
514
|
+
table = g_hash_table_new(g_str_hash, g_str_equal);
|
515
|
+
g_hash_table_insert(tables, GUINT_TO_POINTER(gtype), table);
|
512
516
|
}
|
513
517
|
|
514
|
-
|
515
|
-
pspec = g_object_class_find_property(
|
516
|
-
|
517
|
-
|
518
|
-
|
518
|
+
GObjectClass *gclass = g_type_class_ref(gtype);
|
519
|
+
GParamSpec *pspec = g_object_class_find_property(gclass, name);
|
520
|
+
g_hash_table_insert(table,
|
521
|
+
(gchar *)g_param_spec_get_name(pspec),
|
522
|
+
accessor);
|
523
|
+
g_type_class_unref(gclass);
|
519
524
|
|
520
|
-
|
525
|
+
g_mutex_unlock(mutex);
|
521
526
|
}
|
522
527
|
|
523
|
-
|
524
|
-
|
528
|
+
static gpointer
|
529
|
+
rbg_get_property_accessor(GHashTable *tables,
|
530
|
+
GMutex *mutex,
|
531
|
+
GType gtype,
|
532
|
+
const char *name)
|
525
533
|
{
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
if (
|
531
|
-
|
532
|
-
|
534
|
+
g_mutex_lock(mutex);
|
535
|
+
|
536
|
+
gpointer accessor = NULL;
|
537
|
+
GHashTable *table = g_hash_table_lookup(tables, GUINT_TO_POINTER(gtype));
|
538
|
+
if (table) {
|
539
|
+
GObjectClass *gclass = g_type_class_ref(gtype);
|
540
|
+
GParamSpec *pspec = g_object_class_find_property(gclass, name);
|
541
|
+
accessor = g_hash_table_lookup(table, g_param_spec_get_name(pspec));
|
542
|
+
g_type_class_unref(gclass);
|
533
543
|
}
|
534
544
|
|
535
|
-
|
536
|
-
pspec = g_object_class_find_property(oclass, name);
|
545
|
+
g_mutex_unlock(mutex);
|
537
546
|
|
538
|
-
|
539
|
-
|
547
|
+
return accessor;
|
548
|
+
}
|
540
549
|
|
541
|
-
|
550
|
+
void
|
551
|
+
rbgobj_register_property_setter(GType gtype,
|
552
|
+
const char *name,
|
553
|
+
RValueToGValueFunc func)
|
554
|
+
{
|
555
|
+
rbg_register_property_accessor(rbg_type_to_prop_setter_tables,
|
556
|
+
&rbg_type_to_prop_setter_tables_mutex,
|
557
|
+
gtype,
|
558
|
+
name,
|
559
|
+
func);
|
560
|
+
}
|
561
|
+
|
562
|
+
void
|
563
|
+
rbgobj_register_property_getter(GType gtype, const char *name, GValueToRValueFunc func)
|
564
|
+
{
|
565
|
+
rbg_register_property_accessor(rbg_type_to_prop_getter_tables,
|
566
|
+
&rbg_type_to_prop_getter_tables_mutex,
|
567
|
+
gtype,
|
568
|
+
name,
|
569
|
+
func);
|
542
570
|
}
|
543
571
|
|
544
572
|
static VALUE
|
545
573
|
rg_set_property(VALUE self, VALUE prop_name, VALUE val)
|
546
574
|
{
|
547
|
-
GParamSpec* pspec;
|
548
575
|
const char* name;
|
549
|
-
|
550
576
|
if (SYMBOL_P(prop_name))
|
551
577
|
name = rb_id2name(SYM2ID(prop_name));
|
552
578
|
else
|
553
579
|
name = StringValuePtr(prop_name);
|
554
580
|
|
555
|
-
pspec =
|
556
|
-
|
557
|
-
|
581
|
+
GParamSpec* pspec =
|
582
|
+
g_object_class_find_property(G_OBJECT_GET_CLASS(RVAL2GOBJ(self)),
|
583
|
+
name);
|
558
584
|
if (!pspec)
|
559
585
|
rb_raise(eNoPropertyError, "No such property: %s", name);
|
560
|
-
else {
|
561
|
-
// FIXME: use rb_ensure to call g_value_unset()
|
562
|
-
RValueToGValueFunc setter = NULL;
|
563
|
-
GValue gval = G_VALUE_INIT;
|
564
586
|
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
}
|
581
|
-
|
582
|
-
g_object_set_property(RVAL2GOBJ(self), name, &gval);
|
583
|
-
g_value_unset(&gval);
|
587
|
+
RValueToGValueFunc setter =
|
588
|
+
rbg_get_property_accessor(rbg_type_to_prop_setter_tables,
|
589
|
+
&rbg_type_to_prop_setter_tables_mutex,
|
590
|
+
pspec->owner_type,
|
591
|
+
name);
|
592
|
+
// FIXME: use rb_ensure to call g_value_unset()
|
593
|
+
GValue gval = G_VALUE_INIT;
|
594
|
+
g_value_init(&gval, G_PARAM_SPEC_VALUE_TYPE(pspec));
|
595
|
+
if (setter) {
|
596
|
+
setter(val, &gval);
|
597
|
+
} else {
|
598
|
+
rbgobj_rvalue_to_gvalue(val, &gval);
|
599
|
+
}
|
600
|
+
g_object_set_property(RVAL2GOBJ(self), name, &gval);
|
601
|
+
g_value_unset(&gval);
|
584
602
|
|
585
|
-
|
603
|
+
G_CHILD_SET(self, rb_intern(name), val);
|
586
604
|
|
587
|
-
|
588
|
-
}
|
605
|
+
return self;
|
589
606
|
}
|
590
607
|
|
591
608
|
static VALUE
|
592
609
|
rg_get_property(VALUE self, VALUE prop_name)
|
593
610
|
{
|
594
|
-
GParamSpec* pspec;
|
595
611
|
const char* name;
|
596
|
-
|
597
612
|
if (SYMBOL_P(prop_name))
|
598
613
|
name = rb_id2name(SYM2ID(prop_name));
|
599
614
|
else
|
600
615
|
name = StringValuePtr(prop_name);
|
601
616
|
|
602
|
-
pspec =
|
603
|
-
|
604
|
-
|
617
|
+
GParamSpec *pspec =
|
618
|
+
g_object_class_find_property(G_OBJECT_GET_CLASS(RVAL2GOBJ(self)),
|
619
|
+
name);
|
605
620
|
if (!pspec)
|
606
621
|
rb_raise(eNoPropertyError, "No such property: %s", name);
|
607
|
-
else {
|
608
|
-
// FIXME: use rb_ensure to call g_value_unset()
|
609
|
-
GValueToRValueFunc getter = NULL;
|
610
|
-
GValue gval = G_VALUE_INIT;
|
611
|
-
VALUE ret;
|
612
|
-
|
613
|
-
{
|
614
|
-
VALUE table = rb_hash_aref(type_to_prop_getter_table,
|
615
|
-
INT2FIX(pspec->owner_type));
|
616
|
-
if (!NIL_P(table)){
|
617
|
-
VALUE obj = rb_hash_aref(table, CSTR2RVAL(g_param_spec_get_name(pspec)));
|
618
|
-
if (!NIL_P(obj))
|
619
|
-
Data_Get_Struct(obj, void, getter);
|
620
|
-
}
|
621
|
-
}
|
622
|
-
|
623
|
-
g_value_init(&gval, G_PARAM_SPEC_VALUE_TYPE(pspec));
|
624
|
-
g_object_get_property(RVAL2GOBJ(self), name, &gval);
|
625
622
|
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
623
|
+
GValueToRValueFunc getter =
|
624
|
+
rbg_get_property_accessor(rbg_type_to_prop_getter_tables,
|
625
|
+
&rbg_type_to_prop_getter_tables_mutex,
|
626
|
+
pspec->owner_type,
|
627
|
+
name);
|
628
|
+
// FIXME: use rb_ensure to call g_value_unset()
|
629
|
+
GValue gval = G_VALUE_INIT;
|
630
|
+
g_value_init(&gval, G_PARAM_SPEC_VALUE_TYPE(pspec));
|
631
|
+
g_object_get_property(RVAL2GOBJ(self), name, &gval);
|
632
|
+
VALUE ret = getter ? getter(&gval) : GVAL2RVAL(&gval);
|
633
|
+
g_value_unset(&gval);
|
634
|
+
|
635
|
+
G_CHILD_SET(self, rb_intern(name), ret);
|
636
|
+
|
637
|
+
return ret;
|
633
638
|
}
|
634
639
|
|
635
640
|
static VALUE rg_thaw_notify(VALUE self);
|
@@ -714,7 +719,6 @@ rg_type_name(VALUE self)
|
|
714
719
|
return CSTR2RVAL(G_OBJECT_TYPE_NAME(RVAL2GOBJ(self)));
|
715
720
|
}
|
716
721
|
|
717
|
-
#if GLIB_CHECK_VERSION(2, 26, 0)
|
718
722
|
typedef struct {
|
719
723
|
VALUE transform_from_callback;
|
720
724
|
VALUE transform_to_callback;
|
@@ -843,7 +847,6 @@ rg_bind_property(gint argc, VALUE *argv, VALUE self)
|
|
843
847
|
|
844
848
|
return rb_binding;
|
845
849
|
}
|
846
|
-
#endif
|
847
850
|
|
848
851
|
static VALUE
|
849
852
|
rg_initialize(int argc, VALUE *argv, VALUE self)
|
@@ -1090,18 +1093,24 @@ Init_gobject_gobject(void)
|
|
1090
1093
|
RG_DEF_METHOD(inspect, 0);
|
1091
1094
|
RG_DEF_METHOD(type_name, 0);
|
1092
1095
|
|
1093
|
-
#if GLIB_CHECK_VERSION(2, 26, 0)
|
1094
1096
|
RG_DEF_METHOD(bind_property, -1);
|
1095
1097
|
G_DEF_CLASS(G_TYPE_BINDING_FLAGS, "BindingFlags", mGLib);
|
1096
|
-
#endif
|
1097
1098
|
|
1098
1099
|
eNoPropertyError = rb_define_class_under(mGLib, "NoPropertyError",
|
1099
1100
|
rb_eNameError);
|
1100
1101
|
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1102
|
+
rbg_type_to_prop_setter_tables =
|
1103
|
+
g_hash_table_new_full(g_direct_hash,
|
1104
|
+
g_direct_equal,
|
1105
|
+
NULL,
|
1106
|
+
(GDestroyNotify)g_hash_table_unref);
|
1107
|
+
g_mutex_init(&rbg_type_to_prop_setter_tables_mutex);
|
1108
|
+
rbg_type_to_prop_getter_tables =
|
1109
|
+
g_hash_table_new_full(g_direct_hash,
|
1110
|
+
g_direct_equal,
|
1111
|
+
NULL,
|
1112
|
+
(GDestroyNotify)g_hash_table_unref);
|
1113
|
+
g_mutex_init(&rbg_type_to_prop_getter_tables_mutex);
|
1105
1114
|
|
1106
1115
|
/* subclass */
|
1107
1116
|
RG_DEF_SMETHOD(type_register, -1);
|
data/ext/glib2/rbgobj_param.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2011-
|
3
|
+
* Copyright (C) 2011-2021 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
|
@@ -276,7 +276,7 @@ rg_value_convert(int argc, VALUE* argv, VALUE self)
|
|
276
276
|
rb_scan_args(argc, argv, "21", &src, &src_type, &strict_validation);
|
277
277
|
|
278
278
|
/* FIXME: use rb_ensure to ensure following g_value_unset() call*/
|
279
|
-
g_value_init(&src_value,
|
279
|
+
g_value_init(&src_value, rbgobj_gtype_from_ruby(src_type));
|
280
280
|
g_value_init(&dest_value, G_PARAM_SPEC_VALUE_TYPE(pspec));
|
281
281
|
|
282
282
|
rbgobj_rvalue_to_gvalue(src, &src_value);
|
@@ -344,9 +344,7 @@ param_is_flag(G_PARAM_LAX_VALIDATION)
|
|
344
344
|
param_is_flag(G_PARAM_STATIC_NAME)
|
345
345
|
param_is_flag(G_PARAM_STATIC_NICK)
|
346
346
|
param_is_flag(G_PARAM_STATIC_BLURB)
|
347
|
-
#if GLIB_CHECK_VERSION(2, 42, 0)
|
348
347
|
param_is_flag(G_PARAM_EXPLICIT_NOTIFY)
|
349
|
-
#endif
|
350
348
|
param_is_flag(G_PARAM_DEPRECATED)
|
351
349
|
|
352
350
|
/**********************************************************************/
|
@@ -376,10 +374,8 @@ Init_gobject_gparam(void)
|
|
376
374
|
INT2FIX(G_PARAM_STATIC_NICK));
|
377
375
|
rb_define_const(RG_TARGET_NAMESPACE, "STATIC_BLURB",
|
378
376
|
INT2FIX(G_PARAM_STATIC_BLURB));
|
379
|
-
#if GLIB_CHECK_VERSION(2, 42, 0)
|
380
377
|
rb_define_const(RG_TARGET_NAMESPACE, "EXPLICIT_NOTIFY",
|
381
378
|
INT2FIX(G_PARAM_EXPLICIT_NOTIFY));
|
382
|
-
#endif
|
383
379
|
rb_define_const(RG_TARGET_NAMESPACE, "DEPRECATED",
|
384
380
|
INT2FIX(G_PARAM_DEPRECATED));
|
385
381
|
rb_define_const(RG_TARGET_NAMESPACE, "MASK",
|
@@ -432,10 +428,8 @@ Init_gobject_gparam(void)
|
|
432
428
|
param_is_G_PARAM_STATIC_NICK, 0);
|
433
429
|
rbg_define_method(RG_TARGET_NAMESPACE, "static_blurb?",
|
434
430
|
param_is_G_PARAM_STATIC_BLURB, 0);
|
435
|
-
#if GLIB_CHECK_VERSION(2, 42, 0)
|
436
431
|
rbg_define_method(RG_TARGET_NAMESPACE, "explicit_notify?",
|
437
432
|
param_is_G_PARAM_EXPLICIT_NOTIFY, 0);
|
438
|
-
#endif
|
439
433
|
rbg_define_method(RG_TARGET_NAMESPACE, "deprecated?",
|
440
434
|
param_is_G_PARAM_DEPRECATED, 0);
|
441
435
|
}
|