glib2 3.5.1 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/glib2/extconf.rb +4 -3
- data/ext/glib2/glib2.def +4 -0
- data/ext/glib2/rbglib-bytes.c +1 -1
- data/ext/glib2/rbglib-gc.c +1 -1
- data/ext/glib2/rbglib-variant-type.c +1 -1
- data/ext/glib2/rbglib-variant.c +75 -2
- data/ext/glib2/rbglib.c +25 -59
- data/ext/glib2/rbglib.h +16 -3
- data/ext/glib2/rbglib_bookmarkfile.c +3 -2
- data/ext/glib2/rbglib_convert.c +2 -2
- data/ext/glib2/rbglib_datetime.c +14 -3
- data/ext/glib2/rbglib_error.c +2 -2
- data/ext/glib2/rbglib_fileutils.c +2 -2
- data/ext/glib2/rbglib_gettext.c +1 -1
- data/ext/glib2/rbglib_i18n.c +2 -2
- data/ext/glib2/rbglib_io_constants.c +1 -1
- data/ext/glib2/rbglib_iochannel.c +2 -2
- data/ext/glib2/rbglib_iochannel_win32_socket.c +2 -2
- data/ext/glib2/rbglib_iochannelerror.c +1 -1
- data/ext/glib2/rbglib_keyfile.c +2 -2
- data/ext/glib2/rbglib_maincontext.c +6 -6
- data/ext/glib2/rbglib_mainloop.c +1 -1
- data/ext/glib2/rbglib_matchinfo.c +1 -1
- data/ext/glib2/rbglib_messages.c +1 -1
- data/ext/glib2/rbglib_pollfd.c +1 -1
- data/ext/glib2/rbglib_regex.c +3 -3
- data/ext/glib2/rbglib_shell.c +1 -1
- data/ext/glib2/rbglib_shellerror.c +1 -1
- data/ext/glib2/rbglib_source.c +1 -1
- data/ext/glib2/rbglib_spawn.c +1 -1
- data/ext/glib2/rbglib_spawnerror.c +1 -1
- data/ext/glib2/rbglib_threads.c +1 -1
- data/ext/glib2/rbglib_timer.c +1 -1
- data/ext/glib2/rbglib_timezone.c +1 -1
- data/ext/glib2/rbglib_ucs4.c +1 -1
- data/ext/glib2/rbglib_unichar.c +1 -1
- data/ext/glib2/rbglib_unicode.c +3 -3
- data/ext/glib2/rbglib_utf16.c +1 -1
- data/ext/glib2/rbglib_utf8.c +1 -1
- data/ext/glib2/rbglib_utils.c +1 -1
- data/ext/glib2/rbglib_win32.c +3 -3
- data/ext/glib2/rbgobj_binding.c +1 -1
- data/ext/glib2/rbgobj_boxed.c +1 -1
- data/ext/glib2/rbgobj_closure.c +54 -84
- data/ext/glib2/rbgobj_enums.c +1 -1
- data/ext/glib2/rbgobj_flags.c +1 -1
- data/ext/glib2/rbgobj_object.c +32 -5
- data/ext/glib2/rbgobj_param.c +1 -1
- data/ext/glib2/rbgobj_signal.c +36 -18
- data/ext/glib2/rbgobj_type.c +2 -2
- data/ext/glib2/rbgobj_typeinstance.c +1 -1
- data/ext/glib2/rbgobj_typeinterface.c +4 -4
- data/ext/glib2/rbgobj_typemodule.c +1 -1
- data/ext/glib2/rbgobj_typeplugin.c +1 -1
- data/ext/glib2/rbgobj_value.c +1 -1
- data/ext/glib2/rbgobj_valuetypes.c +14 -4
- data/ext/glib2/rbgobject.c +7 -21
- data/ext/glib2/rbgobject.h +1 -0
- data/ext/glib2/rbgprivate.h +7 -4
- data/ext/glib2/rbgutil.c +20 -1
- data/ext/glib2/rbgutil.h +3 -0
- data/ext/glib2/rbgutil_callback.c +7 -7
- data/lib/glib2/date-time.rb +35 -0
- data/lib/glib2/variant.rb +25 -0
- data/lib/glib2.rb +6 -1
- data/lib/mkmf-gnome.rb +2 -2
- data/test/test-date-time.rb +14 -2
- data/test/test-glib2.rb +21 -9
- data/test/test-variant.rb +44 -1
- metadata +7 -7
- data/ext/glib2/glib-enum-types.c +0 -1233
- data/ext/glib2/glib-enum-types.h +0 -154
data/ext/glib2/rbglib_spawn.c
CHANGED
@@ -217,7 +217,7 @@ rg_s_close_pid(G_GNUC_UNUSED VALUE self, VALUE pid)
|
|
217
217
|
void
|
218
218
|
Init_glib_spawn(void)
|
219
219
|
{
|
220
|
-
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(
|
220
|
+
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(rbg_mGLib(), "Spawn");
|
221
221
|
|
222
222
|
id_call = rb_intern("call");
|
223
223
|
id_new = rb_intern("new");
|
@@ -28,7 +28,7 @@
|
|
28
28
|
void
|
29
29
|
Init_glib_spawnerror(void)
|
30
30
|
{
|
31
|
-
VALUE RG_TARGET_NAMESPACE = G_DEF_ERROR2(G_SPAWN_ERROR, "SpawnError",
|
31
|
+
VALUE RG_TARGET_NAMESPACE = G_DEF_ERROR2(G_SPAWN_ERROR, "SpawnError", rbg_mGLib(), rb_eIOError);
|
32
32
|
|
33
33
|
rb_define_const(RG_TARGET_NAMESPACE, "FORK", INT2NUM(G_SPAWN_ERROR_FORK));
|
34
34
|
rb_define_const(RG_TARGET_NAMESPACE, "READ", INT2NUM(G_SPAWN_ERROR_READ));
|
data/ext/glib2/rbglib_threads.c
CHANGED
@@ -41,7 +41,7 @@ rg_s_supported_p(G_GNUC_UNUSED VALUE self)
|
|
41
41
|
void
|
42
42
|
Init_glib_threads(void)
|
43
43
|
{
|
44
|
-
RG_TARGET_NAMESPACE = rb_define_class_under(
|
44
|
+
RG_TARGET_NAMESPACE = rb_define_class_under(rbg_mGLib(), "Thread", rb_cObject);
|
45
45
|
|
46
46
|
RG_DEF_SMETHOD(init, 0);
|
47
47
|
RG_DEF_SMETHOD_P(supported, 0);
|
data/ext/glib2/rbglib_timer.c
CHANGED
@@ -116,7 +116,7 @@ rg_reset(VALUE self)
|
|
116
116
|
void
|
117
117
|
Init_glib_timer(void)
|
118
118
|
{
|
119
|
-
VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_TIMER, "Timer",
|
119
|
+
VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_TIMER, "Timer", rbg_mGLib());
|
120
120
|
|
121
121
|
RG_DEF_METHOD(initialize, 0);
|
122
122
|
RG_DEF_METHOD(start, 0);
|
data/ext/glib2/rbglib_timezone.c
CHANGED
@@ -73,7 +73,7 @@ void
|
|
73
73
|
Init_glib_time_zone(void)
|
74
74
|
{
|
75
75
|
VALUE RG_TARGET_NAMESPACE;
|
76
|
-
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_TIME_ZONE, "TimeZone",
|
76
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_TIME_ZONE, "TimeZone", rbg_mGLib());
|
77
77
|
RG_DEF_METHOD(initialize, -1);
|
78
78
|
RG_DEF_SMETHOD(local, 0);
|
79
79
|
RG_DEF_SMETHOD(utc, 0);
|
data/ext/glib2/rbglib_ucs4.c
CHANGED
@@ -72,7 +72,7 @@ rg_s_to_utf8(G_GNUC_UNUSED VALUE self, VALUE rb_ucs4)
|
|
72
72
|
void
|
73
73
|
Init_glib_ucs4(void)
|
74
74
|
{
|
75
|
-
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(
|
75
|
+
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(rbg_mGLib(), "UCS4");
|
76
76
|
|
77
77
|
RG_DEF_SMETHOD(to_utf16, 1);
|
78
78
|
RG_DEF_SMETHOD(to_utf8, 1);
|
data/ext/glib2/rbglib_unichar.c
CHANGED
@@ -185,7 +185,7 @@ rg_s_decompose(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self)
|
|
185
185
|
void
|
186
186
|
Init_glib_unichar(void)
|
187
187
|
{
|
188
|
-
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(
|
188
|
+
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(rbg_mGLib(), "UniChar");
|
189
189
|
|
190
190
|
rbg_define_singleton_method(RG_TARGET_NAMESPACE, "alnum?",
|
191
191
|
rbglib_m_unichar_isalnum, 1);
|
data/ext/glib2/rbglib_unicode.c
CHANGED
@@ -52,7 +52,7 @@ rg_s_canonical_ordering(G_GNUC_UNUSED VALUE self, VALUE rb_ucs4)
|
|
52
52
|
void
|
53
53
|
Init_glib_unicode(void)
|
54
54
|
{
|
55
|
-
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(
|
55
|
+
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(rbg_mGLib(), "Unicode");
|
56
56
|
|
57
57
|
/* GUnicodeType */
|
58
58
|
G_DEF_CLASS(G_TYPE_UNICODE_TYPE, "Type", RG_TARGET_NAMESPACE);
|
@@ -65,9 +65,9 @@ Init_glib_unicode(void)
|
|
65
65
|
G_DEF_CLASS(G_TYPE_UNICODE_SCRIPT, "Script", RG_TARGET_NAMESPACE);
|
66
66
|
G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_UNICODE_SCRIPT, "G_UNICODE_");
|
67
67
|
|
68
|
-
G_DEF_CLASS(G_TYPE_NORMALIZE_MODE, "NormalizeMode",
|
68
|
+
G_DEF_CLASS(G_TYPE_NORMALIZE_MODE, "NormalizeMode", rbg_mGLib());
|
69
69
|
|
70
|
-
rbg_define_singleton_method(
|
70
|
+
rbg_define_singleton_method(rbg_mGLib(), "charset", rbglib_m_charset, 0);
|
71
71
|
|
72
72
|
RG_DEF_SMETHOD(canonical_ordering, 1);
|
73
73
|
}
|
data/ext/glib2/rbglib_utf16.c
CHANGED
@@ -71,7 +71,7 @@ rg_s_to_utf8(G_GNUC_UNUSED VALUE self, VALUE rb_utf16)
|
|
71
71
|
void
|
72
72
|
Init_glib_utf16(void)
|
73
73
|
{
|
74
|
-
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(
|
74
|
+
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(rbg_mGLib(), "UTF16");
|
75
75
|
|
76
76
|
RG_DEF_SMETHOD(to_ucs4, 1);
|
77
77
|
RG_DEF_SMETHOD(to_utf8, 1);
|
data/ext/glib2/rbglib_utf8.c
CHANGED
@@ -218,7 +218,7 @@ rg_s_to_ucs4(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self)
|
|
218
218
|
void
|
219
219
|
Init_glib_utf8(void)
|
220
220
|
{
|
221
|
-
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(
|
221
|
+
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(rbg_mGLib(), "UTF8");
|
222
222
|
|
223
223
|
/*
|
224
224
|
Not implemented.
|
data/ext/glib2/rbglib_utils.c
CHANGED
data/ext/glib2/rbglib_win32.c
CHANGED
@@ -90,17 +90,17 @@ Init_glib_win32(void)
|
|
90
90
|
{
|
91
91
|
#ifdef G_OS_WIN32
|
92
92
|
/* glib/gwin32.h */
|
93
|
-
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(
|
93
|
+
VALUE RG_TARGET_NAMESPACE = rb_define_module_under(rbg_mGLib(), "Win32");
|
94
94
|
|
95
95
|
RG_DEF_SMETHOD(error_message, 1);
|
96
96
|
RG_DEF_SMETHOD(locale, 0);
|
97
97
|
RG_DEF_SMETHOD(version, 0);
|
98
98
|
/* Deprecated */
|
99
|
-
rbg_define_singleton_method(
|
99
|
+
rbg_define_singleton_method(rbg_mGLib(), "win32_locale", rbglib_m_win32_locale_deprecated, 0);
|
100
100
|
|
101
101
|
RG_DEF_SMETHOD(locale_filename_from_utf8, 1);
|
102
102
|
/* Deprecated */
|
103
|
-
rbg_define_singleton_method(
|
103
|
+
rbg_define_singleton_method(rbg_mGLib(), "win32_locale_filename_from_utf8",
|
104
104
|
rbglib_m_win32_locale_filename_from_utf8_deprecated, 1);
|
105
105
|
|
106
106
|
RG_DEF_SMETHOD(get_package_installation_directory_of_module, -1);
|
data/ext/glib2/rbgobj_binding.c
CHANGED
data/ext/glib2/rbgobj_boxed.c
CHANGED
@@ -302,7 +302,7 @@ boxed_from_ruby(VALUE from, GValue *to)
|
|
302
302
|
void
|
303
303
|
Init_gobject_gboxed(void)
|
304
304
|
{
|
305
|
-
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_BOXED, "Boxed",
|
305
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_BOXED, "Boxed", rbg_mGLib());
|
306
306
|
|
307
307
|
rbgobj_register_g2r_func(G_TYPE_BOXED, boxed_to_ruby);
|
308
308
|
rbgobj_register_r2g_func(G_TYPE_BOXED, boxed_from_ruby);
|
data/ext/glib2/rbgobj_closure.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2002-
|
3
|
+
* Copyright (C) 2002-2022 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
|
@@ -34,7 +34,6 @@ struct _GRClosure
|
|
34
34
|
VALUE callback;
|
35
35
|
VALUE extra_args;
|
36
36
|
VALUE rb_holder;
|
37
|
-
gint count;
|
38
37
|
GList *objects;
|
39
38
|
GValToRValSignalFunc g2r_func;
|
40
39
|
RGClosureCallFunc call_func;
|
@@ -64,7 +63,7 @@ struct marshal_arg
|
|
64
63
|
static int
|
65
64
|
rclosure_alive_p(GRClosure *rclosure)
|
66
65
|
{
|
67
|
-
return
|
66
|
+
return !NIL_P(rclosure->rb_holder);
|
68
67
|
}
|
69
68
|
|
70
69
|
static VALUE
|
@@ -121,8 +120,8 @@ rclosure_marshal_do(VALUE arg_)
|
|
121
120
|
|
122
121
|
ret = rb_apply(callback, id_call, args);
|
123
122
|
} else {
|
124
|
-
|
125
|
-
|
123
|
+
g_warning("GRClosure invoking callback: already destroyed: %s",
|
124
|
+
rclosure->tag[0] ? rclosure->tag : "(anonymous)");
|
126
125
|
}
|
127
126
|
|
128
127
|
if (return_value && G_VALUE_TYPE(return_value))
|
@@ -159,43 +158,25 @@ rclosure_marshal(GClosure* closure,
|
|
159
158
|
static void rclosure_weak_notify(gpointer data, GObject* where_the_object_was);
|
160
159
|
|
161
160
|
static void
|
162
|
-
|
161
|
+
rclosure_finalize(G_GNUC_UNUSED gpointer data, GClosure *closure)
|
163
162
|
{
|
164
|
-
rclosure
|
163
|
+
GRClosure *rclosure = (GRClosure *)closure;
|
165
164
|
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
rclosure->objects = NULL;
|
174
|
-
if (!NIL_P(rclosure->rb_holder)) {
|
175
|
-
RTYPEDDATA_DATA(rclosure->rb_holder) = NULL;
|
176
|
-
rclosure->rb_holder = Qnil;
|
165
|
+
GList *next;
|
166
|
+
for (next = rclosure->objects; next; next = next->next) {
|
167
|
+
GObject *object = G_OBJECT(next->data);
|
168
|
+
g_object_weak_unref(object, rclosure_weak_notify, rclosure);
|
169
|
+
VALUE obj = rbgobj_ruby_object_from_instance2(object, FALSE);
|
170
|
+
if (!NIL_P(rclosure->rb_holder) && !NIL_P(obj)) {
|
171
|
+
rbgobj_object_remove_relative(obj, rclosure->rb_holder);
|
177
172
|
}
|
178
173
|
}
|
179
|
-
|
180
|
-
|
181
|
-
static void
|
182
|
-
rclosure_invalidate(G_GNUC_UNUSED gpointer data, GClosure *closure)
|
183
|
-
{
|
184
|
-
GRClosure *rclosure = (GRClosure*)closure;
|
185
|
-
|
186
|
-
if (rclosure->count > 0) {
|
187
|
-
GList *next;
|
188
|
-
|
189
|
-
rclosure->count = 1;
|
190
|
-
for (next = rclosure->objects; next; next = next->next) {
|
191
|
-
GObject *object = G_OBJECT(next->data);
|
192
|
-
VALUE obj = rbgobj_ruby_object_from_instance2(object, FALSE);
|
193
|
-
if (!NIL_P(rclosure->rb_holder) && !NIL_P(obj)) {
|
194
|
-
rbgobj_object_remove_relative(obj, rclosure->rb_holder);
|
195
|
-
}
|
196
|
-
}
|
174
|
+
g_list_free(rclosure->objects);
|
175
|
+
rclosure->objects = NULL;
|
197
176
|
|
198
|
-
|
177
|
+
if (!NIL_P(rclosure->rb_holder)) {
|
178
|
+
RTYPEDDATA_DATA(rclosure->rb_holder) = NULL;
|
179
|
+
rclosure->rb_holder = Qnil;
|
199
180
|
}
|
200
181
|
}
|
201
182
|
|
@@ -219,13 +200,7 @@ gr_closure_holder_free(void *data)
|
|
219
200
|
if (!rclosure)
|
220
201
|
return;
|
221
202
|
|
222
|
-
|
223
|
-
rclosure->count = 1;
|
224
|
-
|
225
|
-
/* No need to remove us from the relatives hash of our objects, as
|
226
|
-
* those aren't alive anymore anyway */
|
227
|
-
rclosure_unref(rclosure);
|
228
|
-
}
|
203
|
+
g_closure_unref((GClosure *)rclosure);
|
229
204
|
}
|
230
205
|
|
231
206
|
static const rb_data_type_t rbg_closure_holder_type = {
|
@@ -245,26 +220,24 @@ g_rclosure_new_raw(VALUE callback_proc,
|
|
245
220
|
GValToRValSignalFunc g2r_func,
|
246
221
|
RGClosureCallFunc call_func)
|
247
222
|
{
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
return (GClosure*)closure;
|
223
|
+
GClosure *closure = g_closure_new_simple(sizeof(GRClosure), NULL);
|
224
|
+
|
225
|
+
GRClosure *rclosure = (GRClosure *)closure;
|
226
|
+
|
227
|
+
rclosure->g2r_func = g2r_func;
|
228
|
+
rclosure->call_func = call_func;
|
229
|
+
rclosure->objects = NULL;
|
230
|
+
rclosure->callback = callback_proc;
|
231
|
+
rclosure->extra_args = extra_args;
|
232
|
+
rclosure->rb_holder = TypedData_Wrap_Struct(rb_cObject,
|
233
|
+
&rbg_closure_holder_type,
|
234
|
+
rclosure);
|
235
|
+
rclosure->tag[0] = '\0';
|
236
|
+
|
237
|
+
g_closure_set_marshal(closure, &rclosure_marshal);
|
238
|
+
g_closure_add_finalize_notifier(closure, NULL, rclosure_finalize);
|
239
|
+
|
240
|
+
return closure;
|
268
241
|
}
|
269
242
|
|
270
243
|
GClosure *
|
@@ -287,34 +260,30 @@ g_rclosure_new_call(VALUE callback_proc,
|
|
287
260
|
}
|
288
261
|
|
289
262
|
static void
|
290
|
-
rclosure_weak_notify(gpointer data, GObject*
|
263
|
+
rclosure_weak_notify(gpointer data, GObject *where_the_object_was)
|
291
264
|
{
|
292
265
|
GRClosure *rclosure = data;
|
293
|
-
|
294
|
-
|
295
|
-
g_list_remove(rclosure->objects, where_the_object_was);
|
296
|
-
rclosure_unref(rclosure);
|
297
|
-
}
|
266
|
+
rclosure->objects = g_list_remove(rclosure->objects, where_the_object_was);
|
267
|
+
g_closure_unref((GClosure *)rclosure);
|
298
268
|
}
|
299
269
|
|
300
270
|
void
|
301
271
|
g_rclosure_attach(GClosure *closure, VALUE object)
|
302
272
|
{
|
303
|
-
static VALUE cGLibObject = Qnil;
|
304
273
|
GRClosure *rclosure = (GRClosure *)closure;
|
305
|
-
|
306
274
|
rbgobj_add_relative(object, rclosure->rb_holder);
|
275
|
+
}
|
307
276
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
277
|
+
void
|
278
|
+
g_rclosure_attach_gobject(GClosure *closure, VALUE object)
|
279
|
+
{
|
280
|
+
GRClosure *rclosure = (GRClosure *)closure;
|
281
|
+
g_rclosure_attach(closure, object);
|
282
|
+
|
283
|
+
GObject *gobject = RVAL2GOBJ(object);
|
284
|
+
g_closure_ref(closure);
|
285
|
+
g_object_weak_ref(gobject, rclosure_weak_notify, rclosure);
|
286
|
+
rclosure->objects = g_list_prepend(rclosure->objects, gobject);
|
318
287
|
}
|
319
288
|
|
320
289
|
void
|
@@ -350,8 +319,9 @@ init_rclosure(void)
|
|
350
319
|
static VALUE
|
351
320
|
rg_initialize(VALUE self)
|
352
321
|
{
|
353
|
-
GClosure*
|
322
|
+
GClosure *closure = g_rclosure_new(rb_block_proc(), Qnil, NULL);
|
354
323
|
G_INITIALIZE(self, closure);
|
324
|
+
g_closure_ref(closure);
|
355
325
|
g_closure_sink(closure);
|
356
326
|
return self;
|
357
327
|
}
|
@@ -387,7 +357,7 @@ Init_gobject_gclosure(void)
|
|
387
357
|
|
388
358
|
init_rclosure();
|
389
359
|
|
390
|
-
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_CLOSURE, "Closure",
|
360
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_CLOSURE, "Closure", rbg_mGLib());
|
391
361
|
|
392
362
|
RG_DEF_METHOD(initialize, 0);
|
393
363
|
RG_DEF_METHOD_P(in_marshal, 0);
|
data/ext/glib2/rbgobj_enums.c
CHANGED
@@ -413,7 +413,7 @@ Init_gobject_genums(void)
|
|
413
413
|
id_to_s = rb_intern("to_s");
|
414
414
|
id_values = rb_intern("values");
|
415
415
|
|
416
|
-
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_ENUM, "Enum",
|
416
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_ENUM, "Enum", rbg_mGLib());
|
417
417
|
|
418
418
|
rbg_define_singleton_method(RG_TARGET_NAMESPACE, "gtype", generic_s_gtype, 0);
|
419
419
|
rbg_define_method(RG_TARGET_NAMESPACE, "gtype", generic_gtype, 0);
|
data/ext/glib2/rbgobj_flags.c
CHANGED
@@ -542,7 +542,7 @@ Init_gobject_gflags(void)
|
|
542
542
|
id_or = rb_intern("|");
|
543
543
|
id_to_i = rb_intern("to_i");
|
544
544
|
|
545
|
-
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_FLAGS, "Flags",
|
545
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_FLAGS, "Flags", rbg_mGLib());
|
546
546
|
|
547
547
|
rbg_define_singleton_method(RG_TARGET_NAMESPACE, "gtype", generic_s_gtype, 0);
|
548
548
|
rbg_define_method(RG_TARGET_NAMESPACE, "gtype", generic_gtype, 0);
|
data/ext/glib2/rbgobj_object.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2002-
|
3
|
+
* Copyright (C) 2002-2022 Ruby-GNOME Project Team
|
4
4
|
* Copyright (C) 2002-2003 Masahiro Sakai
|
5
5
|
* Copyright (C) 1998-2000 Yukihiro Matsumoto,
|
6
6
|
* Daisuke Kanda,
|
@@ -30,6 +30,12 @@ VALUE RG_TARGET_NAMESPACE;
|
|
30
30
|
static VALUE eNoPropertyError;
|
31
31
|
static GQuark RUBY_GOBJECT_OBJ_KEY;
|
32
32
|
|
33
|
+
VALUE
|
34
|
+
rbg_cGLibObject(void)
|
35
|
+
{
|
36
|
+
return RG_TARGET_NAMESPACE;
|
37
|
+
}
|
38
|
+
|
33
39
|
gboolean
|
34
40
|
rbg_is_object(VALUE object)
|
35
41
|
{
|
@@ -311,6 +317,12 @@ rg_s_new_bang(int argc, VALUE *argv, VALUE self)
|
|
311
317
|
return result;
|
312
318
|
}
|
313
319
|
|
320
|
+
static VALUE
|
321
|
+
rg_s_init(int argc, VALUE *argv, VALUE self)
|
322
|
+
{
|
323
|
+
return RUBY_Qnil;
|
324
|
+
}
|
325
|
+
|
314
326
|
struct param_setup_arg {
|
315
327
|
GObjectClass* gclass;
|
316
328
|
GParameter* params;
|
@@ -872,6 +884,15 @@ rg_initialize(int argc, VALUE *argv, VALUE self)
|
|
872
884
|
gobj = rbgobj_gobject_new(RVAL2GTYPE(self), params_hash);
|
873
885
|
|
874
886
|
G_INITIALIZE(self, gobj);
|
887
|
+
|
888
|
+
rb_funcall(self, rb_intern("initialize_post"), 0);
|
889
|
+
|
890
|
+
return Qnil;
|
891
|
+
}
|
892
|
+
|
893
|
+
static VALUE
|
894
|
+
rg_initialize_post(VALUE self)
|
895
|
+
{
|
875
896
|
return Qnil;
|
876
897
|
}
|
877
898
|
|
@@ -956,6 +977,9 @@ rbgobj_class_init_func(gpointer g_class, G_GNUC_UNUSED gpointer class_data)
|
|
956
977
|
|
957
978
|
g_object_class->set_property = set_prop_func;
|
958
979
|
g_object_class->get_property = get_prop_func;
|
980
|
+
|
981
|
+
VALUE rb_class = GTYPE2CLASS(G_TYPE_FROM_CLASS(g_class));
|
982
|
+
rb_funcall(rb_class, rb_intern("init"), 0);
|
959
983
|
}
|
960
984
|
|
961
985
|
void
|
@@ -1062,11 +1086,11 @@ rg_s_type_register(int argc, VALUE *argv, VALUE self)
|
|
1062
1086
|
void
|
1063
1087
|
Init_gobject_gobject(void)
|
1064
1088
|
{
|
1065
|
-
RG_TARGET_NAMESPACE = G_DEF_CLASS_WITH_GC_FUNC(G_TYPE_OBJECT, "Object",
|
1089
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS_WITH_GC_FUNC(G_TYPE_OBJECT, "Object", rbg_mGLib(),
|
1066
1090
|
gobj_mark, NULL);
|
1067
1091
|
|
1068
1092
|
#ifdef G_TYPE_INITIALLY_UNOWNED
|
1069
|
-
G_DEF_CLASS(G_TYPE_INITIALLY_UNOWNED, "InitiallyUnowned",
|
1093
|
+
G_DEF_CLASS(G_TYPE_INITIALLY_UNOWNED, "InitiallyUnowned", rbg_mGLib());
|
1070
1094
|
#endif
|
1071
1095
|
|
1072
1096
|
RUBY_GOBJECT_OBJ_KEY = g_quark_from_static_string("__ruby_gobject_object__");
|
@@ -1074,6 +1098,8 @@ Init_gobject_gobject(void)
|
|
1074
1098
|
rb_define_alloc_func(RG_TARGET_NAMESPACE, rbgobj_object_alloc_func);
|
1075
1099
|
RG_DEF_SMETHOD_BANG(new, -1);
|
1076
1100
|
|
1101
|
+
RG_DEF_SMETHOD(init, 0);
|
1102
|
+
|
1077
1103
|
rbg_define_singleton_method(RG_TARGET_NAMESPACE, "property", &gobj_s_property, 1);
|
1078
1104
|
rbg_define_singleton_method(RG_TARGET_NAMESPACE, "properties", &gobj_s_properties, -1);
|
1079
1105
|
RG_DEF_SMETHOD(install_property, -1);
|
@@ -1089,6 +1115,7 @@ Init_gobject_gobject(void)
|
|
1089
1115
|
RG_DEF_METHOD_P(destroyed, 0);
|
1090
1116
|
|
1091
1117
|
RG_DEF_METHOD(initialize, -1);
|
1118
|
+
RG_DEF_PRIVATE_METHOD(initialize_post, 0);
|
1092
1119
|
rbg_define_method(RG_TARGET_NAMESPACE, "ref_count", gobj_ref_count, 0); /* for debugging */
|
1093
1120
|
RG_DEF_METHOD_P(floating, 0); /* for debugging */
|
1094
1121
|
RG_DEF_METHOD(unref, 0);
|
@@ -1096,9 +1123,9 @@ Init_gobject_gobject(void)
|
|
1096
1123
|
RG_DEF_METHOD(type_name, 0);
|
1097
1124
|
|
1098
1125
|
RG_DEF_METHOD(bind_property, -1);
|
1099
|
-
G_DEF_CLASS(G_TYPE_BINDING_FLAGS, "BindingFlags",
|
1126
|
+
G_DEF_CLASS(G_TYPE_BINDING_FLAGS, "BindingFlags", rbg_mGLib());
|
1100
1127
|
|
1101
|
-
eNoPropertyError = rb_define_class_under(
|
1128
|
+
eNoPropertyError = rb_define_class_under(rbg_mGLib(), "NoPropertyError",
|
1102
1129
|
rb_eNameError);
|
1103
1130
|
|
1104
1131
|
rbg_type_to_prop_setter_tables =
|
data/ext/glib2/rbgobj_param.c
CHANGED
@@ -353,7 +353,7 @@ void
|
|
353
353
|
Init_gobject_gparam(void)
|
354
354
|
{
|
355
355
|
qparamspec = g_quark_from_static_string("__ruby_gobject_param_spec__");
|
356
|
-
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_PARAM, "Param",
|
356
|
+
RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_PARAM, "Param", rbg_mGLib());
|
357
357
|
|
358
358
|
/* GParamFlags */
|
359
359
|
rb_define_const(RG_TARGET_NAMESPACE, "READABLE",
|
data/ext/glib2/rbgobj_signal.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2002-
|
3
|
+
* Copyright (C) 2002-2022 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
|
@@ -39,20 +39,28 @@ static const rb_data_type_t rg_glib_signal_type = {
|
|
39
39
|
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE,
|
40
40
|
};
|
41
41
|
|
42
|
-
VALUE
|
43
|
-
|
42
|
+
static VALUE
|
43
|
+
rbgobj_signal_alloc_func(VALUE klass)
|
44
44
|
{
|
45
|
-
VALUE rb_query;
|
46
45
|
GSignalQuery *query;
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
query);
|
52
|
-
g_signal_query(id, query);
|
46
|
+
VALUE rb_query = TypedData_Make_Struct(RG_TARGET_NAMESPACE,
|
47
|
+
GSignalQuery,
|
48
|
+
&rg_glib_signal_type,
|
49
|
+
query);
|
53
50
|
return rb_query;
|
54
51
|
}
|
55
52
|
|
53
|
+
VALUE
|
54
|
+
rbgobj_signal_new(guint id)
|
55
|
+
{
|
56
|
+
ID id_new;
|
57
|
+
CONST_ID(id_new, "new");
|
58
|
+
return rb_funcall(RG_TARGET_NAMESPACE,
|
59
|
+
id_new,
|
60
|
+
1,
|
61
|
+
UINT2NUM(id));
|
62
|
+
}
|
63
|
+
|
56
64
|
static GSignalQuery *
|
57
65
|
rbgobj_signal_get_raw(VALUE rb_signal)
|
58
66
|
{
|
@@ -398,15 +406,16 @@ gobj_sig_connect_impl(gboolean after, int argc, VALUE *argv, VALUE self)
|
|
398
406
|
rbgobj_get_signal_func(signal_id));
|
399
407
|
}
|
400
408
|
}
|
401
|
-
|
409
|
+
g_rclosure_attach_gobject(rclosure, self);
|
402
410
|
g_object = RVAL2GOBJ(self);
|
403
411
|
tag = g_strdup_printf("%s::%s",
|
404
412
|
G_OBJECT_CLASS_NAME(G_OBJECT_GET_CLASS(g_object)),
|
405
413
|
sig_name);
|
406
|
-
g_rclosure_set_tag(
|
414
|
+
g_rclosure_set_tag(rclosure, tag);
|
407
415
|
g_free(tag);
|
408
416
|
handler_id = g_signal_connect_closure_by_id(g_object, signal_id, detail,
|
409
417
|
rclosure, after);
|
418
|
+
g_closure_unref(rclosure);
|
410
419
|
|
411
420
|
return ULONG2NUM(handler_id);
|
412
421
|
}
|
@@ -725,7 +734,7 @@ gobj_s_signal_handler_attach(VALUE klass,
|
|
725
734
|
Qnil,
|
726
735
|
rbgobj_get_signal_func(signal_id));
|
727
736
|
g_rclosure_set_tag(rclosure, handler_name);
|
728
|
-
g_rclosure_attach(
|
737
|
+
g_rclosure_attach(rclosure, klass);
|
729
738
|
g_signal_override_class_closure(signal_id, cinfo->gtype, rclosure);
|
730
739
|
|
731
740
|
{
|
@@ -745,6 +754,13 @@ rbgobj_signal_wrap(guint sig_id)
|
|
745
754
|
return rbgobj_signal_new(sig_id);
|
746
755
|
}
|
747
756
|
|
757
|
+
static VALUE
|
758
|
+
rg_initialize(VALUE self, VALUE id)
|
759
|
+
{
|
760
|
+
g_signal_query(NUM2UINT(id), rbgobj_signal_get_raw(self));
|
761
|
+
return RUBY_Qnil;
|
762
|
+
}
|
763
|
+
|
748
764
|
static VALUE
|
749
765
|
rg_id(VALUE self)
|
750
766
|
{
|
@@ -957,8 +973,10 @@ Init_gobject_gsignal(void)
|
|
957
973
|
{
|
958
974
|
VALUE cSignalFlags, cSignalMatchType;
|
959
975
|
|
960
|
-
RG_TARGET_NAMESPACE = rb_define_class_under(
|
976
|
+
RG_TARGET_NAMESPACE = rb_define_class_under(rbg_mGLib(), "Signal", rb_cObject);
|
977
|
+
rb_define_alloc_func(RG_TARGET_NAMESPACE, rbgobj_signal_alloc_func);
|
961
978
|
|
979
|
+
RG_DEF_METHOD(initialize, 1);
|
962
980
|
RG_DEF_METHOD(id, 0);
|
963
981
|
RG_DEF_METHOD(name, 0);
|
964
982
|
RG_DEF_METHOD(flags, 0);
|
@@ -972,7 +990,7 @@ Init_gobject_gsignal(void)
|
|
972
990
|
RG_DEF_METHOD(remove_emission_hook, 1);
|
973
991
|
|
974
992
|
/* GSignalFlags */
|
975
|
-
cSignalFlags = G_DEF_CLASS(G_TYPE_SIGNAL_FLAGS, "SignalFlags",
|
993
|
+
cSignalFlags = G_DEF_CLASS(G_TYPE_SIGNAL_FLAGS, "SignalFlags", rbg_mGLib());
|
976
994
|
G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_SIGNAL_FLAGS, "G_SIGNAL_");
|
977
995
|
rb_define_const(cSignalFlags, "MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
|
978
996
|
rb_define_const(RG_TARGET_NAMESPACE, "FLAGS_MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
|
@@ -986,19 +1004,19 @@ Init_gobject_gsignal(void)
|
|
986
1004
|
rbg_define_method(RG_TARGET_NAMESPACE, "no_hooks?", query_is_G_SIGNAL_NO_HOOKS, 0);
|
987
1005
|
|
988
1006
|
/* GConnectFlags */
|
989
|
-
G_DEF_CLASS(G_TYPE_CONNECT_FLAGS, "ConnectFlags",
|
1007
|
+
G_DEF_CLASS(G_TYPE_CONNECT_FLAGS, "ConnectFlags", rbg_mGLib());
|
990
1008
|
G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_CONNECT_FLAGS, "G_");
|
991
1009
|
|
992
1010
|
/* GSignalMatchType */
|
993
1011
|
cSignalMatchType = G_DEF_CLASS(G_TYPE_SIGNAL_MATCH_TYPE,
|
994
|
-
"SignalMatchType",
|
1012
|
+
"SignalMatchType", rbg_mGLib());
|
995
1013
|
G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_SIGNAL_MATCH_TYPE, "G_SIGNAL_");
|
996
1014
|
rb_define_const(cSignalMatchType, "MASK", INT2NUM(G_SIGNAL_MATCH_MASK));
|
997
1015
|
rb_define_const(RG_TARGET_NAMESPACE, "MATCH_MASK", INT2NUM(G_SIGNAL_MATCH_MASK));
|
998
1016
|
|
999
1017
|
rb_define_const(RG_TARGET_NAMESPACE, "TYPE_STATIC_SCOPE", INT2FIX(G_SIGNAL_TYPE_STATIC_SCOPE));
|
1000
1018
|
|
1001
|
-
eNoSignalError = rb_define_class_under(
|
1019
|
+
eNoSignalError = rb_define_class_under(rbg_mGLib(), "NoSignalError", rb_eNameError);
|
1002
1020
|
|
1003
1021
|
rbg_signal_func_table = g_hash_table_new(g_direct_hash, g_direct_equal);
|
1004
1022
|
g_mutex_init(&rbg_signal_func_table_mutex);
|
data/ext/glib2/rbgobj_type.c
CHANGED
@@ -993,12 +993,12 @@ Init_gobject_gtype(void)
|
|
993
993
|
id_lock = rb_intern("lock");
|
994
994
|
id_unlock = rb_intern("unlock");
|
995
995
|
lookup_class_mutex = rb_funcall(rb_cMutex, id_new, 0);
|
996
|
-
rb_iv_set(
|
996
|
+
rb_iv_set(rbg_mGLib(), "lookup_class_mutex", lookup_class_mutex);
|
997
997
|
|
998
998
|
dynamic_gtype_list = g_hash_table_new(g_str_hash, g_str_equal);
|
999
999
|
id_gtype = rb_intern("__gobject_gtype__");
|
1000
1000
|
|
1001
|
-
RG_TARGET_NAMESPACE = rb_define_class_under(
|
1001
|
+
RG_TARGET_NAMESPACE = rb_define_class_under(rbg_mGLib(), "Type", rb_cObject);
|
1002
1002
|
|
1003
1003
|
RG_DEF_SMETHOD(try_convert, 1);
|
1004
1004
|
|