glib2 3.3.0 → 3.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +2 -186
- data/ext/glib2/rbgcompat.h +1 -8
- data/ext/glib2/rbglib-gc.c +70 -5
- data/ext/glib2/rbglib.h +1 -1
- data/ext/glib2/rbglib_maincontext.c +28 -41
- data/ext/glib2/rbgobject.c +20 -15
- data/ext/glib2/rbgobject.h +5 -12
- data/ext/glib2/rbgprivate.h +8 -4
- data/ext/glib2/rbgutil.h +4 -11
- data/lib/glib2.rb +4 -16
- data/lib/glib2/deprecated.rb +23 -0
- data/lib/glib2/version.rb +0 -1
- data/lib/mkmf-gnome2.rb +10 -27
- data/sample/keyfile.rb +3 -5
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef469f628bed077a10e35ecb3522c274fe83d980616c75efd2730bcfef0d0c29
|
4
|
+
data.tar.gz: 20cadc5036763bb2c79d3acb439dda77a645088725ed30578a3fcbd1fade69b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4546a38b2fa84f5d0b361d731501bd808243d8536764aeea6d93526b446895099a576950b8c7384e69c57b56af4da07088ac78ade8f1c9b48b64c30603d1de5f
|
7
|
+
data.tar.gz: 8cb1ed8bce4fb173ac04ac38e9746e3099cf746ce86d7b7ec583dd601e4c74310a9d452f161e1b85a810561481100ebe386a9ef3e5aa7430440b36c32fda98cc
|
data/Rakefile
CHANGED
@@ -17,194 +17,10 @@
|
|
17
17
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
18
18
|
|
19
19
|
$LOAD_PATH.unshift("./lib")
|
20
|
-
require
|
21
|
-
|
22
|
-
bin_dir = nil
|
23
|
-
include_dir = nil
|
24
|
-
glib2_include_dir = nil
|
25
|
-
libffi_lib_dir = nil
|
26
|
-
|
27
|
-
build_host = nil
|
20
|
+
require "gnome2/rake/package-task"
|
28
21
|
|
29
22
|
package_name = File.basename(__dir__)
|
30
23
|
spec = Gem::Specification.load("#{package_name}.gemspec")
|
31
24
|
|
32
|
-
|
33
|
-
bin_dir = (package.windows.absolute_binary_dir + "bin").to_s
|
34
|
-
include_dir = (package.windows.absolute_binary_dir + "include").to_s
|
35
|
-
glib2_include_dir = File.join(include_dir, "glib-2.0")
|
36
|
-
libffi_lib_dir = (package.windows.absolute_binary_dir + "lib").to_s
|
37
|
-
|
38
|
-
build_host = package.windows.build_host
|
39
|
-
|
40
|
-
package.description = "Ruby/GLib2 is a Ruby binding of GLib-2.x."
|
41
|
-
package.windows.packages = []
|
42
|
-
package.windows.dependencies = []
|
43
|
-
package.external_packages = [
|
44
|
-
{
|
45
|
-
:name => "libiconv",
|
46
|
-
:download_site => :gnu,
|
47
|
-
:label => "libiconv",
|
48
|
-
:version => "1.15",
|
49
|
-
:windows => {
|
50
|
-
:built_file => "bin/libiconv-2.dll",
|
51
|
-
},
|
52
|
-
},
|
53
|
-
{
|
54
|
-
:name => "gettext",
|
55
|
-
:download_site => :gnu,
|
56
|
-
:label => "gettext-runtime",
|
57
|
-
:version => "0.19.8.1",
|
58
|
-
:base_dir_in_package => "gettext-runtime",
|
59
|
-
:windows => {
|
60
|
-
:built_file => "bin/libintl-8.dll",
|
61
|
-
},
|
62
|
-
},
|
63
|
-
{
|
64
|
-
:name => "libffi",
|
65
|
-
:download_base_url => "ftp://sourceware.org/pub/libffi",
|
66
|
-
:label => "libffi",
|
67
|
-
:version => "3.2.1",
|
68
|
-
:windows => {
|
69
|
-
:built_file => "bin/libffi-6.dll",
|
70
|
-
},
|
71
|
-
},
|
72
|
-
{
|
73
|
-
:name => "pcre",
|
74
|
-
:download_base_url => "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre",
|
75
|
-
:label => "PCRE",
|
76
|
-
:version => "8.40",
|
77
|
-
:windows => {
|
78
|
-
:configure_args => [
|
79
|
-
"--enable-unicode-properties",
|
80
|
-
],
|
81
|
-
:built_file => "bin/libpcre-1.dll",
|
82
|
-
},
|
83
|
-
},
|
84
|
-
{
|
85
|
-
:name => "glib",
|
86
|
-
:download_site => :gnome,
|
87
|
-
:label => "GLib",
|
88
|
-
:version => "2.58.1",
|
89
|
-
:compression_method => "xz",
|
90
|
-
:windows => {
|
91
|
-
:built_file => "bin/libglib-2.0-0.dll",
|
92
|
-
},
|
93
|
-
},
|
94
|
-
{
|
95
|
-
:name => "gmp",
|
96
|
-
:download_site => :gnu,
|
97
|
-
:label => "GNU MP",
|
98
|
-
:version => "6.1.2",
|
99
|
-
:compression_method => "xz",
|
100
|
-
:windows => {
|
101
|
-
:configure_args => [
|
102
|
-
"--disable-static",
|
103
|
-
"--enable-shared",
|
104
|
-
],
|
105
|
-
:built_file => "bin/libgmp-10.dll",
|
106
|
-
},
|
107
|
-
},
|
108
|
-
{
|
109
|
-
:name => "nettle",
|
110
|
-
:download_base_url => "http://www.lysator.liu.se/~nisse/archive",
|
111
|
-
:label => "Nettle",
|
112
|
-
:version => "3.2",
|
113
|
-
:windows => {
|
114
|
-
:configure_args => [],
|
115
|
-
:built_file => "bin/libnettle-6-2.dll",
|
116
|
-
},
|
117
|
-
},
|
118
|
-
{
|
119
|
-
:name => "libtasn1",
|
120
|
-
:download_site => :gnu,
|
121
|
-
:label => "Libtasn1",
|
122
|
-
:version => "4.13",
|
123
|
-
:windows => {
|
124
|
-
:built_file => "bin/libtasn1-6.dll",
|
125
|
-
},
|
126
|
-
},
|
127
|
-
{
|
128
|
-
:name => "libidn2",
|
129
|
-
:download_site => :gnu,
|
130
|
-
:download_name => "libidn",
|
131
|
-
:label => "Libidn2",
|
132
|
-
:version => "2.0.5",
|
133
|
-
:windows => {
|
134
|
-
:built_file => "bin/libidn2-0.dll",
|
135
|
-
},
|
136
|
-
},
|
137
|
-
{
|
138
|
-
:name => "p11-glue/p11-kit",
|
139
|
-
:download_site => :github,
|
140
|
-
:label => "p11-kit",
|
141
|
-
:version => "0.23.14",
|
142
|
-
:windows => {
|
143
|
-
:built_file => "bin/libp11-kit-0.dll",
|
144
|
-
},
|
145
|
-
},
|
146
|
-
{
|
147
|
-
:name => "gnutls",
|
148
|
-
:download_base_url => "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.4",
|
149
|
-
:label => "GnuTLS",
|
150
|
-
:version => "3.4.10",
|
151
|
-
:compression_method => "xz",
|
152
|
-
:windows => {
|
153
|
-
:configure_args => [
|
154
|
-
"--disable-cxx",
|
155
|
-
"--disable-tools",
|
156
|
-
"--disable-doc",
|
157
|
-
],
|
158
|
-
:use_cc_environment_variable => false,
|
159
|
-
:patches => [
|
160
|
-
],
|
161
|
-
:built_file => "bin/libgnutls-30.dll",
|
162
|
-
},
|
163
|
-
},
|
164
|
-
{
|
165
|
-
:name => "glib-networking",
|
166
|
-
:download_site => :gnome,
|
167
|
-
:label => "glib-networking",
|
168
|
-
:version => "2.58.0",
|
169
|
-
:compression_method => "xz",
|
170
|
-
:windows => {
|
171
|
-
:meson_args => [
|
172
|
-
"-Dlibproxy_support=false",
|
173
|
-
"-Dgnome_proxy_support=false",
|
174
|
-
],
|
175
|
-
:built_file => "lib/gio/modules/libgiognutls.dll",
|
176
|
-
},
|
177
|
-
},
|
178
|
-
]
|
179
|
-
package.cross_compiling do |spec|
|
180
|
-
if /mingw|mswin/ =~ spec.platform.to_s
|
181
|
-
spec.add_runtime_dependency("cairo", ">= 1.15.9")
|
182
|
-
end
|
183
|
-
end
|
184
|
-
end
|
185
|
-
package_task.define
|
186
|
-
|
187
|
-
namespace :windows do
|
188
|
-
namespace :glib do
|
189
|
-
pkg_config_dir = package_task.windows.absolute_binary_dir + "lib/pkgconfig"
|
190
|
-
pc_path = pkg_config_dir + "glib-2.0.pc"
|
191
|
-
patched_path = pkg_config_dir + "patched"
|
192
|
-
file patched_path.to_s do
|
193
|
-
original_pc = pc_path.read
|
194
|
-
new_pc = original_pc.gsub(/^Cflags:/) do |matched|
|
195
|
-
"#{matched} -I${includedir}"
|
196
|
-
end
|
197
|
-
pc_path.open("w") do |pc_file|
|
198
|
-
pc_file.write(new_pc)
|
199
|
-
end
|
200
|
-
touch(patched_path)
|
201
|
-
end
|
202
|
-
|
203
|
-
desc "Add include path for libintl.h"
|
204
|
-
task :cross => patched_path.to_s
|
205
|
-
end
|
206
|
-
|
207
|
-
namespace :builder do
|
208
|
-
task :after => "windows:glib:cross"
|
209
|
-
end
|
25
|
+
GNOME2::Rake::PackageTask.define(spec, __dir__) do |package|
|
210
26
|
end
|
data/ext/glib2/rbgcompat.h
CHANGED
data/ext/glib2/rbglib-gc.c
CHANGED
@@ -23,7 +23,9 @@
|
|
23
23
|
static GHashTable *rbg_objects = NULL;
|
24
24
|
|
25
25
|
static void
|
26
|
-
gc_marker_mark_each(gpointer key,
|
26
|
+
gc_marker_mark_each(G_GNUC_UNUSED gpointer key,
|
27
|
+
gpointer value,
|
28
|
+
G_GNUC_UNUSED gpointer user_data)
|
27
29
|
{
|
28
30
|
VALUE rb_object = (VALUE)value;
|
29
31
|
rb_gc_mark(rb_object);
|
@@ -41,7 +43,9 @@ gc_marker_free(void *data)
|
|
41
43
|
{
|
42
44
|
GHashTable *hash_table = data;
|
43
45
|
g_hash_table_unref(hash_table);
|
44
|
-
rbg_objects
|
46
|
+
if (hash_table == rbg_objects) {
|
47
|
+
rbg_objects = NULL;
|
48
|
+
}
|
45
49
|
}
|
46
50
|
|
47
51
|
static const rb_data_type_t rbg_gc_marker_type = {
|
@@ -76,14 +80,75 @@ rbg_gc_unguard(gpointer key)
|
|
76
80
|
g_hash_table_remove(rbg_objects, key);
|
77
81
|
}
|
78
82
|
|
83
|
+
static VALUE
|
84
|
+
rbg_gc_marker_new_raw(GHashTable *rb_objects)
|
85
|
+
{
|
86
|
+
VALUE gc_marker;
|
87
|
+
|
88
|
+
gc_marker = TypedData_Wrap_Struct(rb_cData,
|
89
|
+
&rbg_gc_marker_type,
|
90
|
+
rb_objects);
|
91
|
+
return gc_marker;
|
92
|
+
}
|
93
|
+
|
94
|
+
VALUE
|
95
|
+
rbg_gc_marker_new(void)
|
96
|
+
{
|
97
|
+
GHashTable *rb_objects;
|
98
|
+
|
99
|
+
rb_objects = g_hash_table_new(g_direct_hash, g_direct_equal);
|
100
|
+
return rbg_gc_marker_new_raw(rb_objects);
|
101
|
+
}
|
102
|
+
|
103
|
+
void
|
104
|
+
rbg_gc_marker_guard(VALUE rb_gc_marker, VALUE rb_object)
|
105
|
+
{
|
106
|
+
GHashTable *rb_objects;
|
107
|
+
|
108
|
+
TypedData_Get_Struct(rb_gc_marker,
|
109
|
+
GHashTable,
|
110
|
+
&rbg_gc_marker_type,
|
111
|
+
rb_objects);
|
112
|
+
g_hash_table_insert(rb_objects,
|
113
|
+
(gpointer)rb_object,
|
114
|
+
(gpointer)rb_object);
|
115
|
+
}
|
116
|
+
|
117
|
+
void
|
118
|
+
rbg_gc_marker_unguard(VALUE rb_gc_marker, VALUE rb_object)
|
119
|
+
{
|
120
|
+
GHashTable *rb_objects;
|
121
|
+
|
122
|
+
if (!RB_TYPE_P(rb_gc_marker, RUBY_T_DATA))
|
123
|
+
return;
|
124
|
+
if (!RTYPEDDATA_P(rb_gc_marker))
|
125
|
+
return;
|
126
|
+
|
127
|
+
TypedData_Get_Struct(rb_gc_marker,
|
128
|
+
GHashTable,
|
129
|
+
&rbg_gc_marker_type,
|
130
|
+
rb_objects);
|
131
|
+
g_hash_table_remove(rb_objects, (gpointer)rb_object);
|
132
|
+
}
|
133
|
+
|
134
|
+
void
|
135
|
+
rbg_gc_marker_unguard_all(VALUE rb_gc_marker)
|
136
|
+
{
|
137
|
+
GHashTable *rb_objects;
|
138
|
+
|
139
|
+
TypedData_Get_Struct(rb_gc_marker,
|
140
|
+
GHashTable,
|
141
|
+
&rbg_gc_marker_type,
|
142
|
+
rb_objects);
|
143
|
+
g_hash_table_remove_all(rb_objects);
|
144
|
+
}
|
145
|
+
|
79
146
|
void
|
80
147
|
Init_glib_gc(void)
|
81
148
|
{
|
82
149
|
VALUE gc_marker;
|
83
150
|
|
84
151
|
rbg_objects = g_hash_table_new(g_direct_hash, g_direct_equal);
|
85
|
-
gc_marker =
|
86
|
-
&rbg_gc_marker_type,
|
87
|
-
rbg_objects);
|
152
|
+
gc_marker = rbg_gc_marker_new_raw(rbg_objects);
|
88
153
|
rb_ivar_set(mGLib, rb_intern("gc_marker"), gc_marker);
|
89
154
|
}
|
data/ext/glib2/rbglib.h
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-2018 Ruby-GNOME2 Project Team
|
4
4
|
* Copyright (C) 2005 Masao Mutoh
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -33,8 +33,6 @@ static ID id_poll_func;
|
|
33
33
|
static ID id_call;
|
34
34
|
|
35
35
|
static VALUE mGLibSource;
|
36
|
-
static ID id__callbacks__;
|
37
|
-
static GHashTable *callbacks_table;
|
38
36
|
|
39
37
|
static GThread *main_thread;
|
40
38
|
|
@@ -123,10 +121,6 @@ restore_poll_func(G_GNUC_UNUSED VALUE data)
|
|
123
121
|
static VALUE
|
124
122
|
source_remove(G_GNUC_UNUSED VALUE self, VALUE tag)
|
125
123
|
{
|
126
|
-
VALUE callback;
|
127
|
-
callback = G_GET_RELATIVE(mGLibSource, id__callbacks__, tag);
|
128
|
-
G_REMOVE_RELATIVE(mGLibSource, id__callbacks__, tag);
|
129
|
-
g_hash_table_remove(callbacks_table, (gpointer)callback);
|
130
124
|
return CBOOL2RVAL(g_source_remove(NUM2UINT(tag)));
|
131
125
|
}
|
132
126
|
|
@@ -137,15 +131,21 @@ source_current_source(G_GNUC_UNUSED VALUE self)
|
|
137
131
|
}
|
138
132
|
|
139
133
|
static gboolean
|
140
|
-
|
134
|
+
source_func(gpointer data)
|
141
135
|
{
|
142
136
|
callback_info_t *info = (callback_info_t *)data;
|
143
|
-
gboolean ret;
|
144
137
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
138
|
+
return RVAL2CBOOL(rb_funcall(info->callback, id_call, 0));
|
139
|
+
}
|
140
|
+
|
141
|
+
static void
|
142
|
+
source_destroy_notify(gpointer data)
|
143
|
+
{
|
144
|
+
callback_info_t *info = data;
|
145
|
+
|
146
|
+
rbgobj_remove_relative(mGLibSource, (ID)0, info->callback);
|
147
|
+
|
148
|
+
xfree(info);
|
149
149
|
}
|
150
150
|
|
151
151
|
/*****************************************/
|
@@ -420,13 +420,14 @@ timeout_add(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self)
|
|
420
420
|
priority = NIL_P(rb_priority) ? G_PRIORITY_DEFAULT : NUM2INT(rb_priority);
|
421
421
|
info = ALLOC(callback_info_t);
|
422
422
|
info->callback = func;
|
423
|
-
id = g_timeout_add_full(priority,
|
424
|
-
(
|
425
|
-
|
423
|
+
id = g_timeout_add_full(priority,
|
424
|
+
NUM2UINT(interval),
|
425
|
+
source_func,
|
426
|
+
info,
|
427
|
+
source_destroy_notify);
|
426
428
|
info->id = id;
|
427
429
|
rb_id = UINT2NUM(id);
|
428
|
-
|
429
|
-
g_hash_table_insert(callbacks_table, (gpointer)func, info);
|
430
|
+
rbgobj_add_relative(mGLibSource, func);
|
430
431
|
return rb_id;
|
431
432
|
}
|
432
433
|
|
@@ -446,13 +447,12 @@ timeout_add_seconds(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self)
|
|
446
447
|
info->callback = func;
|
447
448
|
id = g_timeout_add_seconds_full(priority,
|
448
449
|
NUM2UINT(interval),
|
449
|
-
|
450
|
-
|
451
|
-
|
450
|
+
source_func,
|
451
|
+
info,
|
452
|
+
source_destroy_notify);
|
452
453
|
info->id = id;
|
453
454
|
rb_id = UINT2NUM(id);
|
454
|
-
|
455
|
-
g_hash_table_insert(callbacks_table, (gpointer)func, info);
|
455
|
+
rbgobj_add_relative(mGLibSource, func);
|
456
456
|
return rb_id;
|
457
457
|
}
|
458
458
|
#endif
|
@@ -484,26 +484,16 @@ idle_add(gint argc, VALUE *argv, G_GNUC_UNUSED VALUE self)
|
|
484
484
|
|
485
485
|
info = ALLOC(callback_info_t);
|
486
486
|
info->callback = func;
|
487
|
-
id = g_idle_add_full(priority,
|
488
|
-
|
487
|
+
id = g_idle_add_full(priority,
|
488
|
+
source_func,
|
489
|
+
info,
|
490
|
+
source_destroy_notify);
|
489
491
|
info->id = id;
|
490
492
|
rb_id = UINT2NUM(id);
|
491
|
-
|
492
|
-
g_hash_table_insert(callbacks_table, (gpointer)func, info);
|
493
|
+
rbgobj_add_relative(mGLibSource, func);
|
493
494
|
return rb_id;
|
494
495
|
}
|
495
496
|
|
496
|
-
static VALUE
|
497
|
-
idle_remove(G_GNUC_UNUSED VALUE self, VALUE func)
|
498
|
-
{
|
499
|
-
callback_info_t *info;
|
500
|
-
|
501
|
-
info = g_hash_table_lookup(callbacks_table, (gpointer)func);
|
502
|
-
G_REMOVE_RELATIVE(mGLibSource, id__callbacks__, UINT2NUM(info->id));
|
503
|
-
g_hash_table_remove(callbacks_table, (gpointer)func);
|
504
|
-
return CBOOL2RVAL(g_idle_remove_by_data((gpointer)info));
|
505
|
-
}
|
506
|
-
|
507
497
|
static VALUE
|
508
498
|
child_watch_source_new(G_GNUC_UNUSED VALUE self, VALUE pid)
|
509
499
|
{
|
@@ -535,8 +525,6 @@ Init_glib_main_context(void)
|
|
535
525
|
VALUE child_watch = rb_define_module_under(mGLib, "ChildWatch");
|
536
526
|
|
537
527
|
id_call = rb_intern("call");
|
538
|
-
id__callbacks__ = rb_intern("__callbacks__");
|
539
|
-
callbacks_table = g_hash_table_new(NULL, NULL);
|
540
528
|
|
541
529
|
g_static_private_set(&rg_polling_key, GINT_TO_POINTER(FALSE), NULL);
|
542
530
|
|
@@ -584,7 +572,6 @@ Init_glib_main_context(void)
|
|
584
572
|
#endif
|
585
573
|
rbg_define_singleton_method(idle, "source_new", idle_source_new, 0);
|
586
574
|
rbg_define_singleton_method(idle, "add", idle_add, -1);
|
587
|
-
rbg_define_singleton_method(idle, "remove", idle_remove, 1);
|
588
575
|
|
589
576
|
rbg_define_singleton_method(child_watch, "source_new", child_watch_source_new, 1);
|
590
577
|
rbg_define_singleton_method(child_watch, "add", child_watch_add, 1);
|
data/ext/glib2/rbgobject.c
CHANGED
@@ -23,12 +23,9 @@
|
|
23
23
|
* MA 02110-1301 USA
|
24
24
|
*/
|
25
25
|
|
26
|
-
#include "ruby.h"
|
27
26
|
#include "rbgprivate.h"
|
28
27
|
#include <ctype.h>
|
29
28
|
|
30
|
-
#include "rbgprivate.h"
|
31
|
-
|
32
29
|
static ID id_relatives;
|
33
30
|
static ID id_delete;
|
34
31
|
static ID id_module_eval;
|
@@ -191,16 +188,16 @@ rbgobj_add_relative(VALUE obj, VALUE relative)
|
|
191
188
|
if (rb_obj_is_kind_of(obj, mGLibObject)) {
|
192
189
|
rbgobj_object_add_relative(obj, relative);
|
193
190
|
} else {
|
194
|
-
VALUE
|
191
|
+
VALUE rb_gc_marker = Qnil;
|
195
192
|
|
196
193
|
if (RVAL2CBOOL(rb_ivar_defined(obj, id_relatives)))
|
197
|
-
|
194
|
+
rb_gc_marker = rb_ivar_get(obj, id_relatives);
|
198
195
|
|
199
|
-
if (NIL_P(
|
200
|
-
|
201
|
-
rb_ivar_set(obj, id_relatives,
|
196
|
+
if (NIL_P(rb_gc_marker)) {
|
197
|
+
rb_gc_marker = rbg_gc_marker_new();
|
198
|
+
rb_ivar_set(obj, id_relatives, rb_gc_marker);
|
202
199
|
}
|
203
|
-
|
200
|
+
rbg_gc_marker_guard(rb_gc_marker, relative);
|
204
201
|
}
|
205
202
|
}
|
206
203
|
|
@@ -253,26 +250,34 @@ rbgobj_get_relative_removable(VALUE obj, ID obj_ivar_id, VALUE hash_key)
|
|
253
250
|
}
|
254
251
|
|
255
252
|
void
|
256
|
-
rbgobj_remove_relative(VALUE obj, ID obj_ivar_id, VALUE
|
253
|
+
rbgobj_remove_relative(VALUE obj, ID obj_ivar_id, VALUE relative)
|
257
254
|
{
|
258
255
|
static VALUE cGLibObject = Qnil;
|
259
256
|
if (NIL_P(cGLibObject)) {
|
260
257
|
cGLibObject = rb_const_get(mGLib, rb_intern("Object"));
|
261
258
|
}
|
262
259
|
|
260
|
+
if (obj_ivar_id == (ID)0) {
|
261
|
+
obj_ivar_id = id_relatives;
|
262
|
+
}
|
263
|
+
|
263
264
|
if ((obj_ivar_id == id_relatives || obj_ivar_id == rbgobj_id_children) &&
|
264
265
|
rb_obj_is_kind_of(obj, cGLibObject)) {
|
265
|
-
rbgobj_object_remove_relative(obj,
|
266
|
+
rbgobj_object_remove_relative(obj, relative);
|
266
267
|
} else {
|
267
|
-
VALUE
|
268
|
+
VALUE rb_gc_marker = Qnil;
|
268
269
|
|
269
270
|
if (RVAL2CBOOL(rb_ivar_defined(obj, obj_ivar_id)))
|
270
|
-
|
271
|
+
rb_gc_marker = rb_ivar_get(obj, obj_ivar_id);
|
271
272
|
|
272
|
-
if (NIL_P(
|
273
|
+
if (NIL_P(rb_gc_marker)) {
|
273
274
|
/* should not happen. */
|
275
|
+
} else if (RB_TYPE_P(rb_gc_marker, RUBY_T_HASH)) {
|
276
|
+
/* For backward compatibility. */
|
277
|
+
VALUE relatives = rb_gc_marker;
|
278
|
+
rb_funcall(relatives, id_delete, 1, relative);
|
274
279
|
} else {
|
275
|
-
|
280
|
+
rbg_gc_marker_unguard(rb_gc_marker, relative);
|
276
281
|
}
|
277
282
|
}
|
278
283
|
}
|
data/ext/glib2/rbgobject.h
CHANGED
@@ -20,17 +20,14 @@
|
|
20
20
|
* MA 02110-1301 USA
|
21
21
|
*/
|
22
22
|
|
23
|
-
#
|
24
|
-
#define __RBGOBJECT_H__
|
23
|
+
#pragma once
|
25
24
|
|
26
25
|
#include <glib-object.h>
|
27
|
-
#include
|
26
|
+
#include <ruby.h>
|
28
27
|
#include "rbglib.h"
|
29
28
|
#include "rbgutil.h"
|
30
29
|
|
31
|
-
|
32
|
-
extern "C" {
|
33
|
-
#endif /* __cplusplus */
|
30
|
+
G_BEGIN_DECLS
|
34
31
|
|
35
32
|
/* macros */
|
36
33
|
|
@@ -169,7 +166,7 @@ extern VALUE rbgobj_create_object(VALUE klass); /* deprecated */
|
|
169
166
|
|
170
167
|
extern VALUE rbgobj_get_ruby_object_from_gobject(GObject* gobj, gboolean alloc);
|
171
168
|
|
172
|
-
/* For Ruby/
|
169
|
+
/* For Ruby/GObjectIntrospection */
|
173
170
|
extern void rbgobj_gobject_initialize(VALUE obj, gpointer cobj);
|
174
171
|
|
175
172
|
/* deprecated */
|
@@ -335,10 +332,6 @@ typedef struct {
|
|
335
332
|
|
336
333
|
extern void rbgobj_convert_define(const RGConvertTable *table);
|
337
334
|
|
338
|
-
|
339
|
-
}
|
340
|
-
#endif /* __cplusplus */
|
341
|
-
|
342
|
-
#endif /* __RBGOBJECT_H__ */
|
335
|
+
G_END_DECLS
|
343
336
|
|
344
337
|
#include "rbgcompat.h"
|
data/ext/glib2/rbgprivate.h
CHANGED
@@ -18,8 +18,7 @@
|
|
18
18
|
* MA 02110-1301 USA
|
19
19
|
*/
|
20
20
|
|
21
|
-
#
|
22
|
-
#define __RBGPRIVATE_H__
|
21
|
+
#pragma once
|
23
22
|
|
24
23
|
/*
|
25
24
|
* CentOS 6: GLib 2.28
|
@@ -123,6 +122,13 @@ G_GNUC_INTERNAL void rg_enum_add_constants(VALUE mod, GType enum_type, const gch
|
|
123
122
|
G_GNUC_INTERNAL void rg_flags_add_constants(VALUE mod, GType flags_type, const gchar *strip_prefix);
|
124
123
|
G_GNUC_INTERNAL char *rg_obj_constant_lookup(const char *name);
|
125
124
|
|
125
|
+
G_GNUC_INTERNAL VALUE rbg_gc_marker_new(void);
|
126
|
+
G_GNUC_INTERNAL void rbg_gc_marker_guard(VALUE rb_gc_marker,
|
127
|
+
VALUE rb_object);
|
128
|
+
G_GNUC_INTERNAL void rbg_gc_marker_unguard(VALUE rb_gc_marker,
|
129
|
+
VALUE rb_object);
|
130
|
+
G_GNUC_INTERNAL void rbg_gc_marker_unguard_all(VALUE rb_gc_marker);
|
131
|
+
|
126
132
|
G_GNUC_INTERNAL void Init_glib_gc(void);
|
127
133
|
|
128
134
|
G_GNUC_INTERNAL void Init_gutil(void);
|
@@ -189,5 +195,3 @@ G_GNUC_INTERNAL void Init_gobject_gtypemodule(void);
|
|
189
195
|
G_GNUC_INTERNAL void Init_gobject_gbinding(void);
|
190
196
|
|
191
197
|
G_END_DECLS
|
192
|
-
|
193
|
-
#endif
|
data/ext/glib2/rbgutil.h
CHANGED
@@ -19,19 +19,16 @@
|
|
19
19
|
* MA 02110-1301 USA
|
20
20
|
*/
|
21
21
|
|
22
|
-
#
|
23
|
-
#define __RBGUTIL_H__
|
22
|
+
#pragma once
|
24
23
|
|
25
24
|
#include <glib-object.h>
|
26
|
-
#include
|
25
|
+
#include <ruby.h>
|
27
26
|
#include <ruby/encoding.h>
|
28
27
|
#include "rbglib.h"
|
29
28
|
#include "rbgutil_list.h"
|
30
29
|
#include "rbgutildeprecated.h"
|
31
30
|
|
32
|
-
|
33
|
-
extern "C" {
|
34
|
-
#endif /* __cplusplus */
|
31
|
+
G_BEGIN_DECLS
|
35
32
|
|
36
33
|
#define RG_DEF_MODFUNC(method, argc) \
|
37
34
|
rb_define_module_function(RG_TARGET_NAMESPACE, #method, rg_m_ ## method, argc)
|
@@ -114,8 +111,4 @@ RUBY_GLIB2_VAR ID rbgutil_id_module_eval;
|
|
114
111
|
extern void rbgutil_glibid_r2g_func(VALUE from, GValue* to);
|
115
112
|
extern VALUE rbgutil_sym_g2r_func(const GValue *from);
|
116
113
|
|
117
|
-
|
118
|
-
}
|
119
|
-
#endif /* __cplusplus */
|
120
|
-
|
121
|
-
#endif /* __RBGUTIL_H__ */
|
114
|
+
G_END_DECLS
|
data/lib/glib2.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2005-
|
1
|
+
# Copyright (C) 2005-2018 Ruby-GNOME2 Project Team
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -114,20 +114,7 @@ module GLib
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
|
-
|
118
|
-
base_dir = Pathname.new(__FILE__).dirname.dirname.expand_path
|
119
|
-
vendor_dir = base_dir + "vendor" + "local"
|
120
|
-
if vendor_dir.exist?
|
121
|
-
require "cairo"
|
122
|
-
end
|
123
|
-
|
124
|
-
GLib.prepend_dll_path(vendor_dir + "bin")
|
125
|
-
begin
|
126
|
-
major, minor, _ = RUBY_VERSION.split(/\./)
|
127
|
-
require "#{major}.#{minor}/glib2.so"
|
128
|
-
rescue LoadError
|
129
|
-
require 'glib2.so'
|
130
|
-
end
|
117
|
+
require "glib2.so"
|
131
118
|
|
132
119
|
module GLib
|
133
120
|
module MetaInterface
|
@@ -269,8 +256,9 @@ GLib::Log.set_log_domain(GLib::Object::LOG_DOMAIN)
|
|
269
256
|
GLib::Log.set_log_domain(GLib::Thread::LOG_DOMAIN)
|
270
257
|
GLib::Log.set_log_domain(GLib::Module::LOG_DOMAIN)
|
271
258
|
|
272
|
-
require
|
259
|
+
require "glib2/version"
|
273
260
|
require "glib2/regex"
|
261
|
+
require "glib2/deprecated"
|
274
262
|
=begin
|
275
263
|
Don't we need this?
|
276
264
|
ObjectSpace.define_finalizer(GLib) {
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Copyright (C) 2018 Ruby-GNOME2 Project Team
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License, or (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This library is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
11
|
+
# Lesser General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU Lesser General Public
|
14
|
+
# License along with this library; if not, write to the Free Software
|
15
|
+
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
16
|
+
|
17
|
+
module GLib
|
18
|
+
module Idle
|
19
|
+
extend GLib::Deprecatable
|
20
|
+
define_deprecated_singleton_method :remove,
|
21
|
+
warn: "Use 'GLib::Source.remove(id)'."
|
22
|
+
end
|
23
|
+
end
|
data/lib/glib2/version.rb
CHANGED
data/lib/mkmf-gnome2.rb
CHANGED
@@ -115,24 +115,10 @@ def windows_platform?
|
|
115
115
|
/cygwin|mingw|mswin/ === RUBY_PLATFORM
|
116
116
|
end
|
117
117
|
|
118
|
+
# For backward compatibility
|
118
119
|
def setup_windows(target_name, base_dir=nil)
|
119
120
|
checking_for(checking_message("Windows")) do
|
120
|
-
|
121
|
-
import_library_name = "libruby-#{target_name}.a"
|
122
|
-
$DLDFLAGS << " -Wl,--out-implib=#{import_library_name}"
|
123
|
-
$cleanfiles << import_library_name
|
124
|
-
base_dir ||= Pathname($0).dirname.parent.parent.expand_path
|
125
|
-
base_dir = Pathname(base_dir) if base_dir.is_a?(String)
|
126
|
-
binary_base_dir = base_dir + "vendor" + "local"
|
127
|
-
if binary_base_dir.exist?
|
128
|
-
$INCFLAGS += " -I#{binary_base_dir}/include"
|
129
|
-
pkg_config_dir = binary_base_dir + "lib" + "pkgconfig"
|
130
|
-
PKGConfig.add_path(pkg_config_dir.to_s)
|
131
|
-
end
|
132
|
-
true
|
133
|
-
else
|
134
|
-
false
|
135
|
-
end
|
121
|
+
windows_platform?
|
136
122
|
end
|
137
123
|
end
|
138
124
|
# For backward compatibility
|
@@ -214,16 +200,13 @@ def add_depend_package_path(target_name, target_source_dir, target_build_dir)
|
|
214
200
|
$INCFLAGS = "-I#{target_build_dir} #{$INCFLAGS}"
|
215
201
|
end
|
216
202
|
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
$DLDFLAGS << " /libpath:#{target_build_dir}"
|
225
|
-
$libs << " lib#{library_base_name}.lib"
|
226
|
-
end
|
203
|
+
library_base_name = target_name.gsub(/-/, "_")
|
204
|
+
case RUBY_PLATFORM
|
205
|
+
when /cygwin|mingw/
|
206
|
+
$libs << " " << File.join(target_build_dir, "#{library_base_name}.so")
|
207
|
+
when /mswin/
|
208
|
+
$DLDFLAGS << " /libpath:#{target_build_dir}"
|
209
|
+
$libs << " #{library_base_name}-$(arch).lib"
|
227
210
|
end
|
228
211
|
end
|
229
212
|
|
@@ -473,7 +456,7 @@ def required_pkg_config_package(package_info, native_package_info=nil)
|
|
473
456
|
else
|
474
457
|
required_package_info = [package_info]
|
475
458
|
end
|
476
|
-
if required_package_info
|
459
|
+
if required_package_info[0] == "gobject-introspection-1.0"
|
477
460
|
setup_homebrew_libffi
|
478
461
|
end
|
479
462
|
return true if PKGConfig.have_package(*required_package_info)
|
data/sample/keyfile.rb
CHANGED
@@ -9,8 +9,6 @@
|
|
9
9
|
|
10
10
|
require 'glib2'
|
11
11
|
|
12
|
-
$KCODE = "U"
|
13
|
-
|
14
12
|
#
|
15
13
|
# Create a GLib::KeyFile
|
16
14
|
#
|
@@ -18,14 +16,14 @@ kf = GLib::KeyFile.new
|
|
18
16
|
kf.set_value("Group 1", "value", "Hello World")
|
19
17
|
kf.set_comment("Group 1", nil, "This file is generated by keyfile.rb")
|
20
18
|
kf.set_string("Group 1", "string", "Hello World\nRuby-GNOME2")
|
21
|
-
kf.set_locale_string("Group 1", "locale_string", "ja", "
|
19
|
+
kf.set_locale_string("Group 1", "locale_string", "ja", "こんにちは、世界")
|
22
20
|
kf.set_locale_string("Group 1", "locale_string", "en", "Hello World")
|
23
21
|
kf.set_boolean("Group 1", "boolean", true)
|
24
22
|
kf.set_integer("Group 1", "integer", 1)
|
25
23
|
kf.set_double("Group 1", "double", 1.0)
|
26
24
|
kf.set_string_list("Group 2", "string_list", ["foo", "bar"])
|
27
|
-
kf.set_locale_string_list("Group 2", "locale_string_list", "ja", ["
|
28
|
-
kf.set_locale_string_list("Group 2", "locale_string_list", "en", ["
|
25
|
+
kf.set_locale_string_list("Group 2", "locale_string_list", "ja", ["こんにちは", "世界"])
|
26
|
+
kf.set_locale_string_list("Group 2", "locale_string_list", "en", ["Hello", "World"])
|
29
27
|
kf.set_boolean_list("Group 2", "boolean_list", [true, false])
|
30
28
|
kf.set_integer_list("Group 2", "integer_list", [1, 2, 3])
|
31
29
|
kf.set_double_list("Group 2", "double_list", [1.2, 1.3, 1.45])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glib2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Ruby-GNOME2 Project Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pkg-config
|
@@ -147,6 +147,7 @@ files:
|
|
147
147
|
- lib/glib-mkenums.rb
|
148
148
|
- lib/glib2.rb
|
149
149
|
- lib/glib2/deprecatable.rb
|
150
|
+
- lib/glib2/deprecated.rb
|
150
151
|
- lib/glib2/regex.rb
|
151
152
|
- lib/glib2/version.rb
|
152
153
|
- lib/gnome2-raketask.rb
|
@@ -220,8 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
221
|
- !ruby/object:Gem::Version
|
221
222
|
version: '0'
|
222
223
|
requirements: []
|
223
|
-
|
224
|
-
rubygems_version: 3.0.0.beta1
|
224
|
+
rubygems_version: 3.0.2
|
225
225
|
signing_key:
|
226
226
|
specification_version: 4
|
227
227
|
summary: Ruby/GLib2 is a Ruby binding of GLib-2.x.
|