glib2 3.0.9 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +2 -2
- data/ext/glib2/extconf.rb +0 -3
- data/ext/glib2/glib2.def +3 -0
- data/ext/glib2/rbglib.c +52 -20
- data/ext/glib2/rbglib.h +2 -2
- data/ext/glib2/rbglib_iochannel.c +1 -1
- data/ext/glib2/rbglib_mainloop.c +34 -11
- data/ext/glib2/rbglib_messages.c +21 -14
- data/ext/glib2/rbgobj_closure.c +65 -28
- data/ext/glib2/rbgobj_signal.c +38 -2
- data/ext/glib2/rbgobject.h +16 -0
- data/ext/glib2/rbgutil.c +6 -6
- data/lib/glib2.rb +8 -3
- data/lib/gnome2/rake/external-package.rb +24 -0
- data/lib/gnome2/rake/windows-binary-build-task.rb +339 -338
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 398786c497340ba507311f59d7abe62b6d157cf6
|
4
|
+
data.tar.gz: 9dbcf93fe4255b9e3b9d87d53d75356a42b8a691
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19a054eaeb33aa1ab949d286f22fe661f26aca95de6e7b114fbb1589e54a08d6d8238f5d488bdcf9364f1529e5edef2b3a1bbeeffe96d95b453d5a8f38a2caba
|
7
|
+
data.tar.gz: 2b88e5545b2d18f4f24f628dbc782d9344d8c13685caa94c5ba6f2e13bf126ca77bd362b3ee9fdb57b5ca4525f7be2781568381e8ee9405a06e250f7aa2762b1
|
data/Rakefile
CHANGED
@@ -85,7 +85,7 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
85
85
|
:name => "glib",
|
86
86
|
:download_site => :gnome,
|
87
87
|
:label => "GLib",
|
88
|
-
:version => "2.
|
88
|
+
:version => "2.50.2",
|
89
89
|
:compression_method => "xz",
|
90
90
|
:windows => {
|
91
91
|
:need_autoreconf => true,
|
@@ -168,7 +168,7 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
168
168
|
:name => "glib-networking",
|
169
169
|
:download_site => :gnome,
|
170
170
|
:label => "glib-networking",
|
171
|
-
:version => "2.
|
171
|
+
:version => "2.50.0",
|
172
172
|
:compression_method => "xz",
|
173
173
|
:windows => {
|
174
174
|
:configure_args => [
|
data/ext/glib2/extconf.rb
CHANGED
@@ -41,9 +41,6 @@ have_func("rb_check_array_type", ruby_header)
|
|
41
41
|
have_func("rb_check_hash_type", ruby_header)
|
42
42
|
have_func("rb_exec_recursive", ruby_header)
|
43
43
|
have_func("rb_errinfo", ruby_header)
|
44
|
-
have_func("rb_sourcefile", ruby_header)
|
45
|
-
have_func("rb_sourceline", ruby_header)
|
46
|
-
have_func("ruby_set_current_source", ruby_header)
|
47
44
|
have_func("rb_thread_call_without_gvl", ruby_header)
|
48
45
|
have_func("ruby_native_thread_p", ruby_header)
|
49
46
|
have_func("rb_thread_call_with_gvl", ruby_header)
|
data/ext/glib2/glib2.def
CHANGED
@@ -56,10 +56,13 @@ EXPORTS
|
|
56
56
|
rbgobj_register_type
|
57
57
|
rbgobj_set_signal_func
|
58
58
|
rbgobj_get_signal_func
|
59
|
+
rbgobj_set_signal_call_func
|
60
|
+
rbgobj_get_signal_call_func
|
59
61
|
rbgobj_add_constants
|
60
62
|
rbgobj_constant_remap
|
61
63
|
rbgobj_signal_wrap
|
62
64
|
g_rclosure_new
|
65
|
+
g_rclosure_new_call
|
63
66
|
g_rclosure_attach
|
64
67
|
g_rclosure_set_tag
|
65
68
|
rbgobj_ruby_value_get_type
|
data/ext/glib2/rbglib.c
CHANGED
@@ -854,47 +854,79 @@ rbg_check_hash_type (VALUE object)
|
|
854
854
|
void
|
855
855
|
rbg_scan_options (VALUE options, ...)
|
856
856
|
{
|
857
|
-
VALUE original_options = options;
|
858
|
-
VALUE available_keys;
|
859
857
|
const char *key;
|
860
|
-
|
858
|
+
gsize n_keys = 0;
|
859
|
+
gsize n_found_keys = 0;
|
861
860
|
va_list args;
|
861
|
+
va_list args_copy;
|
862
862
|
|
863
|
-
if (NIL_P(options)) {
|
864
|
-
|
865
|
-
} else {
|
863
|
+
if (!NIL_P(options)) {
|
864
|
+
VALUE original_options = options;
|
866
865
|
options = rbg_check_hash_type(options);
|
867
|
-
if (options
|
868
|
-
options = rb_funcall(options, rb_intern("dup"), 0);
|
869
|
-
} else if (NIL_P(options)) {
|
866
|
+
if (NIL_P(options)) {
|
870
867
|
rb_raise(rb_eArgError,
|
871
868
|
"options must be Hash or nil: %+" PRIsVALUE,
|
872
869
|
original_options);
|
873
870
|
}
|
874
871
|
}
|
875
872
|
|
876
|
-
available_keys = rb_ary_new();
|
877
873
|
va_start(args, options);
|
874
|
+
va_copy(args_copy, args);
|
878
875
|
key = va_arg(args, const char *);
|
876
|
+
n_keys = 0;
|
877
|
+
n_found_keys = 0;
|
879
878
|
while (key) {
|
880
|
-
VALUE
|
881
|
-
value = va_arg(args, VALUE *);
|
879
|
+
VALUE *value;
|
882
880
|
|
883
|
-
|
884
|
-
|
885
|
-
|
881
|
+
value = va_arg(args, VALUE *);
|
882
|
+
if (NIL_P(options)) {
|
883
|
+
*value = Qnil;
|
884
|
+
} else {
|
885
|
+
VALUE rb_key;
|
886
|
+
rb_key = ID2SYM(rb_intern(key));
|
887
|
+
if (RTEST(rb_funcall(options, rb_intern("key?"), 1, rb_key))) {
|
888
|
+
n_found_keys++;
|
889
|
+
}
|
890
|
+
*value = rb_hash_aref(options, rb_key);
|
891
|
+
}
|
892
|
+
n_keys++;
|
886
893
|
|
887
894
|
key = va_arg(args, const char *);
|
888
895
|
}
|
889
896
|
va_end(args);
|
890
897
|
|
891
|
-
if (
|
898
|
+
if (NIL_P(options)) {
|
899
|
+
return;
|
900
|
+
}
|
901
|
+
|
902
|
+
if (n_found_keys == RHASH_SIZE(options)) {
|
892
903
|
return;
|
904
|
+
}
|
905
|
+
|
906
|
+
{
|
907
|
+
VALUE rb_available_keys;
|
893
908
|
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
909
|
+
rb_available_keys = rb_ary_new();
|
910
|
+
key = va_arg(args_copy, const char *);
|
911
|
+
while (key) {
|
912
|
+
VALUE rb_key;
|
913
|
+
|
914
|
+
va_arg(args_copy, VALUE *);
|
915
|
+
rb_key = ID2SYM(rb_intern(key));
|
916
|
+
rb_ary_push(rb_available_keys, rb_key);
|
917
|
+
key = va_arg(args_copy, const char *);
|
918
|
+
}
|
919
|
+
va_end(args_copy);
|
920
|
+
|
921
|
+
rb_raise(rb_eArgError,
|
922
|
+
"unexpected key(s) exist: %+" PRIsVALUE
|
923
|
+
": available keys: %+" PRIsVALUE,
|
924
|
+
rb_funcall(rb_funcall(options, rb_intern("keys"), 0),
|
925
|
+
rb_intern("-"),
|
926
|
+
1,
|
927
|
+
rb_available_keys),
|
928
|
+
rb_available_keys);
|
929
|
+
}
|
898
930
|
}
|
899
931
|
|
900
932
|
#if 0
|
data/ext/glib2/rbglib.h
CHANGED
@@ -42,7 +42,7 @@ ioc_error(GIOStatus status, GError *err)
|
|
42
42
|
} else if (status == G_IO_STATUS_NORMAL){
|
43
43
|
/* Do nothing */
|
44
44
|
} else {
|
45
|
-
rb_raise(rb_eRuntimeError, "An error
|
45
|
+
rb_raise(rb_eRuntimeError, "An error occurred. status = %d\n", status);
|
46
46
|
}
|
47
47
|
}
|
48
48
|
|
data/ext/glib2/rbglib_mainloop.c
CHANGED
@@ -57,34 +57,57 @@ rg_initialize(int argc, VALUE *argv, VALUE self)
|
|
57
57
|
return Qnil;
|
58
58
|
}
|
59
59
|
|
60
|
+
typedef struct {
|
61
|
+
GMainLoop *loop;
|
62
|
+
int state;
|
63
|
+
} CheckInterruptData;
|
64
|
+
|
65
|
+
static VALUE
|
66
|
+
check_interrupt_raw(G_GNUC_UNUSED VALUE user_data)
|
67
|
+
{
|
68
|
+
rb_thread_check_ints();
|
69
|
+
return Qnil;
|
70
|
+
}
|
71
|
+
|
60
72
|
static gboolean
|
61
|
-
|
73
|
+
check_interrupt(gpointer user_data)
|
62
74
|
{
|
63
|
-
|
64
|
-
|
65
|
-
|
75
|
+
CheckInterruptData *data = user_data;
|
76
|
+
|
77
|
+
rb_protect(check_interrupt_raw, Qnil, &(data->state));
|
78
|
+
if (data->state == 0) {
|
79
|
+
return G_SOURCE_CONTINUE;
|
80
|
+
} else {
|
81
|
+
g_main_loop_quit(data->loop);
|
82
|
+
return G_SOURCE_REMOVE;
|
83
|
+
}
|
66
84
|
}
|
67
85
|
|
68
86
|
static VALUE
|
69
87
|
rg_run(VALUE self)
|
70
88
|
{
|
71
|
-
|
89
|
+
CheckInterruptData data;
|
72
90
|
GSource *interrupt_source;
|
73
91
|
|
74
|
-
loop = _SELF(self);
|
92
|
+
data.loop = _SELF(self);
|
93
|
+
data.state = 0;
|
75
94
|
|
76
95
|
interrupt_source = rbg_interrupt_source_new();
|
77
96
|
g_source_set_callback(interrupt_source,
|
78
|
-
|
79
|
-
|
97
|
+
check_interrupt,
|
98
|
+
&data,
|
80
99
|
NULL);
|
81
100
|
g_source_attach(interrupt_source,
|
82
|
-
g_main_loop_get_context(loop));
|
83
|
-
g_main_loop_run(loop);
|
101
|
+
g_main_loop_get_context(data.loop));
|
102
|
+
g_main_loop_run(data.loop);
|
84
103
|
g_source_destroy(interrupt_source);
|
85
104
|
g_source_unref(interrupt_source);
|
86
105
|
|
87
|
-
|
106
|
+
if (data.state == 0) {
|
107
|
+
rb_thread_check_ints();
|
108
|
+
} else {
|
109
|
+
rb_jump_tag(data.state);
|
110
|
+
}
|
88
111
|
|
89
112
|
return self;
|
90
113
|
}
|
data/ext/glib2/rbglib_messages.c
CHANGED
@@ -24,14 +24,6 @@
|
|
24
24
|
|
25
25
|
#include "rbgprivate.h"
|
26
26
|
|
27
|
-
#ifndef HAVE_RB_SOURCEFILE
|
28
|
-
#define rb_sourcefile() (ruby_sourcefile)
|
29
|
-
#endif
|
30
|
-
|
31
|
-
#ifndef HAVE_RB_SOURCELINE
|
32
|
-
#define rb_sourceline() (ruby_sourceline)
|
33
|
-
#endif
|
34
|
-
|
35
27
|
#define RG_TARGET_NAMESPACE mLog
|
36
28
|
|
37
29
|
static VALUE rbglib_log_handler_procs;
|
@@ -56,15 +48,30 @@ logmessage(GLogLevelFlags level)
|
|
56
48
|
return "UNKNOWN";
|
57
49
|
}
|
58
50
|
|
51
|
+
static VALUE
|
52
|
+
rbg_printerr(VALUE message, G_GNUC_UNUSED VALUE user_data)
|
53
|
+
{
|
54
|
+
g_printerr("\tfrom %.*s\n",
|
55
|
+
(int)RSTRING_LEN(message),
|
56
|
+
RSTRING_PTR(message));
|
57
|
+
return Qnil;
|
58
|
+
}
|
59
|
+
|
59
60
|
static void
|
60
61
|
rbglib_log_handler(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data)
|
61
62
|
{
|
62
|
-
if (!
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
if (!log_canceled) {
|
64
|
+
g_printerr("%s-%s **: %s\n",
|
65
|
+
log_domain, logmessage(log_level), message);
|
66
|
+
if (rb_during_gc()) {
|
67
|
+
g_printerr("\tfrom %s:%d\n", rb_sourcefile(), rb_sourceline());
|
68
|
+
} else {
|
69
|
+
VALUE backtrace;
|
70
|
+
|
71
|
+
backtrace = rb_funcall(rb_mKernel, rb_intern("caller"), 0);
|
72
|
+
rb_iterate(rb_each, backtrace,
|
73
|
+
rbg_printerr, Qnil);
|
74
|
+
}
|
68
75
|
} else {
|
69
76
|
g_log_default_handler(log_domain, log_level, message, user_data);
|
70
77
|
}
|
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) 2011-
|
3
|
+
* Copyright (C) 2011-2016 Ruby-GNOME2 Project Team
|
4
4
|
* Copyright (C) 2002-2006 Ruby-GNOME2 Project
|
5
5
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
6
6
|
*
|
@@ -38,6 +38,7 @@ struct _GRClosure
|
|
38
38
|
gint count;
|
39
39
|
GList *objects;
|
40
40
|
GValToRValSignalFunc g2r_func;
|
41
|
+
RGClosureCallFunc call_func;
|
41
42
|
gchar tag[TAG_SIZE];
|
42
43
|
};
|
43
44
|
|
@@ -70,38 +71,51 @@ rclosure_alive_p(GRClosure *rclosure)
|
|
70
71
|
static VALUE
|
71
72
|
rclosure_marshal_do(VALUE arg_)
|
72
73
|
{
|
74
|
+
VALUE ret = Qnil;
|
73
75
|
struct marshal_arg *arg;
|
74
|
-
GRClosure*
|
75
|
-
GValue*
|
76
|
-
guint n_param_values;
|
77
|
-
const GValue* param_values;
|
78
|
-
/* gpointer invocation_hint;*/
|
79
|
-
/* gpointer marshal_data; */
|
76
|
+
GRClosure *rclosure;
|
77
|
+
GValue *return_value;
|
80
78
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
arg = (struct marshal_arg*)arg_;
|
86
|
-
rclosure = (GRClosure *)(arg->closure);
|
87
|
-
return_value = arg->return_value;
|
88
|
-
n_param_values = arg->n_param_values;
|
89
|
-
param_values = arg->param_values;
|
90
|
-
/* invocation_hint = arg->invocation_hint; */
|
91
|
-
/* marshal_data = arg->marshal_data; */
|
92
|
-
|
93
|
-
if (rclosure->g2r_func){
|
94
|
-
func = (GValToRValSignalFunc)rclosure->g2r_func;
|
95
|
-
} else {
|
96
|
-
func = (GValToRValSignalFunc)rclosure_default_g2r_func;
|
97
|
-
}
|
98
|
-
args = (*func)(n_param_values, param_values);
|
79
|
+
arg = (struct marshal_arg *)arg_;
|
80
|
+
rclosure = (GRClosure *)(arg->closure);
|
81
|
+
return_value = arg->return_value;
|
99
82
|
|
100
83
|
if (rclosure_alive_p(rclosure)) {
|
101
|
-
|
84
|
+
guint n_param_values;
|
85
|
+
const GValue *param_values;
|
86
|
+
/* gpointer invocation_hint;*/
|
87
|
+
/* gpointer marshal_data; */
|
88
|
+
GValToRValSignalFunc g2r_func;
|
89
|
+
VALUE callback;
|
90
|
+
VALUE extra_args;
|
91
|
+
VALUE args;
|
92
|
+
|
93
|
+
n_param_values = arg->n_param_values;
|
94
|
+
param_values = arg->param_values;
|
95
|
+
/* invocation_hint = arg->invocation_hint; */
|
96
|
+
/* marshal_data = arg->marshal_data; */
|
97
|
+
|
102
98
|
callback = rclosure->callback;
|
103
99
|
extra_args = rclosure->extra_args;
|
104
100
|
|
101
|
+
if (rclosure->call_func) {
|
102
|
+
RGClosureCallData data;
|
103
|
+
data.return_value = return_value;
|
104
|
+
data.n_param_values = n_param_values;
|
105
|
+
data.param_values = param_values;
|
106
|
+
data.callback = callback;
|
107
|
+
data.extra_args = extra_args;
|
108
|
+
rclosure->call_func(&data);
|
109
|
+
return Qnil;
|
110
|
+
}
|
111
|
+
|
112
|
+
if (rclosure->g2r_func) {
|
113
|
+
g2r_func = (GValToRValSignalFunc)rclosure->g2r_func;
|
114
|
+
} else {
|
115
|
+
g2r_func = (GValToRValSignalFunc)rclosure_default_g2r_func;
|
116
|
+
}
|
117
|
+
args = (*g2r_func)(n_param_values, param_values);
|
118
|
+
|
105
119
|
if (!NIL_P(extra_args)) {
|
106
120
|
args = rb_ary_concat(args, extra_args);
|
107
121
|
}
|
@@ -210,8 +224,11 @@ gr_closure_holder_free(GRClosure *rclosure)
|
|
210
224
|
}
|
211
225
|
}
|
212
226
|
|
213
|
-
GClosure*
|
214
|
-
|
227
|
+
static GClosure *
|
228
|
+
g_rclosure_new_raw(VALUE callback_proc,
|
229
|
+
VALUE extra_args,
|
230
|
+
GValToRValSignalFunc g2r_func,
|
231
|
+
RGClosureCallFunc call_func)
|
215
232
|
{
|
216
233
|
GRClosure* closure;
|
217
234
|
|
@@ -219,6 +236,7 @@ g_rclosure_new(VALUE callback_proc, VALUE extra_args, GValToRValSignalFunc g2r_f
|
|
219
236
|
|
220
237
|
closure->count = 1;
|
221
238
|
closure->g2r_func = g2r_func;
|
239
|
+
closure->call_func = call_func;
|
222
240
|
closure->objects = NULL;
|
223
241
|
closure->callback = callback_proc;
|
224
242
|
closure->extra_args = extra_args;
|
@@ -235,6 +253,25 @@ g_rclosure_new(VALUE callback_proc, VALUE extra_args, GValToRValSignalFunc g2r_f
|
|
235
253
|
return (GClosure*)closure;
|
236
254
|
}
|
237
255
|
|
256
|
+
GClosure *
|
257
|
+
g_rclosure_new(VALUE callback_proc,
|
258
|
+
VALUE extra_args,
|
259
|
+
GValToRValSignalFunc g2r_func)
|
260
|
+
{
|
261
|
+
return g_rclosure_new_raw(callback_proc, extra_args, g2r_func, NULL);
|
262
|
+
}
|
263
|
+
|
264
|
+
GClosure *
|
265
|
+
g_rclosure_new_call(VALUE callback_proc,
|
266
|
+
VALUE extra_args,
|
267
|
+
RGClosureCallFunc call_func)
|
268
|
+
{
|
269
|
+
return g_rclosure_new_raw(callback_proc,
|
270
|
+
extra_args,
|
271
|
+
NULL,
|
272
|
+
call_func);
|
273
|
+
}
|
274
|
+
|
238
275
|
static void
|
239
276
|
rclosure_weak_notify(gpointer data, GObject* where_the_object_was)
|
240
277
|
{
|
data/ext/glib2/rbgobj_signal.c
CHANGED
@@ -51,6 +51,28 @@ rbgobj_get_signal_func(guint signal_id)
|
|
51
51
|
return func;
|
52
52
|
}
|
53
53
|
|
54
|
+
static VALUE signal_call_func_table;
|
55
|
+
|
56
|
+
void
|
57
|
+
rbgobj_set_signal_call_func(VALUE klass,
|
58
|
+
const gchar *signal_name,
|
59
|
+
RGClosureCallFunc func)
|
60
|
+
{
|
61
|
+
VALUE obj = Data_Wrap_Struct(rb_cData, NULL, NULL, func);
|
62
|
+
guint signal_id = g_signal_lookup(signal_name, CLASS2GTYPE(klass));
|
63
|
+
rb_hash_aset(signal_call_func_table, UINT2NUM(signal_id), obj);
|
64
|
+
}
|
65
|
+
|
66
|
+
RGClosureCallFunc
|
67
|
+
rbgobj_get_signal_call_func(guint signal_id)
|
68
|
+
{
|
69
|
+
RGClosureCallFunc func = NULL;
|
70
|
+
VALUE func_obj = rb_hash_aref(signal_call_func_table, UINT2NUM(signal_id));
|
71
|
+
if (!NIL_P(func_obj))
|
72
|
+
Data_Get_Struct(func_obj, void, func);
|
73
|
+
return func;
|
74
|
+
}
|
75
|
+
|
54
76
|
/**********************************************************************/
|
55
77
|
|
56
78
|
static VALUE eNoSignalError;
|
@@ -321,8 +343,19 @@ gobj_sig_connect_impl(gboolean after, int argc, VALUE *argv, VALUE self)
|
|
321
343
|
rb_str_new_cstr(normalized_signal_name),
|
322
344
|
rb_block_proc());
|
323
345
|
}
|
324
|
-
|
325
|
-
|
346
|
+
{
|
347
|
+
RGClosureCallFunc call_func;
|
348
|
+
call_func = rbgobj_get_signal_call_func(signal_id);
|
349
|
+
if (call_func) {
|
350
|
+
rclosure = g_rclosure_new_call(func,
|
351
|
+
rest,
|
352
|
+
call_func);
|
353
|
+
} else {
|
354
|
+
rclosure = g_rclosure_new(func,
|
355
|
+
rest,
|
356
|
+
rbgobj_get_signal_func(signal_id));
|
357
|
+
}
|
358
|
+
}
|
326
359
|
g_rclosure_attach((GClosure *)rclosure, self);
|
327
360
|
g_object = RVAL2GOBJ(self);
|
328
361
|
tag = g_strdup_printf("%s::%s",
|
@@ -947,6 +980,9 @@ Init_gobject_gsignal(void)
|
|
947
980
|
signal_func_table = rb_hash_new();
|
948
981
|
rb_global_variable(&signal_func_table);
|
949
982
|
|
983
|
+
signal_call_func_table = rb_hash_new();
|
984
|
+
rb_global_variable(&signal_call_func_table);
|
985
|
+
|
950
986
|
rbg_define_method(mMetaInterface, "signal_new", gobj_s_signal_new, -1);
|
951
987
|
rbg_define_method(mMetaInterface, "signals", gobj_s_signals, -1);
|
952
988
|
rbg_define_method(mMetaInterface, "signal", gobj_s_signal, 1);
|