glib2 1.1.9 → 1.2.0
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.
- data/Rakefile +26 -4
- data/ext/glib2/glib2.def +3 -1
- data/ext/glib2/rbgcompat.h +0 -15
- data/ext/glib2/rbglib.h +11 -3
- data/ext/glib2/rbglib_source.c +6 -1
- data/ext/glib2/rbglib_win32.c +0 -17
- data/ext/glib2/rbgobj_boxed.c +65 -48
- data/ext/glib2/rbgobj_convert.c +29 -14
- data/ext/glib2/rbgobj_value.c +42 -0
- data/ext/glib2/rbgobject.c +7 -4
- data/ext/glib2/rbgobject.h +15 -9
- data/lib/gnome2-raketask.rb +6 -1
- data/lib/gnome2-win32-binary-build-task.rb +40 -10
- metadata +5 -6
- data/ext/glib2/rbgobj_fundamental.c +0 -43
    
        data/Rakefile
    CHANGED
    
    | @@ -3,21 +3,25 @@ | |
| 3 3 | 
             
            $LOAD_PATH.unshift("./lib")
         | 
| 4 4 | 
             
            require 'gnome2-raketask'
         | 
| 5 5 |  | 
| 6 | 
            +
            libffi_lib_dir     = nil
         | 
| 7 | 
            +
            libffi_include_dir = nil
         | 
| 8 | 
            +
             | 
| 6 9 | 
             
            package = GNOME2Package.new do |_package|
         | 
| 10 | 
            +
              libffi_lib_dir     = File.join(_package.win32.absolute_binary_dir, "lib")
         | 
| 11 | 
            +
              libffi_include_dir = File.join(_package.win32.absolute_binary_dir, "include")
         | 
| 12 | 
            +
             | 
| 7 13 | 
             
              _package.summary = "Ruby/GLib2 is a Ruby binding of GLib-2.x."
         | 
| 8 14 | 
             
              _package.description = "Ruby/GLib2 is a Ruby binding of GLib-2.x."
         | 
| 9 15 | 
             
              _package.dependency.gem.runtime = [["pkg-config", ">= 0"]]
         | 
| 10 16 | 
             
              _package.dependency.gem.development = [["test-unit", ">= 2"]]
         | 
| 11 17 | 
             
              _package.win32.packages = []
         | 
| 12 18 | 
             
              _package.win32.dependencies = ["zlib", "libffi", "gettext-runtime"]
         | 
| 13 | 
            -
              libffi_lib_dir     = File.join(_package.win32.absolute_binary_dir, "lib")
         | 
| 14 | 
            -
              libffi_include_dir = File.join(libffi_lib_dir, "libffi-3.0.6", "include")
         | 
| 15 19 | 
             
              _package.win32.build_packages = [
         | 
| 16 20 | 
             
                {
         | 
| 17 21 | 
             
                  :name => "glib",
         | 
| 18 22 | 
             
                  :download_site => :gnome,
         | 
| 19 23 | 
             
                  :label => "GLib",
         | 
| 20 | 
            -
                  :version => "2. | 
| 24 | 
            +
                  :version => "2.34.3",
         | 
| 21 25 | 
             
                  :configure_args => [
         | 
| 22 26 | 
             
                    "LIBFFI_CFLAGS=-I#{libffi_include_dir}",
         | 
| 23 27 | 
             
                    "LIBFFI_LIBS=-L#{libffi_lib_dir} -lffi",
         | 
| @@ -57,7 +61,7 @@ package = GNOME2Package.new do |_package| | |
| 57 61 | 
             
                  :name => "glib-networking",
         | 
| 58 62 | 
             
                  :download_site => :gnome,
         | 
| 59 63 | 
             
                  :label => "glib-networking",
         | 
| 60 | 
            -
                  :version => "2. | 
| 64 | 
            +
                  :version => "2.34.2",
         | 
| 61 65 | 
             
                  :configure_args => [
         | 
| 62 66 | 
             
                    "--without-libproxy",
         | 
| 63 67 | 
             
                    "--without-gnome-proxy",
         | 
| @@ -68,3 +72,21 @@ package = GNOME2Package.new do |_package| | |
| 68 72 | 
             
              ]
         | 
| 69 73 | 
             
            end
         | 
| 70 74 | 
             
            package.define_tasks
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            namespace :win32 do
         | 
| 77 | 
            +
              namespace :libffi do
         | 
| 78 | 
            +
                namespace :header do
         | 
| 79 | 
            +
                  desc "Move libffi headers to include/"
         | 
| 80 | 
            +
                  task :fix do
         | 
| 81 | 
            +
                    libffi_version = "libffi-3.0.6"
         | 
| 82 | 
            +
                    mv(Dir.glob(File.join(libffi_lib_dir, libffi_version, "include", "*.h")),
         | 
| 83 | 
            +
                       libffi_include_dir)
         | 
| 84 | 
            +
                    rm_rf(File.join(libffi_lib_dir, libffi_version))
         | 
| 85 | 
            +
                  end
         | 
| 86 | 
            +
                end
         | 
| 87 | 
            +
              end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
              namespace :downloader do
         | 
| 90 | 
            +
                task :after => ["win32:libffi:header:fix"]
         | 
| 91 | 
            +
              end
         | 
| 92 | 
            +
            end
         | 
    
        data/ext/glib2/glib2.def
    CHANGED
    
    | @@ -21,8 +21,11 @@ EXPORTS | |
| 21 21 | 
             
            	rbgobj_gobject_initialize
         | 
| 22 22 | 
             
            	rbgobj_boxed_create
         | 
| 23 23 | 
             
            	rbgobj_boxed_get
         | 
| 24 | 
            +
            	rbgobj_boxed_get_default
         | 
| 24 25 | 
             
            	rbgobj_boxed_not_copy_obj
         | 
| 25 26 | 
             
            	rbgobj_make_boxed
         | 
| 27 | 
            +
            	rbgobj_make_boxed_raw
         | 
| 28 | 
            +
            	rbgobj_make_boxed_default
         | 
| 26 29 | 
             
            	rbgobj_add_abstract_but_create_instance_class
         | 
| 27 30 | 
             
            	rbgobj_gtype_get
         | 
| 28 31 | 
             
            	rbgobj_gtype_new
         | 
| @@ -120,7 +123,6 @@ EXPORTS | |
| 120 123 | 
             
            	rbgerr_define_gerror
         | 
| 121 124 | 
             
            	rbgerr_gerror2exception
         | 
| 122 125 | 
             
            	rbgobj_convert_define
         | 
| 123 | 
            -
            	rbgobj_fund_define_fundamental
         | 
| 124 126 | 
             
            	rbgobj_gc_mark_gvalue
         | 
| 125 127 | 
             
            	rbgobj_gc_mark_instance
         | 
| 126 128 | 
             
            	rbglib_num_to_uint64
         | 
    
        data/ext/glib2/rbgcompat.h
    CHANGED
    
    | @@ -24,21 +24,6 @@ | |
| 24 24 |  | 
| 25 25 | 
             
            G_BEGIN_DECLS
         | 
| 26 26 |  | 
| 27 | 
            -
            typedef struct {
         | 
| 28 | 
            -
                GType type;
         | 
| 29 | 
            -
                VALUE (*get_superclass)(void);
         | 
| 30 | 
            -
                void (*type_init_hook)(VALUE);
         | 
| 31 | 
            -
                void (*rvalue2gvalue)(VALUE val, GValue *result);
         | 
| 32 | 
            -
                VALUE (*gvalue2rvalue)(const GValue *);
         | 
| 33 | 
            -
                void (*initialize)(VALUE, gpointer);
         | 
| 34 | 
            -
                gpointer (*robj2instance)(VALUE);
         | 
| 35 | 
            -
                VALUE (*instance2robj)(gpointer);
         | 
| 36 | 
            -
            } RGFundamental;
         | 
| 37 | 
            -
             | 
| 38 | 
            -
            #define G_DEF_FUNDAMENTAL(f) (rbgobj_fund_define_fundamental(f))
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            extern void rbgobj_fund_define_fundamental(RGFundamental *fundamental);
         | 
| 41 | 
            -
             | 
| 42 27 | 
             
            G_END_DECLS
         | 
| 43 28 |  | 
| 44 29 | 
             
            #endif
         | 
    
        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-2013  Ruby-GNOME2 Project Team
         | 
| 4 4 | 
             
             *  Copyright (C) 2002-2005  Ruby-GNOME2 Project
         | 
| 5 5 | 
             
             *  Copyright (C) 2002,2003  Masahiro Sakai
         | 
| 6 6 | 
             
             *
         | 
| @@ -34,8 +34,8 @@ extern "C" { | |
| 34 34 | 
             
            #endif /* __cplusplus */
         | 
| 35 35 |  | 
| 36 36 | 
             
            #define RBGLIB_MAJOR_VERSION 1
         | 
| 37 | 
            -
            #define RBGLIB_MINOR_VERSION  | 
| 38 | 
            -
            #define RBGLIB_MICRO_VERSION  | 
| 37 | 
            +
            #define RBGLIB_MINOR_VERSION 2
         | 
| 38 | 
            +
            #define RBGLIB_MICRO_VERSION 0
         | 
| 39 39 |  | 
| 40 40 | 
             
            #ifndef RSTRING_PTR
         | 
| 41 41 | 
             
            #  define RSTRING_PTR(s) (RSTRING(s)->ptr)
         | 
| @@ -55,6 +55,14 @@ extern "C" { | |
| 55 55 | 
             
            typedef int GPid;
         | 
| 56 56 | 
             
            #endif
         | 
| 57 57 |  | 
| 58 | 
            +
            #ifndef G_SOURCE_REMOVE
         | 
| 59 | 
            +
            #  define G_SOURCE_REMOVE FALSE
         | 
| 60 | 
            +
            #endif
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            #ifndef G_SOURCE_CONTINUE
         | 
| 63 | 
            +
            #  define G_SOURCE_CONTINUE TRUE
         | 
| 64 | 
            +
            #endif
         | 
| 65 | 
            +
             | 
| 58 66 | 
             
            #define RBG_INSPECT(object) (rbg_rval_inspect(object))
         | 
| 59 67 |  | 
| 60 68 | 
             
            #define RVAL2CSTR(v) (rbg_rval2cstr(&(v)))
         | 
    
        data/ext/glib2/rbglib_source.c
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
         | 
| 2 2 | 
             
            /*
         | 
| 3 | 
            -
             *  Copyright (C) 2011  Ruby-GNOME2 Project Team
         | 
| 3 | 
            +
             *  Copyright (C) 2011-2013  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
         | 
| @@ -171,6 +171,11 @@ Init_glib_source(void) | |
| 171 171 |  | 
| 172 172 | 
             
                id_call = rb_intern("call");
         | 
| 173 173 |  | 
| 174 | 
            +
                rb_define_const(RG_TARGET_NAMESPACE,
         | 
| 175 | 
            +
                                "REMOVE", CBOOL2RVAL(G_SOURCE_REMOVE));
         | 
| 176 | 
            +
                rb_define_const(RG_TARGET_NAMESPACE,
         | 
| 177 | 
            +
                                "CONTINUE", CBOOL2RVAL(G_SOURCE_CONTINUE));
         | 
| 178 | 
            +
             | 
| 174 179 | 
             
                RG_DEF_METHOD(attach, -1);
         | 
| 175 180 | 
             
            #if GLIB_CHECK_VERSION(2,12,0)
         | 
| 176 181 | 
             
                RG_DEF_METHOD_P(destroyed, 0);
         | 
    
        data/ext/glib2/rbglib_win32.c
    CHANGED
    
    | @@ -45,21 +45,6 @@ rbglib_m_win32_locale_deprecated(VALUE self) | |
| 45 45 | 
             
                return rg_s_locale(self);
         | 
| 46 46 | 
             
            }
         | 
| 47 47 |  | 
| 48 | 
            -
            static VALUE
         | 
| 49 | 
            -
            rg_s_get_package_installation_directory(VALUE self, VALUE package, VALUE dll_name)
         | 
| 50 | 
            -
            {
         | 
| 51 | 
            -
                return CSTR2RVAL_FREE(g_win32_get_package_installation_directory(RVAL2CSTR(package), 
         | 
| 52 | 
            -
                                                                            RVAL2CSTR(dll_name)));
         | 
| 53 | 
            -
            }
         | 
| 54 | 
            -
             | 
| 55 | 
            -
            static VALUE
         | 
| 56 | 
            -
            rg_s_get_package_installation_subdirectory(VALUE self, VALUE package, VALUE dll_name, VALUE subdir)
         | 
| 57 | 
            -
            {
         | 
| 58 | 
            -
                return CSTR2RVAL_FREE(g_win32_get_package_installation_subdirectory(RVAL2CSTR(package), 
         | 
| 59 | 
            -
                                                                                RVAL2CSTR(dll_name),
         | 
| 60 | 
            -
                                                                                RVAL2CSTR(subdir)));
         | 
| 61 | 
            -
            }
         | 
| 62 | 
            -
             | 
| 63 48 | 
             
            #if GLIB_CHECK_VERSION(2,6,0)
         | 
| 64 49 | 
             
            static VALUE
         | 
| 65 50 | 
             
            rg_s_version(VALUE self)
         | 
| @@ -116,8 +101,6 @@ Init_glib_win32(void) | |
| 116 101 |  | 
| 117 102 | 
             
                RG_DEF_SMETHOD(error_message, 1);
         | 
| 118 103 | 
             
                RG_DEF_SMETHOD(locale, 0);
         | 
| 119 | 
            -
                RG_DEF_SMETHOD(get_package_installation_directory, 2);
         | 
| 120 | 
            -
                RG_DEF_SMETHOD(get_package_installation_subdirectory, 3);
         | 
| 121 104 | 
             
                RG_DEF_SMETHOD(version, 0);
         | 
| 122 105 | 
             
                /* Deprecated */
         | 
| 123 106 | 
             
                rbg_define_singleton_method(mGLib, "win32_locale", rbglib_m_win32_locale_deprecated, 0);
         | 
    
        data/ext/glib2/rbgobj_boxed.c
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
         | 
| 2 2 | 
             
            /*
         | 
| 3 | 
            -
             *  Copyright (C) 2011  Ruby-GNOME2 Project Team
         | 
| 3 | 
            +
             *  Copyright (C) 2011-2013  Ruby-GNOME2 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
         | 
| @@ -55,14 +55,14 @@ boxed_free(boxed_holder *holder) | |
| 55 55 | 
             
            static VALUE
         | 
| 56 56 | 
             
            rbgobj_boxed_s_allocate(VALUE klass)
         | 
| 57 57 | 
             
            {
         | 
| 58 | 
            -
                const RGObjClassInfo* | 
| 59 | 
            -
                boxed_holder* | 
| 58 | 
            +
                const RGObjClassInfo *cinfo = rbgobj_lookup_class(klass);
         | 
| 59 | 
            +
                boxed_holder *holder;
         | 
| 60 60 | 
             
                VALUE result;
         | 
| 61 61 |  | 
| 62 62 | 
             
                if (cinfo->gtype == G_TYPE_BOXED)
         | 
| 63 63 | 
             
                    rb_raise(rb_eTypeError, "abstract class");
         | 
| 64 64 |  | 
| 65 | 
            -
                result = Data_Make_Struct(klass, boxed_holder, | 
| 65 | 
            +
                result = Data_Make_Struct(klass, boxed_holder,
         | 
| 66 66 | 
             
                                          boxed_mark, boxed_free, holder);
         | 
| 67 67 | 
             
                holder->type  = cinfo->gtype;
         | 
| 68 68 | 
             
                holder->boxed = NULL;
         | 
| @@ -81,8 +81,8 @@ rg_initialize(VALUE self) | |
| 81 81 | 
             
            static VALUE
         | 
| 82 82 | 
             
            rg_inspect(VALUE self)
         | 
| 83 83 | 
             
            {
         | 
| 84 | 
            -
                boxed_holder* | 
| 85 | 
            -
                gchar* | 
| 84 | 
            +
                boxed_holder *holder;
         | 
| 85 | 
            +
                gchar *s;
         | 
| 86 86 | 
             
                VALUE result;
         | 
| 87 87 |  | 
| 88 88 | 
             
                Data_Get_Struct(self, boxed_holder, holder);
         | 
| @@ -102,8 +102,8 @@ rg_inspect(VALUE self) | |
| 102 102 | 
             
            static VALUE
         | 
| 103 103 | 
             
            rg_initialize_copy(VALUE self, VALUE orig)
         | 
| 104 104 | 
             
            {
         | 
| 105 | 
            -
                boxed_holder* | 
| 106 | 
            -
                boxed_holder* | 
| 105 | 
            +
                boxed_holder *holder1;
         | 
| 106 | 
            +
                boxed_holder *holder2;
         | 
| 107 107 |  | 
| 108 108 | 
             
                if (self == orig) return self;
         | 
| 109 109 |  | 
| @@ -134,24 +134,21 @@ rbgobj_boxed_create(VALUE klass) | |
| 134 134 |  | 
| 135 135 | 
             
            void
         | 
| 136 136 | 
             
            rbgobj_boxed_initialize(VALUE obj, gpointer boxed)
         | 
| 137 | 
            -
            { | 
| 138 | 
            -
                boxed_holder* | 
| 137 | 
            +
            {
         | 
| 138 | 
            +
                boxed_holder *holder;
         | 
| 139 139 | 
             
                Data_Get_Struct(obj, boxed_holder, holder);
         | 
| 140 140 | 
             
                holder->boxed = g_boxed_copy(holder->type, boxed);
         | 
| 141 141 | 
             
                holder->own   = TRUE;
         | 
| 142 142 | 
             
            }
         | 
| 143 143 |  | 
| 144 144 | 
             
            gpointer
         | 
| 145 | 
            -
             | 
| 145 | 
            +
            rbgobj_boxed_get_default(VALUE obj, GType gtype)
         | 
| 146 146 | 
             
            {
         | 
| 147 | 
            -
                boxed_holder* | 
| 148 | 
            -
             | 
| 149 | 
            -
                if (NIL_P(obj))
         | 
| 150 | 
            -
                    return NULL;
         | 
| 147 | 
            +
                boxed_holder *holder;
         | 
| 151 148 |  | 
| 152 149 | 
             
                if (!RVAL2CBOOL(rb_obj_is_kind_of(obj, GTYPE2CLASS(gtype))))
         | 
| 153 150 | 
             
                    rb_raise(rb_eArgError, "invalid argument %s (expect %s)",
         | 
| 154 | 
            -
                             rb_class2name(CLASS_OF(obj)), | 
| 151 | 
            +
                             rb_class2name(CLASS_OF(obj)),
         | 
| 155 152 | 
             
                             rb_class2name(GTYPE2CLASS(gtype)));
         | 
| 156 153 |  | 
| 157 154 | 
             
                Data_Get_Struct(obj, boxed_holder, holder);
         | 
| @@ -161,22 +158,32 @@ rbgobj_boxed_get(VALUE obj, GType gtype) | |
| 161 158 | 
             
                return holder->boxed;
         | 
| 162 159 | 
             
            }
         | 
| 163 160 |  | 
| 161 | 
            +
            gpointer
         | 
| 162 | 
            +
            rbgobj_boxed_get(VALUE obj, GType gtype)
         | 
| 163 | 
            +
            {
         | 
| 164 | 
            +
                gpointer boxed = NULL;
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                if (NIL_P(obj))
         | 
| 167 | 
            +
                    return NULL;
         | 
| 168 | 
            +
             | 
| 169 | 
            +
                if (rbgobj_convert_robj2instance(gtype, obj, &boxed)) {
         | 
| 170 | 
            +
                    return boxed;
         | 
| 171 | 
            +
                }
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                return rbgobj_boxed_get_default(obj, gtype);
         | 
| 174 | 
            +
            }
         | 
| 175 | 
            +
             | 
| 164 176 | 
             
            VALUE
         | 
| 165 | 
            -
             | 
| 177 | 
            +
            rbgobj_make_boxed_raw(gpointer p, GType gtype, VALUE klass, gint flags)
         | 
| 166 178 | 
             
            {
         | 
| 167 | 
            -
                const RGObjClassInfo* cinfo;
         | 
| 168 179 | 
             
                VALUE result;
         | 
| 169 | 
            -
                boxed_holder* | 
| 180 | 
            +
                boxed_holder *holder;
         | 
| 170 181 |  | 
| 171 | 
            -
                 | 
| 172 | 
            -
                    return Qnil;
         | 
| 173 | 
            -
             | 
| 174 | 
            -
                cinfo = GTYPE2CINFO(gtype);
         | 
| 175 | 
            -
                result = rbgobj_boxed_s_allocate(cinfo->klass);
         | 
| 182 | 
            +
                result = rbgobj_boxed_s_allocate(klass);
         | 
| 176 183 |  | 
| 177 184 | 
             
                Data_Get_Struct(result, boxed_holder, holder);
         | 
| 178 185 |  | 
| 179 | 
            -
                if ( | 
| 186 | 
            +
                if (flags & RBGOBJ_BOXED_NOT_COPY) {
         | 
| 180 187 | 
             
                    holder->boxed = p;
         | 
| 181 188 | 
             
                    holder->own   = FALSE;
         | 
| 182 189 | 
             
                } else {
         | 
| @@ -187,43 +194,53 @@ rbgobj_make_boxed(gpointer p, GType gtype) | |
| 187 194 | 
             
                return result;
         | 
| 188 195 | 
             
            }
         | 
| 189 196 |  | 
| 197 | 
            +
            VALUE
         | 
| 198 | 
            +
            rbgobj_make_boxed_default(gpointer p, GType gtype)
         | 
| 199 | 
            +
            {
         | 
| 200 | 
            +
                const RGObjClassInfo *cinfo;
         | 
| 201 | 
            +
             | 
| 202 | 
            +
                cinfo = GTYPE2CINFO(gtype);
         | 
| 203 | 
            +
                return rbgobj_make_boxed_raw(p, gtype, cinfo->klass, cinfo->flags);
         | 
| 204 | 
            +
            }
         | 
| 205 | 
            +
             | 
| 206 | 
            +
            VALUE
         | 
| 207 | 
            +
            rbgobj_make_boxed(gpointer p, GType gtype)
         | 
| 208 | 
            +
            {
         | 
| 209 | 
            +
                VALUE result;
         | 
| 210 | 
            +
             | 
| 211 | 
            +
                if (!p)
         | 
| 212 | 
            +
                    return Qnil;
         | 
| 213 | 
            +
             | 
| 214 | 
            +
                if (rbgobj_convert_instance2robj(gtype, p, &result)) {
         | 
| 215 | 
            +
                    return result;
         | 
| 216 | 
            +
                }
         | 
| 217 | 
            +
             | 
| 218 | 
            +
                return rbgobj_make_boxed_default(p, gtype);
         | 
| 219 | 
            +
            }
         | 
| 220 | 
            +
             | 
| 190 221 | 
             
            void
         | 
| 191 222 | 
             
            rbgobj_boxed_not_copy_obj(GType gtype)
         | 
| 192 223 | 
             
            {
         | 
| 193 | 
            -
                RGObjClassInfo* | 
| 224 | 
            +
                RGObjClassInfo *cinfo = (RGObjClassInfo *)GTYPE2CINFO(gtype);
         | 
| 194 225 | 
             
                cinfo->flags |= RBGOBJ_BOXED_NOT_COPY;
         | 
| 195 226 | 
             
            }
         | 
| 196 227 |  | 
| 197 228 | 
             
            /**********************************************************************/
         | 
| 198 229 |  | 
| 199 230 | 
             
            static VALUE
         | 
| 200 | 
            -
            boxed_to_ruby(const GValue* | 
| 231 | 
            +
            boxed_to_ruby(const GValue *from)
         | 
| 201 232 | 
             
            {
         | 
| 202 | 
            -
                gpointer boxed | 
| 203 | 
            -
                 | 
| 204 | 
            -
             | 
| 205 | 
            -
                else
         | 
| 206 | 
            -
                    return rbgobj_make_boxed(boxed, G_VALUE_TYPE(from));
         | 
| 233 | 
            +
                gpointer boxed;
         | 
| 234 | 
            +
                boxed = g_value_get_boxed(from);
         | 
| 235 | 
            +
                return rbgobj_make_boxed(boxed, G_VALUE_TYPE(from));
         | 
| 207 236 | 
             
            }
         | 
| 208 237 |  | 
| 209 238 | 
             
            static void
         | 
| 210 | 
            -
            boxed_from_ruby(VALUE from, GValue* | 
| 239 | 
            +
            boxed_from_ruby(VALUE from, GValue *to)
         | 
| 211 240 | 
             
            {
         | 
| 212 | 
            -
                 | 
| 213 | 
            -
             | 
| 214 | 
            -
                 | 
| 215 | 
            -
                    g_value_set_boxed(to, NULL);
         | 
| 216 | 
            -
                    return;
         | 
| 217 | 
            -
                }
         | 
| 218 | 
            -
             | 
| 219 | 
            -
                Data_Get_Struct(from, boxed_holder, holder);
         | 
| 220 | 
            -
             | 
| 221 | 
            -
                if (g_type_is_a(holder->type, G_VALUE_TYPE(to)))
         | 
| 222 | 
            -
                    g_value_set_boxed(to, holder->boxed);
         | 
| 223 | 
            -
                else
         | 
| 224 | 
            -
                    rb_raise(rb_eRuntimeError, "%s is not a subtype of %s",
         | 
| 225 | 
            -
                             g_type_name(holder->type),
         | 
| 226 | 
            -
                             g_type_name(G_VALUE_TYPE(to)));
         | 
| 241 | 
            +
                gpointer boxed;
         | 
| 242 | 
            +
                boxed = rbgobj_boxed_get(from, G_VALUE_TYPE(to));
         | 
| 243 | 
            +
                g_value_set_boxed(to, boxed);
         | 
| 227 244 | 
             
            }
         | 
| 228 245 |  | 
| 229 246 | 
             
            /**********************************************************************/
         | 
    
        data/ext/glib2/rbgobj_convert.c
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
         | 
| 2 2 | 
             
            /*
         | 
| 3 | 
            -
             *  Copyright (C) 2011  Ruby-GNOME2 Project Team
         | 
| 3 | 
            +
             *  Copyright (C) 2011-2013  Ruby-GNOME2 Project Team
         | 
| 4 4 | 
             
             *  Copyright (C) 2006  Sjoerd Simons, Masao Mutoh
         | 
| 5 5 | 
             
             *
         | 
| 6 6 | 
             
             *  This library is free software; you can redistribute it and/or
         | 
| @@ -24,20 +24,35 @@ | |
| 24 24 |  | 
| 25 25 | 
             
            static GHashTable *tables, *class_to_g_type_map;
         | 
| 26 26 |  | 
| 27 | 
            +
            static void
         | 
| 28 | 
            +
            rg_convert_table_free(gpointer data)
         | 
| 29 | 
            +
            {
         | 
| 30 | 
            +
                RGConvertTable *table = data;
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                if (table->notify) {
         | 
| 33 | 
            +
                    table->notify(table->user_data);
         | 
| 34 | 
            +
                }
         | 
| 35 | 
            +
                g_free(table);
         | 
| 36 | 
            +
            }
         | 
| 37 | 
            +
             | 
| 27 38 | 
             
            void
         | 
| 28 39 | 
             
            Init_gobject_convert(void)
         | 
| 29 40 | 
             
            {
         | 
| 30 | 
            -
                tables  | 
| 41 | 
            +
                /* TODO: unref the below tables on exit. */
         | 
| 42 | 
            +
                tables = g_hash_table_new_full(g_int_hash, g_int_equal, NULL,
         | 
| 43 | 
            +
                                               rg_convert_table_free);
         | 
| 31 44 | 
             
                class_to_g_type_map = g_hash_table_new(g_int_hash, g_int_equal);
         | 
| 32 45 | 
             
            }
         | 
| 33 46 |  | 
| 34 47 | 
             
            void
         | 
| 35 | 
            -
            rbgobj_convert_define(RGConvertTable *table)
         | 
| 48 | 
            +
            rbgobj_convert_define(const RGConvertTable *table)
         | 
| 36 49 | 
             
            {
         | 
| 37 | 
            -
                 | 
| 38 | 
            -
                 | 
| 50 | 
            +
                RGConvertTable *copied_table;
         | 
| 51 | 
            +
                copied_table = g_memdup(table, sizeof(RGConvertTable));
         | 
| 52 | 
            +
                g_hash_table_insert(tables, &(copied_table->type), copied_table);
         | 
| 53 | 
            +
                if (copied_table->klass != Qfalse && !NIL_P(copied_table->klass)) {
         | 
| 39 54 | 
             
                    g_hash_table_insert(class_to_g_type_map,
         | 
| 40 | 
            -
                                        &( | 
| 55 | 
            +
                                        &(copied_table->klass), &(copied_table->type));
         | 
| 41 56 | 
             
                }
         | 
| 42 57 | 
             
            }
         | 
| 43 58 |  | 
| @@ -60,7 +75,7 @@ rbgobj_convert_get_superclass(GType type, VALUE *result) | |
| 60 75 |  | 
| 61 76 | 
             
                table = rbgobj_convert_lookup(type);
         | 
| 62 77 | 
             
                if (table && table->get_superclass) {
         | 
| 63 | 
            -
                    *result = table->get_superclass();
         | 
| 78 | 
            +
                    *result = table->get_superclass(table->user_data);
         | 
| 64 79 | 
             
                    return TRUE;
         | 
| 65 80 | 
             
                }
         | 
| 66 81 |  | 
| @@ -74,7 +89,7 @@ rbgobj_convert_type_init_hook(GType type, VALUE klass) | |
| 74 89 |  | 
| 75 90 | 
             
                table = rbgobj_convert_lookup(type);
         | 
| 76 91 | 
             
                if (table && table->type_init_hook) {
         | 
| 77 | 
            -
                    table->type_init_hook(klass);
         | 
| 92 | 
            +
                    table->type_init_hook(klass, table->user_data);
         | 
| 78 93 | 
             
                    return TRUE;
         | 
| 79 94 | 
             
                }
         | 
| 80 95 |  | 
| @@ -88,7 +103,7 @@ rbgobj_convert_rvalue2gvalue(GType type, VALUE value, GValue *result) | |
| 88 103 |  | 
| 89 104 | 
             
                table = rbgobj_convert_lookup(type);
         | 
| 90 105 | 
             
                if (table && table->rvalue2gvalue) {
         | 
| 91 | 
            -
                    table->rvalue2gvalue(value, result);
         | 
| 106 | 
            +
                    table->rvalue2gvalue(value, result, table->user_data);
         | 
| 92 107 | 
             
                    return TRUE;
         | 
| 93 108 | 
             
                }
         | 
| 94 109 |  | 
| @@ -102,7 +117,7 @@ rbgobj_convert_gvalue2rvalue(GType type, const GValue *value, VALUE *result) | |
| 102 117 |  | 
| 103 118 | 
             
                table = rbgobj_convert_lookup(type);
         | 
| 104 119 | 
             
                if (table && table->gvalue2rvalue) {
         | 
| 105 | 
            -
                    *result = table->gvalue2rvalue(value);
         | 
| 120 | 
            +
                    *result = table->gvalue2rvalue(value, table->user_data);
         | 
| 106 121 | 
             
                    return TRUE;
         | 
| 107 122 | 
             
                }
         | 
| 108 123 |  | 
| @@ -127,7 +142,7 @@ rbgobj_convert_initialize(GType type, VALUE obj, gpointer cobj) | |
| 127 142 |  | 
| 128 143 | 
             
                table = rbgobj_convert_lookup(type);
         | 
| 129 144 | 
             
                if (table && table->initialize) {
         | 
| 130 | 
            -
                    table->initialize(obj, cobj);
         | 
| 145 | 
            +
                    table->initialize(obj, cobj, table->user_data);
         | 
| 131 146 | 
             
                    return TRUE;
         | 
| 132 147 | 
             
                }
         | 
| 133 148 |  | 
| @@ -141,7 +156,7 @@ rbgobj_convert_robj2instance(GType type, VALUE obj, gpointer *result) | |
| 141 156 |  | 
| 142 157 | 
             
                table = rbgobj_convert_lookup(type);
         | 
| 143 158 | 
             
                if (table && table->robj2instance) {
         | 
| 144 | 
            -
                    *result = table->robj2instance(obj);
         | 
| 159 | 
            +
                    *result = table->robj2instance(obj, table->user_data);
         | 
| 145 160 | 
             
                    return TRUE;
         | 
| 146 161 | 
             
                }
         | 
| 147 162 |  | 
| @@ -155,7 +170,7 @@ rbgobj_convert_instance2robj(GType type, gpointer instance, VALUE *result) | |
| 155 170 |  | 
| 156 171 | 
             
                table = rbgobj_convert_lookup(type);
         | 
| 157 172 | 
             
                if (table && table->instance2robj) {
         | 
| 158 | 
            -
                    *result = table->instance2robj(instance);
         | 
| 173 | 
            +
                    *result = table->instance2robj(instance, table->user_data);
         | 
| 159 174 | 
             
                    return TRUE;
         | 
| 160 175 | 
             
                }
         | 
| 161 176 |  | 
| @@ -169,7 +184,7 @@ rbgobj_convert_unref(GType type, gpointer instance) | |
| 169 184 |  | 
| 170 185 | 
             
                table = rbgobj_convert_lookup(type);
         | 
| 171 186 | 
             
                if (table && table->unref) {
         | 
| 172 | 
            -
                    table->unref(instance);
         | 
| 187 | 
            +
                    table->unref(instance, table->user_data);
         | 
| 173 188 | 
             
                    return TRUE;
         | 
| 174 189 | 
             
                }
         | 
| 175 190 |  | 
    
        data/ext/glib2/rbgobj_value.c
    CHANGED
    
    | @@ -22,6 +22,8 @@ | |
| 22 22 | 
             
            #include "rbgprivate.h"
         | 
| 23 23 |  | 
| 24 24 | 
             
            /**********************************************************************/
         | 
| 25 | 
            +
            #define RG_TARGET_NAMESPACE rbgobj_cValue
         | 
| 26 | 
            +
            #define _SELF(self) RVAL2GVALUE(self)
         | 
| 25 27 |  | 
| 26 28 | 
             
            static ID id_to_s;
         | 
| 27 29 | 
             
            static GQuark qRValueToGValueFunc;
         | 
| @@ -332,10 +334,50 @@ rbgobj_gc_mark_gvalue(GValue* value) | |
| 332 334 |  | 
| 333 335 | 
             
            /**********************************************************************/
         | 
| 334 336 |  | 
| 337 | 
            +
            static VALUE
         | 
| 338 | 
            +
            rg_initialize(VALUE self, VALUE rb_gtype, VALUE rb_value)
         | 
| 339 | 
            +
            {
         | 
| 340 | 
            +
                GValue value = G_VALUE_INIT;
         | 
| 341 | 
            +
             | 
| 342 | 
            +
                g_value_init(&value, NUM2INT(rb_to_int(rb_gtype)));
         | 
| 343 | 
            +
                rbgobj_rvalue_to_gvalue(rb_value, &value);
         | 
| 344 | 
            +
                G_INITIALIZE(self, &value);
         | 
| 345 | 
            +
                g_value_unset(&value);
         | 
| 346 | 
            +
             | 
| 347 | 
            +
                return Qnil;
         | 
| 348 | 
            +
            }
         | 
| 349 | 
            +
             | 
| 350 | 
            +
            static VALUE
         | 
| 351 | 
            +
            rg_type(VALUE self)
         | 
| 352 | 
            +
            {
         | 
| 353 | 
            +
                GValue *value;
         | 
| 354 | 
            +
             | 
| 355 | 
            +
                value = _SELF(self);
         | 
| 356 | 
            +
             | 
| 357 | 
            +
                return rbgobj_gtype_new(value->g_type);
         | 
| 358 | 
            +
            }
         | 
| 359 | 
            +
             | 
| 360 | 
            +
            static VALUE
         | 
| 361 | 
            +
            rg_value(VALUE self)
         | 
| 362 | 
            +
            {
         | 
| 363 | 
            +
                GValue *value;
         | 
| 364 | 
            +
             | 
| 365 | 
            +
                value = _SELF(self);
         | 
| 366 | 
            +
             | 
| 367 | 
            +
                return GVAL2RVAL(value);
         | 
| 368 | 
            +
            }
         | 
| 369 | 
            +
             | 
| 335 370 | 
             
            void
         | 
| 336 371 | 
             
            Init_gobject_gvalue(void)
         | 
| 337 372 | 
             
            {
         | 
| 373 | 
            +
                VALUE RG_TARGET_NAMESPACE;
         | 
| 374 | 
            +
             | 
| 338 375 | 
             
                id_to_s = rb_intern("to_s");
         | 
| 339 376 | 
             
                qRValueToGValueFunc = g_quark_from_static_string("__ruby_r2g_func__");
         | 
| 340 377 | 
             
                qGValueToRValueFunc = g_quark_from_static_string("__ruby_g2r_func__");
         | 
| 378 | 
            +
             | 
| 379 | 
            +
                RG_TARGET_NAMESPACE = G_DEF_CLASS(G_TYPE_VALUE, "Value", mGLib);
         | 
| 380 | 
            +
                RG_DEF_METHOD(initialize, 2);
         | 
| 381 | 
            +
                RG_DEF_METHOD(type, 0);
         | 
| 382 | 
            +
                RG_DEF_METHOD(value, 0);
         | 
| 341 383 | 
             
            }
         | 
    
        data/ext/glib2/rbgobject.c
    CHANGED
    
    | @@ -77,9 +77,10 @@ gpointer | |
| 77 77 | 
             
            rbgobj_instance_from_ruby_object(VALUE obj)
         | 
| 78 78 | 
             
            {
         | 
| 79 79 | 
             
                GType type;
         | 
| 80 | 
            +
                GType fundamental_type;
         | 
| 80 81 |  | 
| 81 82 | 
             
                if (NIL_P(obj))
         | 
| 82 | 
            -
             | 
| 83 | 
            +
                    return NULL;
         | 
| 83 84 |  | 
| 84 85 | 
             
                type = RVAL2GTYPE(obj);
         | 
| 85 86 | 
             
                if (rbgobj_convert_has_type(type)) {
         | 
| @@ -88,16 +89,18 @@ rbgobj_instance_from_ruby_object(VALUE obj) | |
| 88 89 | 
             
                        return instance;
         | 
| 89 90 | 
             
                }
         | 
| 90 91 |  | 
| 91 | 
            -
                 | 
| 92 | 
            -
                switch ( | 
| 92 | 
            +
                fundamental_type = G_TYPE_FUNDAMENTAL(type);
         | 
| 93 | 
            +
                switch (fundamental_type) {
         | 
| 93 94 | 
             
                case G_TYPE_OBJECT:
         | 
| 94 95 | 
             
                    return rbgobj_get_gobject(obj);
         | 
| 96 | 
            +
                case G_TYPE_BOXED:
         | 
| 97 | 
            +
                    return rbgobj_boxed_get(obj, type);
         | 
| 95 98 | 
             
                case G_TYPE_PARAM:
         | 
| 96 99 | 
             
                    return rbgobj_get_param_spec(obj);
         | 
| 97 100 | 
             
                default:
         | 
| 98 101 | 
             
                  {
         | 
| 99 102 | 
             
                    gpointer instance;
         | 
| 100 | 
            -
                    if (!rbgobj_convert_robj2instance( | 
| 103 | 
            +
                    if (!rbgobj_convert_robj2instance(fundamental_type, obj, &instance)) {
         | 
| 101 104 | 
             
                        rb_raise(rb_eTypeError, "%s isn't supported",
         | 
| 102 105 | 
             
                                 rb_class2name(CLASS_OF(obj)));
         | 
| 103 106 | 
             
                    }
         | 
    
        data/ext/glib2/rbgobject.h
    CHANGED
    
    | @@ -227,7 +227,11 @@ extern void rbgobj_register_property_getter(GType gtype, const char* prop_name, | |
| 227 227 | 
             
            /* rbgobj_boxed.c */
         | 
| 228 228 | 
             
            extern VALUE rbgobj_boxed_create(VALUE klass); /* deprecated */
         | 
| 229 229 | 
             
            extern gpointer rbgobj_boxed_get(VALUE obj, GType gtype);
         | 
| 230 | 
            +
            extern gpointer rbgobj_boxed_get_default(VALUE obj, GType gtype);
         | 
| 230 231 | 
             
            extern VALUE rbgobj_make_boxed(gpointer data, GType gtype);
         | 
| 232 | 
            +
            extern VALUE rbgobj_make_boxed_raw(gpointer p, GType gtype,
         | 
| 233 | 
            +
                                               VALUE klass, gint flags);
         | 
| 234 | 
            +
            extern VALUE rbgobj_make_boxed_default(gpointer data, GType gtype);
         | 
| 231 235 | 
             
            extern void rbgobj_boxed_not_copy_obj(GType gtype);
         | 
| 232 236 |  | 
| 233 237 | 
             
            /* rbgobj_enums.c */
         | 
| @@ -267,17 +271,19 @@ extern GType g_poll_fd_get_type(void); | |
| 267 271 | 
             
            typedef struct {
         | 
| 268 272 | 
             
                GType type;
         | 
| 269 273 | 
             
                VALUE klass;
         | 
| 270 | 
            -
                 | 
| 271 | 
            -
                 | 
| 272 | 
            -
                 | 
| 273 | 
            -
                 | 
| 274 | 
            -
                void (* | 
| 275 | 
            -
                 | 
| 276 | 
            -
                 | 
| 277 | 
            -
                 | 
| 274 | 
            +
                gpointer user_data;
         | 
| 275 | 
            +
                GDestroyNotify notify;
         | 
| 276 | 
            +
                VALUE (*get_superclass)(gpointer user_data);
         | 
| 277 | 
            +
                void (*type_init_hook)(VALUE klass, gpointer user_data);
         | 
| 278 | 
            +
                void (*rvalue2gvalue)(VALUE value, GValue *result, gpointer user_data);
         | 
| 279 | 
            +
                VALUE (*gvalue2rvalue)(const GValue *value, gpointer user_data);
         | 
| 280 | 
            +
                void (*initialize)(VALUE rb_instance, gpointer insntance, gpointer user_data);
         | 
| 281 | 
            +
                gpointer (*robj2instance)(VALUE rb_instance, gpointer user_data);
         | 
| 282 | 
            +
                VALUE (*instance2robj)(gpointer instance, gpointer user_data);
         | 
| 283 | 
            +
                void (*unref)(gpointer instance, gpointer user_data);
         | 
| 278 284 | 
             
            } RGConvertTable;
         | 
| 279 285 |  | 
| 280 | 
            -
            extern void rbgobj_convert_define(RGConvertTable *table);
         | 
| 286 | 
            +
            extern void rbgobj_convert_define(const RGConvertTable *table);
         | 
| 281 287 |  | 
| 282 288 | 
             
            #ifdef __cplusplus
         | 
| 283 289 | 
             
            }
         | 
    
        data/lib/gnome2-raketask.rb
    CHANGED
    
    | @@ -112,8 +112,13 @@ class GNOME2Package | |
| 112 112 | 
             
                define_win32_build_task
         | 
| 113 113 | 
             
              end
         | 
| 114 114 |  | 
| 115 | 
            +
              def so_base_name
         | 
| 116 | 
            +
                @name.gsub(/-/, "_")
         | 
| 117 | 
            +
              end
         | 
| 118 | 
            +
             | 
| 115 119 | 
             
              def define_win32_extension_task
         | 
| 116 | 
            -
                Rake::ExtensionTask.new( | 
| 120 | 
            +
                Rake::ExtensionTask.new(so_base_name, @spec) do |ext|
         | 
| 121 | 
            +
                  ext.ext_dir = "ext/#{@name}"
         | 
| 117 122 | 
             
                  ext.cross_compile = true
         | 
| 118 123 | 
             
                  ext.cross_compiling do |spec|
         | 
| 119 124 | 
             
                    if /mingw|mswin/ =~ spec.platform.to_s
         | 
| @@ -64,18 +64,27 @@ class GNOME2Win32BinaryBuildTask | |
| 64 64 |  | 
| 65 65 | 
             
              def define_build_tasks
         | 
| 66 66 | 
             
                namespace :build do
         | 
| 67 | 
            -
                   | 
| 68 | 
            -
             | 
| 69 | 
            -
                     | 
| 70 | 
            -
                     | 
| 71 | 
            -
                       | 
| 67 | 
            +
                  prepare_task_names = []
         | 
| 68 | 
            +
                  namespace :prepare do
         | 
| 69 | 
            +
                    prepare_task_names << "pkg_config"
         | 
| 70 | 
            +
                    task :pkg_config do
         | 
| 71 | 
            +
                      depended_packages = @configuration.build_dependencies
         | 
| 72 | 
            +
                      use_packages = [@configuration.package.name] + depended_packages
         | 
| 73 | 
            +
                      pkg_config_path = use_packages.collect do |package|
         | 
| 74 | 
            +
                        "../#{package}/#{@configuration.relative_binary_dir}/lib/pkgconfig"
         | 
| 75 | 
            +
                      end
         | 
| 76 | 
            +
                      ENV["PKG_CONFIG_PATH"] = pkg_config_path.collect do |path|
         | 
| 77 | 
            +
                        File.expand_path(path)
         | 
| 78 | 
            +
                      end.join(":")
         | 
| 79 | 
            +
                      ENV["PKG_CONFIG_LIBDIR"] = rcairo_win32_pkgconfig_path
         | 
| 72 80 | 
             
                    end
         | 
| 73 | 
            -
                    ENV["PKG_CONFIG_PATH"] = pkg_config_path.collect do |path|
         | 
| 74 | 
            -
                      File.expand_path(path)
         | 
| 75 | 
            -
                    end.join(":")
         | 
| 76 | 
            -
                    ENV["PKG_CONFIG_LIBDIR"] = rcairo_win32_pkgconfig_path
         | 
| 77 81 | 
             
                  end
         | 
| 78 82 |  | 
| 83 | 
            +
                  full_prepare_task_names = prepare_task_names.collect do |name|
         | 
| 84 | 
            +
                    "win32:builder:build:prepare:#{name}"
         | 
| 85 | 
            +
                  end
         | 
| 86 | 
            +
                  task :prepare => full_prepare_task_names
         | 
| 87 | 
            +
             | 
| 79 88 | 
             
                  build_packages.each do |package|
         | 
| 80 89 | 
             
                    download_task = "win32:builder:download:#{package[:name]}"
         | 
| 81 90 | 
             
                    desc "Build #{package[:label]} and install it into #{dist_dir}."
         | 
| @@ -95,8 +104,11 @@ class GNOME2Win32BinaryBuildTask | |
| 95 104 | 
             
                        (package[:patches] || []).each do |patch|
         | 
| 96 105 | 
             
                          sh("patch -p1 < #{patches_dir}/#{patch}")
         | 
| 97 106 | 
             
                        end
         | 
| 107 | 
            +
                        (package[:remove_paths] || []).each do |path|
         | 
| 108 | 
            +
                          rm_rf(path)
         | 
| 109 | 
            +
                        end
         | 
| 98 110 | 
             
                        sh("./autogen.sh") if package[:need_autogen]
         | 
| 99 | 
            -
                        sh("autoreconf  | 
| 111 | 
            +
                        sh("autoreconf --install") if package[:need_autoreconf]
         | 
| 100 112 | 
             
                        sh("./configure",
         | 
| 101 113 | 
             
                           "CPPFLAGS=#{cppflags(package)}",
         | 
| 102 114 | 
             
                           "LDFLAGS=#{ldflags(package)}",
         | 
| @@ -163,6 +175,18 @@ class GNOME2Win32BinaryBuildTask | |
| 163 175 | 
             
                package_root_dir + "patches"
         | 
| 164 176 | 
             
              end
         | 
| 165 177 |  | 
| 178 | 
            +
              def glib2_dir
         | 
| 179 | 
            +
                package_root_dir.parent + "glib2"
         | 
| 180 | 
            +
              end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
              def glib2_include_path
         | 
| 183 | 
            +
                "#{glib2_dir}/vendor/local/include"
         | 
| 184 | 
            +
              end
         | 
| 185 | 
            +
             | 
| 186 | 
            +
              def glib2_lib_path
         | 
| 187 | 
            +
                "#{glib2_dir}/vendor/local/lib"
         | 
| 188 | 
            +
              end
         | 
| 189 | 
            +
             | 
| 166 190 | 
             
              def rcairo_win32_dir
         | 
| 167 191 | 
             
                package_root_dir.parent.parent + "rcairo.win32"
         | 
| 168 192 | 
             
              end
         | 
| @@ -194,6 +218,9 @@ class GNOME2Win32BinaryBuildTask | |
| 194 218 |  | 
| 195 219 | 
             
              def cppflags(package)
         | 
| 196 220 | 
             
                include_paths = package[:include_paths] || []
         | 
| 221 | 
            +
                if @configuration.build_dependencies.include?("glib2")
         | 
| 222 | 
            +
                  include_paths += [glib2_include_path]
         | 
| 223 | 
            +
                end
         | 
| 197 224 | 
             
                include_paths += [
         | 
| 198 225 | 
             
                  rcairo_win32_include_path,
         | 
| 199 226 | 
             
                  dist_dir + 'include',
         | 
| @@ -206,6 +233,9 @@ class GNOME2Win32BinaryBuildTask | |
| 206 233 |  | 
| 207 234 | 
             
              def ldflags(package)
         | 
| 208 235 | 
             
                library_paths = package[:library_paths] || []
         | 
| 236 | 
            +
                if @configuration.build_dependencies.include?("glib2")
         | 
| 237 | 
            +
                  library_paths += [glib2_lib_path]
         | 
| 238 | 
            +
                end
         | 
| 209 239 | 
             
                library_paths += [
         | 
| 210 240 | 
             
                  rcairo_win32_lib_path,
         | 
| 211 241 | 
             
                  dist_dir + 'lib',
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: glib2
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 31
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 1
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 1. | 
| 8 | 
            +
              - 2
         | 
| 9 | 
            +
              - 0
         | 
| 10 | 
            +
              version: 1.2.0
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - The Ruby-GNOME2 Project Team
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date:  | 
| 18 | 
            +
            date: 2013-01-24 00:00:00 Z
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 21 21 | 
             
              name: pkg-config
         | 
| @@ -102,7 +102,6 @@ files: | |
| 102 102 | 
             
            - ext/glib2/rbglib_int64.c
         | 
| 103 103 | 
             
            - ext/glib2/rbglib_io_constants.c
         | 
| 104 104 | 
             
            - ext/glib2/glib2.def
         | 
| 105 | 
            -
            - ext/glib2/rbgobj_fundamental.c
         | 
| 106 105 | 
             
            - ext/glib2/rbgcompat.h
         | 
| 107 106 | 
             
            - ext/glib2/rbgobj_closure.c
         | 
| 108 107 | 
             
            - ext/glib2/rbgobject.c
         | 
| @@ -1,43 +0,0 @@ | |
| 1 | 
            -
            /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
         | 
| 2 | 
            -
            /*
         | 
| 3 | 
            -
             *  Copyright (C) 2011  Ruby-GNOME2 Project Team
         | 
| 4 | 
            -
             *  Copyright (C) 2007  Ruby-GNOME2 Project Team
         | 
| 5 | 
            -
             *
         | 
| 6 | 
            -
             *  This library is free software; you can redistribute it and/or
         | 
| 7 | 
            -
             *  modify it under the terms of the GNU Lesser General Public
         | 
| 8 | 
            -
             *  License as published by the Free Software Foundation; either
         | 
| 9 | 
            -
             *  version 2.1 of the License, or (at your option) any later version.
         | 
| 10 | 
            -
             *
         | 
| 11 | 
            -
             *  This library is distributed in the hope that it will be useful,
         | 
| 12 | 
            -
             *  but WITHOUT ANY WARRANTY; without even the implied warranty of
         | 
| 13 | 
            -
             *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
         | 
| 14 | 
            -
             *  Lesser General Public License for more details.
         | 
| 15 | 
            -
             *
         | 
| 16 | 
            -
             *  You should have received a copy of the GNU Lesser General Public
         | 
| 17 | 
            -
             *  License along with this library; if not, write to the Free Software
         | 
| 18 | 
            -
             *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
         | 
| 19 | 
            -
             *  MA  02110-1301  USA
         | 
| 20 | 
            -
             */
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            #include "rbgobject.h"
         | 
| 23 | 
            -
            #include "rbgprivate.h"
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            static GList *tables = NULL;
         | 
| 26 | 
            -
             | 
| 27 | 
            -
            void
         | 
| 28 | 
            -
            rbgobj_fund_define_fundamental(RGFundamental *fundamental)
         | 
| 29 | 
            -
            {
         | 
| 30 | 
            -
                RGConvertTable *table;
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                table = g_new0(RGConvertTable, 1);
         | 
| 33 | 
            -
                table->type = fundamental->type;
         | 
| 34 | 
            -
                table->get_superclass = fundamental->get_superclass;
         | 
| 35 | 
            -
                table->type_init_hook = fundamental->type_init_hook;
         | 
| 36 | 
            -
                table->rvalue2gvalue = fundamental->rvalue2gvalue;
         | 
| 37 | 
            -
                table->gvalue2rvalue = fundamental->gvalue2rvalue;
         | 
| 38 | 
            -
                table->initialize = fundamental->initialize;
         | 
| 39 | 
            -
                table->robj2instance = fundamental->robj2instance;
         | 
| 40 | 
            -
                table->instance2robj = fundamental->instance2robj;
         | 
| 41 | 
            -
                RG_DEF_CONVERSION(table);
         | 
| 42 | 
            -
                tables = g_list_prepend(tables, table);
         | 
| 43 | 
            -
            }
         |