glib2 3.4.3 → 3.4.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/ext/glib2/extconf.rb +1 -5
- data/ext/glib2/glib-enum-types.c +1233 -0
- data/ext/glib2/glib-enum-types.h +154 -0
- data/ext/glib2/glib2.def +1 -0
- 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 +12 -2
- data/ext/glib2/rbglib_bookmarkfile.c +1 -1
- data/ext/glib2/rbglib_datetime.c +1 -5
- data/ext/glib2/rbglib_error.c +21 -2
- 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_messages.c +4 -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 +116 -105
- data/ext/glib2/rbgobj_param.c +2 -8
- data/ext/glib2/rbgobj_paramspecs.c +6 -24
- data/ext/glib2/rbgobj_signal.c +104 -92
- data/ext/glib2/rbgobj_strv.c +2 -2
- data/ext/glib2/rbgobj_type.c +57 -67
- data/ext/glib2/rbgobj_typeinterface.c +38 -2
- 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.rb +32 -3
- data/lib/glib2/deprecated.rb +22 -1
- data/lib/mkmf-gnome.rb +4 -4
- 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/{glib-test-init.rb → test-error.rb} +25 -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 +6 -5
- data/ext/glib2/rbgobj_valuearray.c +0 -100
@@ -0,0 +1,154 @@
|
|
1
|
+
|
2
|
+
/* Generated by glib-mkenums.rb ($Id$) */
|
3
|
+
|
4
|
+
#ifndef __GLIB_ENUM_TYPES_H__
|
5
|
+
#define __GLIB_ENUM_TYPES_H__
|
6
|
+
|
7
|
+
#include <glib-object.h>
|
8
|
+
|
9
|
+
G_BEGIN_DECLS
|
10
|
+
|
11
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gvariant.h" */
|
12
|
+
GType g_variant_class_get_type (void);
|
13
|
+
#define G_TYPE_VARIANT_CLASS (g_variant_class_get_type())
|
14
|
+
GType g_variant_parse_error_get_type (void);
|
15
|
+
#define G_TYPE_VARIANT_PARSE_ERROR (g_variant_parse_error_get_type())
|
16
|
+
|
17
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gspawn.h" */
|
18
|
+
GType g_spawn_error_get_type (void);
|
19
|
+
#define G_TYPE_SPAWN_ERROR (g_spawn_error_get_type())
|
20
|
+
GType g_spawn_flags_get_type (void);
|
21
|
+
#define G_TYPE_SPAWN_FLAGS (g_spawn_flags_get_type())
|
22
|
+
|
23
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gkeyfile.h" */
|
24
|
+
GType g_key_file_error_get_type (void);
|
25
|
+
#define G_TYPE_KEY_FILE_ERROR (g_key_file_error_get_type())
|
26
|
+
GType g_key_file_flags_get_type (void);
|
27
|
+
#define G_TYPE_KEY_FILE_FLAGS (g_key_file_flags_get_type())
|
28
|
+
|
29
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gnode.h" */
|
30
|
+
GType g_traverse_flags_get_type (void);
|
31
|
+
#define G_TYPE_TRAVERSE_FLAGS (g_traverse_flags_get_type())
|
32
|
+
GType g_traverse_type_get_type (void);
|
33
|
+
#define G_TYPE_TRAVERSE_TYPE (g_traverse_type_get_type())
|
34
|
+
|
35
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gshell.h" */
|
36
|
+
GType g_shell_error_get_type (void);
|
37
|
+
#define G_TYPE_SHELL_ERROR (g_shell_error_get_type())
|
38
|
+
|
39
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gslice.h" */
|
40
|
+
GType g_slice_config_get_type (void);
|
41
|
+
#define G_TYPE_SLICE_CONFIG (g_slice_config_get_type())
|
42
|
+
|
43
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gregex.h" */
|
44
|
+
GType g_regex_error_get_type (void);
|
45
|
+
#define G_TYPE_REGEX_ERROR (g_regex_error_get_type())
|
46
|
+
GType g_regex_compile_flags_get_type (void);
|
47
|
+
#define G_TYPE_REGEX_COMPILE_FLAGS (g_regex_compile_flags_get_type())
|
48
|
+
GType g_regex_match_flags_get_type (void);
|
49
|
+
#define G_TYPE_REGEX_MATCH_FLAGS (g_regex_match_flags_get_type())
|
50
|
+
|
51
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gmarkup.h" */
|
52
|
+
GType g_markup_error_get_type (void);
|
53
|
+
#define G_TYPE_MARKUP_ERROR (g_markup_error_get_type())
|
54
|
+
GType g_markup_parse_flags_get_type (void);
|
55
|
+
#define G_TYPE_MARKUP_PARSE_FLAGS (g_markup_parse_flags_get_type())
|
56
|
+
GType g_markup_collect_type_get_type (void);
|
57
|
+
#define G_TYPE_MARKUP_COLLECT_TYPE (g_markup_collect_type_get_type())
|
58
|
+
|
59
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gtestutils.h" */
|
60
|
+
GType g_test_trap_flags_get_type (void);
|
61
|
+
#define G_TYPE_TEST_TRAP_FLAGS (g_test_trap_flags_get_type())
|
62
|
+
GType g_test_subprocess_flags_get_type (void);
|
63
|
+
#define G_TYPE_TEST_SUBPROCESS_FLAGS (g_test_subprocess_flags_get_type())
|
64
|
+
GType g_test_log_type_get_type (void);
|
65
|
+
#define G_TYPE_TEST_LOG_TYPE (g_test_log_type_get_type())
|
66
|
+
GType g_test_file_type_get_type (void);
|
67
|
+
#define G_TYPE_TEST_FILE_TYPE (g_test_file_type_get_type())
|
68
|
+
|
69
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gfileutils.h" */
|
70
|
+
GType g_file_error_get_type (void);
|
71
|
+
#define G_TYPE_FILE_ERROR (g_file_error_get_type())
|
72
|
+
GType g_file_test_get_type (void);
|
73
|
+
#define G_TYPE_FILE_TEST (g_file_test_get_type())
|
74
|
+
|
75
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gtimezone.h" */
|
76
|
+
GType g_time_type_get_type (void);
|
77
|
+
#define G_TYPE_TIME_TYPE (g_time_type_get_type())
|
78
|
+
|
79
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gdate.h" */
|
80
|
+
GType g_date_dm_y_get_type (void);
|
81
|
+
#define G_TYPE_DATE_DM_Y (g_date_dm_y_get_type())
|
82
|
+
GType g_date_weekday_get_type (void);
|
83
|
+
#define G_TYPE_DATE_WEEKDAY (g_date_weekday_get_type())
|
84
|
+
GType g_date_month_get_type (void);
|
85
|
+
#define G_TYPE_DATE_MONTH (g_date_month_get_type())
|
86
|
+
|
87
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gunicode.h" */
|
88
|
+
GType g_unicode_type_get_type (void);
|
89
|
+
#define G_TYPE_UNICODE_TYPE (g_unicode_type_get_type())
|
90
|
+
GType g_unicode_break_type_get_type (void);
|
91
|
+
#define G_TYPE_UNICODE_BREAK_TYPE (g_unicode_break_type_get_type())
|
92
|
+
GType g_unicode_script_get_type (void);
|
93
|
+
#define G_TYPE_UNICODE_SCRIPT (g_unicode_script_get_type())
|
94
|
+
GType g_normalize_mode_get_type (void);
|
95
|
+
#define G_TYPE_NORMALIZE_MODE (g_normalize_mode_get_type())
|
96
|
+
|
97
|
+
/* enumerations from "/usr/include/glib-2.0/glib/ghook.h" */
|
98
|
+
GType g_hook_flag_mask_get_type (void);
|
99
|
+
#define G_TYPE_HOOK_FLAG_MASK (g_hook_flag_mask_get_type())
|
100
|
+
|
101
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gthread.h" */
|
102
|
+
GType g_thread_error_get_type (void);
|
103
|
+
#define G_TYPE_THREAD_ERROR (g_thread_error_get_type())
|
104
|
+
GType g_once_status_get_type (void);
|
105
|
+
#define G_TYPE_ONCE_STATUS (g_once_status_get_type())
|
106
|
+
|
107
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gstrfuncs.h" */
|
108
|
+
GType g_ascii_type_get_type (void);
|
109
|
+
#define G_TYPE_ASCII_TYPE (g_ascii_type_get_type())
|
110
|
+
|
111
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gmessages.h" */
|
112
|
+
GType g_log_level_flags_get_type (void);
|
113
|
+
#define G_TYPE_LOG_LEVEL_FLAGS (g_log_level_flags_get_type())
|
114
|
+
|
115
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gchecksum.h" */
|
116
|
+
GType g_checksum_type_get_type (void);
|
117
|
+
#define G_TYPE_CHECKSUM_TYPE (g_checksum_type_get_type())
|
118
|
+
|
119
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gutils.h" */
|
120
|
+
GType g_user_directory_get_type (void);
|
121
|
+
#define G_TYPE_USER_DIRECTORY (g_user_directory_get_type())
|
122
|
+
GType g_format_size_flags_get_type (void);
|
123
|
+
#define G_TYPE_FORMAT_SIZE_FLAGS (g_format_size_flags_get_type())
|
124
|
+
|
125
|
+
/* enumerations from "/usr/include/glib-2.0/glib/goption.h" */
|
126
|
+
GType g_option_flags_get_type (void);
|
127
|
+
#define G_TYPE_OPTION_FLAGS (g_option_flags_get_type())
|
128
|
+
GType g_option_arg_get_type (void);
|
129
|
+
#define G_TYPE_OPTION_ARG (g_option_arg_get_type())
|
130
|
+
GType g_option_error_get_type (void);
|
131
|
+
#define G_TYPE_OPTION_ERROR (g_option_error_get_type())
|
132
|
+
|
133
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gconvert.h" */
|
134
|
+
GType g_convert_error_get_type (void);
|
135
|
+
#define G_TYPE_CONVERT_ERROR (g_convert_error_get_type())
|
136
|
+
|
137
|
+
/* enumerations from "/usr/include/glib-2.0/glib/gbookmarkfile.h" */
|
138
|
+
GType g_bookmark_file_error_get_type (void);
|
139
|
+
#define G_TYPE_BOOKMARK_FILE_ERROR (g_bookmark_file_error_get_type())
|
140
|
+
|
141
|
+
/* enumerations from "/usr/include/glib-2.0/gobject/gsignal.h" */
|
142
|
+
GType g_signal_flags_get_type (void);
|
143
|
+
#define G_TYPE_SIGNAL_FLAGS (g_signal_flags_get_type())
|
144
|
+
GType g_connect_flags_get_type (void);
|
145
|
+
#define G_TYPE_CONNECT_FLAGS (g_connect_flags_get_type())
|
146
|
+
GType g_signal_match_type_get_type (void);
|
147
|
+
#define G_TYPE_SIGNAL_MATCH_TYPE (g_signal_match_type_get_type())
|
148
|
+
|
149
|
+
G_END_DECLS
|
150
|
+
|
151
|
+
#endif /* __GLIB_ENUM_TYPES_H__ */
|
152
|
+
|
153
|
+
/* Generated data ends here */
|
154
|
+
|
data/ext/glib2/glib2.def
CHANGED
data/ext/glib2/rbglib-bytes.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2017-
|
3
|
+
* Copyright (C) 2017-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
|
@@ -32,7 +32,6 @@ rbg_is_bytes(VALUE object)
|
|
32
32
|
return RVAL2CBOOL(rb_obj_is_kind_of(object, RG_TARGET_NAMESPACE));
|
33
33
|
}
|
34
34
|
|
35
|
-
#if GLIB_CHECK_VERSION(2, 32, 0)
|
36
35
|
static VALUE RG_TARGET_NAMESPACE;
|
37
36
|
|
38
37
|
static VALUE
|
@@ -119,12 +118,10 @@ rg_pointer(VALUE self)
|
|
119
118
|
|
120
119
|
return ULONG2NUM((guintptr)data);
|
121
120
|
}
|
122
|
-
#endif
|
123
121
|
|
124
122
|
void
|
125
123
|
Init_glib_bytes(void)
|
126
124
|
{
|
127
|
-
#if GLIB_CHECK_VERSION(2, 32, 0)
|
128
125
|
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_BYTES, "Bytes", mGLib);
|
129
126
|
|
130
127
|
RG_DEF_SMETHOD(try_convert, 1);
|
@@ -135,5 +132,4 @@ Init_glib_bytes(void)
|
|
135
132
|
RG_DEF_METHOD(size, 0);
|
136
133
|
RG_DEF_ALIAS("length", "size");
|
137
134
|
RG_DEF_METHOD(pointer, 0);
|
138
|
-
#endif
|
139
135
|
}
|
data/ext/glib2/rbglib-gc.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2018-
|
3
|
+
* Copyright (C) 2018-2020 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
|
@@ -20,32 +20,45 @@
|
|
20
20
|
|
21
21
|
#include "rbgprivate.h"
|
22
22
|
|
23
|
-
|
23
|
+
typedef struct {
|
24
|
+
VALUE object;
|
25
|
+
guint ref_count;
|
26
|
+
} RBGGCMarkItem;
|
27
|
+
|
28
|
+
typedef struct {
|
29
|
+
GHashTable *items;
|
30
|
+
GMutex mutex;
|
31
|
+
} RBGGCMarker;
|
32
|
+
|
33
|
+
static RBGGCMarker *rbg_gc_marker_raw = NULL;
|
24
34
|
|
25
35
|
static void
|
26
36
|
gc_marker_mark_each(G_GNUC_UNUSED gpointer key,
|
27
37
|
gpointer value,
|
28
38
|
G_GNUC_UNUSED gpointer user_data)
|
29
39
|
{
|
30
|
-
|
31
|
-
rb_gc_mark(
|
40
|
+
RBGGCMarkItem *item = value;
|
41
|
+
rb_gc_mark(item->object);
|
32
42
|
}
|
33
43
|
|
34
44
|
static void
|
35
45
|
gc_marker_mark(void *data)
|
36
46
|
{
|
37
|
-
|
38
|
-
|
47
|
+
RBGGCMarker *marker = data;
|
48
|
+
g_mutex_lock(&(marker->mutex));
|
49
|
+
g_hash_table_foreach(marker->items, gc_marker_mark_each, NULL);
|
50
|
+
g_mutex_unlock(&(marker->mutex));
|
39
51
|
}
|
40
52
|
|
41
53
|
static void
|
42
54
|
gc_marker_free(void *data)
|
43
55
|
{
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
rbg_objects = NULL;
|
56
|
+
RBGGCMarker *marker_raw = data;
|
57
|
+
if (marker_raw == rbg_gc_marker_raw) {
|
58
|
+
rbg_gc_marker_raw = NULL;
|
48
59
|
}
|
60
|
+
g_hash_table_unref(marker_raw->items);
|
61
|
+
g_free(marker_raw);
|
49
62
|
}
|
50
63
|
|
51
64
|
static const rb_data_type_t rbg_gc_marker_type = {
|
@@ -59,95 +72,128 @@ static const rb_data_type_t rbg_gc_marker_type = {
|
|
59
72
|
RUBY_TYPED_FREE_IMMEDIATELY,
|
60
73
|
};
|
61
74
|
|
62
|
-
|
63
|
-
|
75
|
+
static VALUE
|
76
|
+
rbg_gc_marker_new_raw(void)
|
64
77
|
{
|
65
|
-
|
66
|
-
|
78
|
+
RBGGCMarker *gc_marker_raw = g_new(RBGGCMarker, 1);
|
79
|
+
gc_marker_raw->items = g_hash_table_new_full(g_direct_hash,
|
80
|
+
g_direct_equal,
|
81
|
+
NULL,
|
82
|
+
g_free);
|
83
|
+
g_mutex_init(&(gc_marker_raw->mutex));
|
84
|
+
|
85
|
+
return TypedData_Wrap_Struct(rb_cObject,
|
86
|
+
&rbg_gc_marker_type,
|
87
|
+
gc_marker_raw);
|
88
|
+
}
|
89
|
+
|
90
|
+
static void
|
91
|
+
rbg_gc_guard_raw(RBGGCMarker *gc_marker, gpointer key, VALUE rb_object)
|
92
|
+
{
|
93
|
+
g_mutex_lock(&(gc_marker->mutex));
|
94
|
+
RBGGCMarkItem *item = g_hash_table_lookup(gc_marker->items, key);
|
95
|
+
if (item) {
|
96
|
+
item->ref_count++;
|
97
|
+
} else {
|
98
|
+
item = g_new(RBGGCMarkItem, 1);
|
99
|
+
item->object = rb_object;
|
100
|
+
item->ref_count = 1;
|
101
|
+
g_hash_table_insert(gc_marker->items, key, item);
|
102
|
+
}
|
103
|
+
g_mutex_unlock(&(gc_marker->mutex));
|
104
|
+
}
|
67
105
|
|
68
|
-
|
69
|
-
|
70
|
-
|
106
|
+
static void
|
107
|
+
rbg_gc_unguard_raw(RBGGCMarker *gc_marker, gpointer key)
|
108
|
+
{
|
109
|
+
g_mutex_lock(&(gc_marker->mutex));
|
110
|
+
RBGGCMarkItem *item = g_hash_table_lookup(gc_marker->items, key);
|
111
|
+
if (item) {
|
112
|
+
item->ref_count--;
|
113
|
+
if (item->ref_count == 0) {
|
114
|
+
g_hash_table_remove(gc_marker->items, key);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
g_mutex_unlock(&(gc_marker->mutex));
|
118
|
+
}
|
119
|
+
|
120
|
+
static void
|
121
|
+
rbg_gc_unguard_all_raw(RBGGCMarker *gc_marker)
|
122
|
+
{
|
123
|
+
g_mutex_lock(&(gc_marker->mutex));
|
124
|
+
g_hash_table_remove_all(gc_marker->items);
|
125
|
+
g_mutex_unlock(&(gc_marker->mutex));
|
71
126
|
}
|
72
127
|
|
73
128
|
void
|
74
|
-
|
129
|
+
rbg_gc_guard(gpointer key, VALUE rb_object)
|
75
130
|
{
|
76
|
-
if (!
|
131
|
+
if (!rbg_gc_marker_raw)
|
77
132
|
return;
|
78
133
|
|
79
|
-
|
134
|
+
rbg_gc_guard_raw(rbg_gc_marker_raw, key, rb_object);
|
80
135
|
}
|
81
136
|
|
82
|
-
|
83
|
-
|
137
|
+
void
|
138
|
+
rbg_gc_unguard(gpointer key)
|
84
139
|
{
|
85
|
-
|
140
|
+
if (!rbg_gc_marker_raw)
|
141
|
+
return;
|
86
142
|
|
87
|
-
|
88
|
-
&rbg_gc_marker_type,
|
89
|
-
rb_objects);
|
90
|
-
return gc_marker;
|
143
|
+
rbg_gc_unguard_raw(rbg_gc_marker_raw, key);
|
91
144
|
}
|
92
145
|
|
93
146
|
VALUE
|
94
147
|
rbg_gc_marker_new(void)
|
95
148
|
{
|
96
|
-
|
97
|
-
|
98
|
-
rb_objects = g_hash_table_new(g_direct_hash, g_direct_equal);
|
99
|
-
return rbg_gc_marker_new_raw(rb_objects);
|
149
|
+
return rbg_gc_marker_new_raw();
|
100
150
|
}
|
101
151
|
|
102
152
|
void
|
103
153
|
rbg_gc_marker_guard(VALUE rb_gc_marker, VALUE rb_object)
|
104
154
|
{
|
105
|
-
|
106
|
-
|
155
|
+
RBGGCMarker *gc_marker;
|
107
156
|
TypedData_Get_Struct(rb_gc_marker,
|
108
|
-
|
157
|
+
RBGGCMarker,
|
109
158
|
&rbg_gc_marker_type,
|
110
|
-
|
111
|
-
|
112
|
-
(gpointer)rb_object,
|
113
|
-
(gpointer)rb_object);
|
159
|
+
gc_marker);
|
160
|
+
rbg_gc_guard_raw(gc_marker, RVAL2POINTER(rb_object), rb_object);
|
114
161
|
}
|
115
162
|
|
116
163
|
void
|
117
164
|
rbg_gc_marker_unguard(VALUE rb_gc_marker, VALUE rb_object)
|
118
165
|
{
|
119
|
-
GHashTable *rb_objects;
|
120
|
-
|
121
166
|
if (!RB_TYPE_P(rb_gc_marker, RUBY_T_DATA))
|
122
167
|
return;
|
123
168
|
if (!RTYPEDDATA_P(rb_gc_marker))
|
124
169
|
return;
|
125
170
|
|
171
|
+
RBGGCMarker *gc_marker;
|
126
172
|
TypedData_Get_Struct(rb_gc_marker,
|
127
|
-
|
173
|
+
RBGGCMarker,
|
128
174
|
&rbg_gc_marker_type,
|
129
|
-
|
130
|
-
|
175
|
+
gc_marker);
|
176
|
+
rbg_gc_unguard_raw(gc_marker, RVAL2POINTER(rb_object));
|
131
177
|
}
|
132
178
|
|
133
179
|
void
|
134
180
|
rbg_gc_marker_unguard_all(VALUE rb_gc_marker)
|
135
181
|
{
|
136
|
-
|
137
|
-
|
182
|
+
RBGGCMarker *gc_marker;
|
138
183
|
TypedData_Get_Struct(rb_gc_marker,
|
139
|
-
|
184
|
+
RBGGCMarker,
|
140
185
|
&rbg_gc_marker_type,
|
141
|
-
|
142
|
-
|
186
|
+
gc_marker);
|
187
|
+
rbg_gc_unguard_all_raw(gc_marker);
|
143
188
|
}
|
144
189
|
|
145
190
|
void
|
146
191
|
Init_glib_gc(void)
|
147
192
|
{
|
148
|
-
VALUE gc_marker;
|
149
|
-
|
150
|
-
rbg_objects = g_hash_table_new(g_direct_hash, g_direct_equal);
|
151
|
-
gc_marker = rbg_gc_marker_new_raw(rbg_objects);
|
193
|
+
VALUE gc_marker = rbg_gc_marker_new_raw();
|
152
194
|
rb_ivar_set(mGLib, rb_intern("gc_marker"), gc_marker);
|
195
|
+
TypedData_Get_Struct(gc_marker,
|
196
|
+
RBGGCMarker,
|
197
|
+
&rbg_gc_marker_type,
|
198
|
+
rbg_gc_marker_raw);
|
153
199
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2015-
|
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
|
@@ -303,14 +303,10 @@ Init_glib_variant_type(void)
|
|
303
303
|
DEF_TYPE(DICT_ENTRY);
|
304
304
|
DEF_TYPE(DICTIONARY);
|
305
305
|
DEF_TYPE(STRING_ARRAY);
|
306
|
-
# if GLIB_CHECK_VERSION(2, 30, 0)
|
307
306
|
DEF_TYPE(OBJECT_PATH_ARRAY);
|
308
|
-
# endif
|
309
307
|
DEF_TYPE(BYTESTRING);
|
310
308
|
DEF_TYPE(BYTESTRING_ARRAY);
|
311
|
-
# if GLIB_CHECK_VERSION(2, 30, 0)
|
312
309
|
DEF_TYPE(VARDICT);
|
313
|
-
# endif
|
314
310
|
|
315
311
|
#undef DEF_TYPE
|
316
312
|
}
|