fxruby 1.6.35-x86-mingw32 → 1.6.36-x86-mingw32
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.
- checksums.yaml +4 -4
 - data/.gitignore +12 -0
 - data/.travis.yml +45 -0
 - data/Gemfile +18 -0
 - data/{History.txt → History.md} +10 -0
 - data/Rakefile +119 -95
 - data/doap.rdf.erb +1 -1
 - data/ext/fox16_c/FXRbObjRegistry.cpp +169 -0
 - data/ext/fox16_c/FXRuby.cpp +110 -261
 - data/ext/fox16_c/extconf.rb +54 -101
 - data/ext/fox16_c/impl.cpp +2 -0
 - data/ext/fox16_c/include/FXRbObjRegistry.h +101 -0
 - data/ext/fox16_c/include/FXRuby.h +1 -2
 - data/ext/fox16_c/markfuncs.cpp +1 -2
 - data/fxruby.gemspec +53 -0
 - data/lib/2.0/fox16_c.so +0 -0
 - data/lib/2.1/fox16_c.so +0 -0
 - data/lib/2.2/fox16_c.so +0 -0
 - data/lib/2.3/fox16_c.so +0 -0
 - data/lib/2.4/fox16_c.so +0 -0
 - data/lib/fox16.rb +3 -3
 - data/lib/fox16/version.rb +1 -1
 - data/patches/libfox/1.6.53/0001-mingw-vsnprintf.diff +13 -0
 - data/ports/i686-w64-mingw32/bin/libFOX-1.6-0.dll +0 -0
 - data/ports/i686-w64-mingw32/bin/libfxscintilla-20.dll +0 -0
 - data/ports/i686-w64-mingw32/bin/libgcc_s_sjlj-1.dll +0 -0
 - data/ports/i686-w64-mingw32/bin/libpng16-16.dll +0 -0
 - data/ports/i686-w64-mingw32/bin/libstdc++-6.dll +0 -0
 - data/ports/i686-w64-mingw32/bin/libtiff-5.dll +0 -0
 - data/ports/i686-w64-mingw32/bin/libwinpthread-1.dll +0 -0
 - data/ports/i686-w64-mingw32/bin/zlib1.dll +0 -0
 - data/test/TS_All.rb +6 -3
 - data/test/dummy.xorg.conf +140 -0
 - metadata +19 -149
 - data/Manifest.txt +0 -1219
 - data/ports/i686-w64-mingw32/bin/libjpeg-8.dll +0 -0
 
    
        data/ext/fox16_c/FXRuby.cpp
    CHANGED
    
    | 
         @@ -29,6 +29,7 @@ 
     | 
|
| 
       29 
29 
     | 
    
         
             
            #endif
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            #include "FXRbCommon.h"
         
     | 
| 
      
 32 
     | 
    
         
            +
            #include "FXRbObjRegistry.h"
         
     | 
| 
       32 
33 
     | 
    
         
             
            #include "impl.h"
         
     | 
| 
       33 
34 
     | 
    
         | 
| 
       34 
35 
     | 
    
         
             
            // SWIG runtime functions we need
         
     | 
| 
         @@ -79,82 +80,9 @@ swig_type_info *FXRbTypeQuery(const char *desc){ 
     | 
|
| 
       79 
80 
     | 
    
         
             
              }
         
     | 
| 
       80 
81 
     | 
    
         | 
| 
       81 
82 
     | 
    
         | 
| 
       82 
     | 
    
         
            -
            /**
         
     | 
| 
       83 
     | 
    
         
            -
             * The FXRuby_Objects hash table basically maps C++ objects to Ruby instances.
         
     | 
| 
       84 
     | 
    
         
            -
             * Each key in the table is a pointer to a C++ object we've seen before, and
         
     | 
| 
       85 
     | 
    
         
            -
             * the corresponding value is an FXRubyObjDesc struct (see below) that tells
         
     | 
| 
       86 
     | 
    
         
            -
             * us which Ruby instance corresponds to that C++ object.
         
     | 
| 
       87 
     | 
    
         
            -
             */
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
            static st_table * FXRuby_Objects;
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
            static const char * const safe_rb_obj_classname(VALUE obj)
         
     | 
| 
       92 
     | 
    
         
            -
            {
         
     | 
| 
       93 
     | 
    
         
            -
              int tdata = TYPE(obj)==T_DATA;
         
     | 
| 
       94 
     | 
    
         
            -
              if( (tdata && FXRbIsInGC(DATA_PTR(obj)))
         
     | 
| 
       95 
     | 
    
         
            -
            #ifdef HAVE_RB_DURING_GC
         
     | 
| 
       96 
     | 
    
         
            -
                  || rb_during_gc()
         
     | 
| 
       97 
     | 
    
         
            -
            #endif
         
     | 
| 
       98 
     | 
    
         
            -
              ){
         
     | 
| 
       99 
     | 
    
         
            -
                /* It's not safe to call rb_obj_classname() during GC.
         
     | 
| 
       100 
     | 
    
         
            -
                 * Return dummy value in this case. */
         
     | 
| 
       101 
     | 
    
         
            -
                return "during GC";
         
     | 
| 
       102 
     | 
    
         
            -
              } else if (tdata) {
         
     | 
| 
       103 
     | 
    
         
            -
                return rb_obj_classname(obj);
         
     | 
| 
       104 
     | 
    
         
            -
              } else {
         
     | 
| 
       105 
     | 
    
         
            -
                return "no T_DATA";
         
     | 
| 
       106 
     | 
    
         
            -
              }
         
     | 
| 
       107 
     | 
    
         
            -
            }
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
            /**
         
     | 
| 
       110 
     | 
    
         
            -
             * Each value in the FXRuby_Objects hash table is an instance of this
         
     | 
| 
       111 
     | 
    
         
            -
             * struct. It identifies the Ruby instance associated with a C++ object.
         
     | 
| 
       112 
     | 
    
         
            -
             * It also indicates whether this is merely a "borrowed" reference to
         
     | 
| 
       113 
     | 
    
         
            -
             * some C++ object (i.e. it's not one we need to destroy later).
         
     | 
| 
       114 
     | 
    
         
            -
             *
         
     | 
| 
       115 
     | 
    
         
            -
             * in_gc is set for FXWindows that are in garbage collection and must
         
     | 
| 
       116 
     | 
    
         
            -
             * not call ruby code anymore.
         
     | 
| 
       117 
     | 
    
         
            -
             */
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
            struct FXRubyObjDesc {
         
     | 
| 
       120 
     | 
    
         
            -
              VALUE obj;
         
     | 
| 
       121 
     | 
    
         
            -
              bool borrowed;
         
     | 
| 
       122 
     | 
    
         
            -
              bool in_gc;
         
     | 
| 
       123 
     | 
    
         
            -
              };
         
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
            /**
         
     | 
| 
       127 
     | 
    
         
            -
             * FXRbNewPointerObj() is a wrapper around SWIG_Ruby_NewPointerObj() that also
         
     | 
| 
       128 
     | 
    
         
            -
             * registers this C++ object & Ruby instance pair in our FXRuby_Objects
         
     | 
| 
       129 
     | 
    
         
            -
             * hash table. This function should only get called for methods that return
         
     | 
| 
       130 
     | 
    
         
            -
             * a reference to an already-existing C++ object (i.e. one that FOX "owns")
         
     | 
| 
       131 
     | 
    
         
            -
             * and for that reason we mark these objects as "borrowed".
         
     | 
| 
       132 
     | 
    
         
            -
             */
         
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
       134 
83 
     | 
    
         
             
            VALUE FXRbNewPointerObj(void *ptr,swig_type_info* ty){
         
     | 
| 
       135 
     | 
    
         
            -
               
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
                VALUE obj;
         
     | 
| 
       138 
     | 
    
         
            -
                FXRubyObjDesc *desc;
         
     | 
| 
       139 
     | 
    
         
            -
                if(FXMALLOC(&desc,FXRubyObjDesc,1)){
         
     | 
| 
       140 
     | 
    
         
            -
                  obj=SWIG_Ruby_NewPointerObj(ptr,ty,1);
         
     | 
| 
       141 
     | 
    
         
            -
                  FXTRACE((1,"FXRbNewPointerObj(foxObj=%p) => rubyObj=%p (%s)\n",ptr,(void *)obj,safe_rb_obj_classname(obj)));
         
     | 
| 
       142 
     | 
    
         
            -
                  desc->obj=obj;
         
     | 
| 
       143 
     | 
    
         
            -
                  desc->borrowed=true;
         
     | 
| 
       144 
     | 
    
         
            -
                  desc->in_gc=false;
         
     | 
| 
       145 
     | 
    
         
            -
                  int overwritten = st_insert(FXRuby_Objects,reinterpret_cast<st_data_t>(ptr),reinterpret_cast<st_data_t>(desc));
         
     | 
| 
       146 
     | 
    
         
            -
                  FXASSERT(!overwritten);
         
     | 
| 
       147 
     | 
    
         
            -
                  return obj;
         
     | 
| 
       148 
     | 
    
         
            -
                  }
         
     | 
| 
       149 
     | 
    
         
            -
                else{
         
     | 
| 
       150 
     | 
    
         
            -
                  FXASSERT(FALSE);
         
     | 
| 
       151 
     | 
    
         
            -
                  return Qnil;
         
     | 
| 
       152 
     | 
    
         
            -
                  }
         
     | 
| 
       153 
     | 
    
         
            -
                }
         
     | 
| 
       154 
     | 
    
         
            -
              else{
         
     | 
| 
       155 
     | 
    
         
            -
                return Qnil;
         
     | 
| 
       156 
     | 
    
         
            -
                }
         
     | 
| 
       157 
     | 
    
         
            -
              }
         
     | 
| 
      
 84 
     | 
    
         
            +
              return FXRbObjRegistry::main.NewBorrowedObj(ptr,ty);
         
     | 
| 
      
 85 
     | 
    
         
            +
            }
         
     | 
| 
       158 
86 
     | 
    
         | 
| 
       159 
87 
     | 
    
         | 
| 
       160 
88 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -163,168 +91,27 @@ VALUE FXRbNewPointerObj(void *ptr,swig_type_info* ty){ 
     | 
|
| 
       163 
91 
     | 
    
         
             
             */
         
     | 
| 
       164 
92 
     | 
    
         | 
| 
       165 
93 
     | 
    
         
             
            bool FXRbIsBorrowed(void* ptr){
         
     | 
| 
       166 
     | 
    
         
            -
               
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
       168 
     | 
    
         
            -
              if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(ptr),reinterpret_cast<st_data_t *>(&desc))!=0){
         
     | 
| 
       169 
     | 
    
         
            -
                return desc->borrowed;
         
     | 
| 
       170 
     | 
    
         
            -
                }
         
     | 
| 
       171 
     | 
    
         
            -
              else{
         
     | 
| 
       172 
     | 
    
         
            -
                return true;
         
     | 
| 
       173 
     | 
    
         
            -
                }
         
     | 
| 
       174 
     | 
    
         
            -
              }
         
     | 
| 
      
 94 
     | 
    
         
            +
              return FXRbObjRegistry::main.IsBorrowed(ptr);
         
     | 
| 
      
 95 
     | 
    
         
            +
            }
         
     | 
| 
       175 
96 
     | 
    
         | 
| 
       176 
97 
     | 
    
         
             
            bool FXRbSetInGC(const void* ptr, bool enabled){
         
     | 
| 
       177 
     | 
    
         
            -
               
     | 
| 
       178 
     | 
    
         
            -
             
     | 
| 
       179 
     | 
    
         
            -
              if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(ptr),reinterpret_cast<st_data_t *>(&desc))!=0){
         
     | 
| 
       180 
     | 
    
         
            -
                desc->in_gc=enabled;
         
     | 
| 
       181 
     | 
    
         
            -
                return enabled;
         
     | 
| 
       182 
     | 
    
         
            -
                }
         
     | 
| 
       183 
     | 
    
         
            -
              return false;
         
     | 
| 
       184 
     | 
    
         
            -
              }
         
     | 
| 
      
 98 
     | 
    
         
            +
              return FXRbObjRegistry::main.SetInGC(ptr, enabled);
         
     | 
| 
      
 99 
     | 
    
         
            +
            }
         
     | 
| 
       185 
100 
     | 
    
         | 
| 
       186 
101 
     | 
    
         
             
            bool FXRbIsInGC(const void* ptr){
         
     | 
| 
       187 
     | 
    
         
            -
               
     | 
| 
       188 
     | 
    
         
            -
              FXRubyObjDesc *desc;
         
     | 
| 
       189 
     | 
    
         
            -
             
     | 
| 
       190 
     | 
    
         
            -
            #ifdef HAVE_RB_DURING_GC
         
     | 
| 
       191 
     | 
    
         
            -
              if( rb_during_gc() ){
         
     | 
| 
       192 
     | 
    
         
            -
                return true;
         
     | 
| 
       193 
     | 
    
         
            -
              }
         
     | 
| 
       194 
     | 
    
         
            -
            #endif
         
     | 
| 
       195 
     | 
    
         
            -
              if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(ptr),reinterpret_cast<st_data_t *>(&desc))!=0){
         
     | 
| 
       196 
     | 
    
         
            -
                return desc->in_gc;
         
     | 
| 
       197 
     | 
    
         
            -
              }
         
     | 
| 
       198 
     | 
    
         
            -
              return false;
         
     | 
| 
      
 102 
     | 
    
         
            +
              return FXRbObjRegistry::main.IsInGC(ptr);
         
     | 
| 
       199 
103 
     | 
    
         
             
            }
         
     | 
| 
       200 
104 
     | 
    
         | 
| 
       201 
105 
     | 
    
         | 
| 
       202 
     | 
    
         
            -
             
     | 
| 
       203 
     | 
    
         
            -
              
     | 
| 
       204 
     | 
    
         
            -
              
     | 
| 
       205 
     | 
    
         
            -
             
     | 
| 
       206 
     | 
    
         
            -
            void* FXRbConvertPtr(VALUE obj,swig_type_info* ty){
         
     | 
| 
       207 
     | 
    
         
            -
              void *ptr;
         
     | 
| 
       208 
     | 
    
         
            -
              SWIG_ConvertPtr(obj,&ptr,ty,1);
         
     | 
| 
       209 
     | 
    
         
            -
              return ptr;
         
     | 
| 
       210 
     | 
    
         
            -
              }
         
     | 
| 
       211 
     | 
    
         
            -
             
     | 
| 
       212 
     | 
    
         
            -
             
     | 
| 
       213 
     | 
    
         
            -
            // Should we catch exceptions thrown by message handlers?
         
     | 
| 
       214 
     | 
    
         
            -
            FXbool FXRbCatchExceptions=FALSE;
         
     | 
| 
       215 
     | 
    
         
            -
             
     | 
| 
       216 
     | 
    
         
            -
            // Returns an FXInputHandle for this Ruby file object
         
     | 
| 
       217 
     | 
    
         
            -
            FXInputHandle FXRbGetReadFileHandle(VALUE obj,FXuint mode) {
         
     | 
| 
       218 
     | 
    
         
            -
              int fd;
         
     | 
| 
       219 
     | 
    
         
            -
              fd = FIX2INT(rb_funcall(obj, rb_intern("fileno"), 0));
         
     | 
| 
       220 
     | 
    
         
            -
            #ifdef WIN32
         
     | 
| 
       221 
     | 
    
         
            -
            #ifdef __CYGWIN__
         
     | 
| 
       222 
     | 
    
         
            -
              return (FXInputHandle) get_osfhandle(fd);
         
     | 
| 
       223 
     | 
    
         
            -
            #else
         
     | 
| 
       224 
     | 
    
         
            -
              WSAEVENT hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
         
     | 
| 
       225 
     | 
    
         
            -
              long events = 0;
         
     | 
| 
       226 
     | 
    
         
            -
              if(mode&INPUT_READ) events |= FD_READ|FD_ACCEPT|FD_OOB;
         
     | 
| 
       227 
     | 
    
         
            -
              if(mode&INPUT_EXCEPT) events |= FD_CLOSE|FD_QOS|FD_GROUP_QOS|FD_ROUTING_INTERFACE_CHANGE|FD_ADDRESS_LIST_CHANGE;
         
     | 
| 
       228 
     | 
    
         
            -
              if ( WSAEventSelect(_get_osfhandle(fd), hEvent, events) == SOCKET_ERROR ) {
         
     | 
| 
       229 
     | 
    
         
            -
                WSACloseEvent( hEvent );
         
     | 
| 
       230 
     | 
    
         
            -
                rb_raise( rb_eRuntimeError, "WSAEventSelect sockett error: %d", WSAGetLastError() );
         
     | 
| 
       231 
     | 
    
         
            -
              }
         
     | 
| 
       232 
     | 
    
         
            -
              rb_iv_set(obj, "FXRuby::FXRbGetReadFileHandle", ULL2NUM((intptr_t)hEvent));
         
     | 
| 
       233 
     | 
    
         
            -
              return (FXInputHandle) hEvent;
         
     | 
| 
       234 
     | 
    
         
            -
            #endif
         
     | 
| 
       235 
     | 
    
         
            -
            #else
         
     | 
| 
       236 
     | 
    
         
            -
              return (FXInputHandle) fd;
         
     | 
| 
       237 
     | 
    
         
            -
            #endif
         
     | 
| 
       238 
     | 
    
         
            -
              }
         
     | 
| 
       239 
     | 
    
         
            -
             
     | 
| 
       240 
     | 
    
         
            -
            void FXRbRemoveReadFileHandle(VALUE obj,FXuint mode) {
         
     | 
| 
       241 
     | 
    
         
            -
            #ifdef WIN32
         
     | 
| 
       242 
     | 
    
         
            -
              WSAEVENT hEvent = (HANDLE)NUM2ULL(rb_iv_get(obj, "FXRuby::FXRbGetReadFileHandle"));
         
     | 
| 
       243 
     | 
    
         
            -
              CloseHandle( hEvent );
         
     | 
| 
       244 
     | 
    
         
            -
            #endif
         
     | 
| 
      
 106 
     | 
    
         
            +
            // Register this Ruby class instance
         
     | 
| 
      
 107 
     | 
    
         
            +
            void FXRbRegisterRubyObj(VALUE rubyObj,const void* foxObj) {
         
     | 
| 
      
 108 
     | 
    
         
            +
              return FXRbObjRegistry::main.RegisterRubyObj(rubyObj, foxObj);
         
     | 
| 
       245 
109 
     | 
    
         
             
            }
         
     | 
| 
       246 
110 
     | 
    
         | 
| 
       247 
     | 
    
         
            -
             
     | 
| 
       248 
     | 
    
         
            -
             
     | 
| 
       249 
     | 
    
         
            -
              int fd;
         
     | 
| 
       250 
     | 
    
         
            -
            #if defined(RUBINIUS)
         
     | 
| 
       251 
     | 
    
         
            -
              VALUE vwrite = rb_intern("@write");
         
     | 
| 
       252 
     | 
    
         
            -
              if(rb_ivar_defined(obj, vwrite)) obj = rb_ivar_get(obj, vwrite);
         
     | 
| 
       253 
     | 
    
         
            -
              fd = FIX2INT(rb_funcall(obj, rb_intern("fileno"), 0));
         
     | 
| 
       254 
     | 
    
         
            -
            #elif defined(RUBY_1_8)
         
     | 
| 
       255 
     | 
    
         
            -
              OpenFile *fptr;
         
     | 
| 
       256 
     | 
    
         
            -
              GetOpenFile(obj, fptr);
         
     | 
| 
       257 
     | 
    
         
            -
              FILE *fpw=GetWriteFile(fptr);
         
     | 
| 
       258 
     | 
    
         
            -
              fd = fileno(fpw);
         
     | 
| 
       259 
     | 
    
         
            -
            #else
         
     | 
| 
       260 
     | 
    
         
            -
              rb_io_t *fptr;
         
     | 
| 
       261 
     | 
    
         
            -
              GetOpenFile(obj, fptr);
         
     | 
| 
       262 
     | 
    
         
            -
              VALUE wrio = fptr->tied_io_for_writing;
         
     | 
| 
       263 
     | 
    
         
            -
              if(wrio) obj = wrio;
         
     | 
| 
       264 
     | 
    
         
            -
              fd = FIX2INT(rb_funcall(obj, rb_intern("fileno"), 0));
         
     | 
| 
       265 
     | 
    
         
            -
            #endif
         
     | 
| 
       266 
     | 
    
         
            -
            #ifdef WIN32
         
     | 
| 
       267 
     | 
    
         
            -
            #ifdef __CYGWIN__
         
     | 
| 
       268 
     | 
    
         
            -
              return (FXInputHandle) get_osfhandle(fd);
         
     | 
| 
       269 
     | 
    
         
            -
            #else
         
     | 
| 
       270 
     | 
    
         
            -
              WSAEVENT hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
         
     | 
| 
       271 
     | 
    
         
            -
              long events = 0;
         
     | 
| 
       272 
     | 
    
         
            -
              if(mode&INPUT_WRITE) events |= FD_WRITE|FD_CONNECT;
         
     | 
| 
       273 
     | 
    
         
            -
              if(mode&INPUT_EXCEPT) events |= FD_CLOSE|FD_QOS|FD_GROUP_QOS|FD_ROUTING_INTERFACE_CHANGE|FD_ADDRESS_LIST_CHANGE;
         
     | 
| 
       274 
     | 
    
         
            -
              if ( WSAEventSelect(_get_osfhandle(fd), hEvent, events) == SOCKET_ERROR ) {
         
     | 
| 
       275 
     | 
    
         
            -
                WSACloseEvent( hEvent );
         
     | 
| 
       276 
     | 
    
         
            -
                rb_raise( rb_eRuntimeError, "WSAEventSelect sockettt error: %d", WSAGetLastError() );
         
     | 
| 
       277 
     | 
    
         
            -
              }
         
     | 
| 
       278 
     | 
    
         
            -
              rb_iv_set(obj, "FXRuby::FXRbGetWriteFileHandle", ULL2NUM((intptr_t)hEvent));
         
     | 
| 
       279 
     | 
    
         
            -
              return (FXInputHandle) hEvent;
         
     | 
| 
       280 
     | 
    
         
            -
            #endif
         
     | 
| 
       281 
     | 
    
         
            -
            #else
         
     | 
| 
       282 
     | 
    
         
            -
              return (FXInputHandle) fd;
         
     | 
| 
       283 
     | 
    
         
            -
            #endif
         
     | 
| 
       284 
     | 
    
         
            -
              }
         
     | 
| 
       285 
     | 
    
         
            -
             
     | 
| 
       286 
     | 
    
         
            -
            void FXRbRemoveWriteFileHandle(VALUE obj,FXuint mode) {
         
     | 
| 
       287 
     | 
    
         
            -
            #ifdef WIN32
         
     | 
| 
       288 
     | 
    
         
            -
              WSAEVENT hEvent = (HANDLE)NUM2ULL(rb_iv_get(obj, "FXRuby::FXRbGetWriteFileHandle"));
         
     | 
| 
       289 
     | 
    
         
            -
              CloseHandle( hEvent );
         
     | 
| 
       290 
     | 
    
         
            -
            #endif
         
     | 
| 
      
 111 
     | 
    
         
            +
            static void FXRbUnregisterRubyObj2(const void* foxObj, bool alsoOwned){
         
     | 
| 
      
 112 
     | 
    
         
            +
              return FXRbObjRegistry::main.UnregisterRubyObj(foxObj, alsoOwned);
         
     | 
| 
       291 
113 
     | 
    
         
             
            }
         
     | 
| 
       292 
114 
     | 
    
         | 
| 
       293 
     | 
    
         
            -
             
     | 
| 
       294 
     | 
    
         
            -
            // Register this Ruby class instance
         
     | 
| 
       295 
     | 
    
         
            -
            void FXRbRegisterRubyObj(VALUE rubyObj,const void* foxObj) {
         
     | 
| 
       296 
     | 
    
         
            -
              FXASSERT(!NIL_P(rubyObj));
         
     | 
| 
       297 
     | 
    
         
            -
              FXASSERT(foxObj!=0);
         
     | 
| 
       298 
     | 
    
         
            -
              FXRubyObjDesc* desc;
         
     | 
| 
       299 
     | 
    
         
            -
              FXTRACE((1,"FXRbRegisterRubyObj(rubyObj=%p (%s),foxObj=%p)\n",(void *)rubyObj,safe_rb_obj_classname(rubyObj),foxObj));
         
     | 
| 
       300 
     | 
    
         
            -
              if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(const_cast<void*>(foxObj)),reinterpret_cast<st_data_t *>(&desc))!=0){
         
     | 
| 
       301 
     | 
    
         
            -
                FXASSERT(desc->borrowed);
         
     | 
| 
       302 
     | 
    
         
            -
                /* There is already a Ruby object registered for this foxObj.
         
     | 
| 
       303 
     | 
    
         
            -
                 * This can happen, if libfox calls methods out of the C++ object constructor,
         
     | 
| 
       304 
     | 
    
         
            -
                 * that can be overwritten in Ruby (like changeFocus) with the object as
         
     | 
| 
       305 
     | 
    
         
            -
                 * parameter. FXFileSelector is one example.
         
     | 
| 
       306 
     | 
    
         
            -
                 * To avoid double references to the same foxObj from different Ruby objects,
         
     | 
| 
       307 
     | 
    
         
            -
                 * we decouple the foxObj from previoius ruby object and point to the new one.
         
     | 
| 
       308 
     | 
    
         
            -
                 */
         
     | 
| 
       309 
     | 
    
         
            -
                DATA_PTR(desc->obj) = 0;
         
     | 
| 
       310 
     | 
    
         
            -
                desc->obj=rubyObj;
         
     | 
| 
       311 
     | 
    
         
            -
                desc->borrowed=false;
         
     | 
| 
       312 
     | 
    
         
            -
                }
         
     | 
| 
       313 
     | 
    
         
            -
              else{
         
     | 
| 
       314 
     | 
    
         
            -
                if(FXMALLOC(&desc,FXRubyObjDesc,1)){
         
     | 
| 
       315 
     | 
    
         
            -
                  desc->obj=rubyObj;
         
     | 
| 
       316 
     | 
    
         
            -
                  desc->borrowed=false;
         
     | 
| 
       317 
     | 
    
         
            -
                  desc->in_gc=false;
         
     | 
| 
       318 
     | 
    
         
            -
                  int overwritten = st_insert(FXRuby_Objects,reinterpret_cast<st_data_t>(const_cast<void*>(foxObj)),reinterpret_cast<st_data_t>(desc));
         
     | 
| 
       319 
     | 
    
         
            -
                  FXASSERT(!overwritten);
         
     | 
| 
       320 
     | 
    
         
            -
                  }
         
     | 
| 
       321 
     | 
    
         
            -
                else{
         
     | 
| 
       322 
     | 
    
         
            -
                  FXASSERT(FALSE);
         
     | 
| 
       323 
     | 
    
         
            -
                  }
         
     | 
| 
       324 
     | 
    
         
            -
                }
         
     | 
| 
       325 
     | 
    
         
            -
              FXASSERT(FXRbGetRubyObj(foxObj,false)==rubyObj);
         
     | 
| 
       326 
     | 
    
         
            -
              }
         
     | 
| 
       327 
     | 
    
         
            -
             
     | 
| 
       328 
115 
     | 
    
         
             
            /**
         
     | 
| 
       329 
116 
     | 
    
         
             
             * Remove this mapping between a Ruby instance and a C++ object
         
     | 
| 
       330 
117 
     | 
    
         
             
             */
         
     | 
| 
         @@ -332,20 +119,6 @@ void FXRbUnregisterRubyObj(const void* foxObj){ 
     | 
|
| 
       332 
119 
     | 
    
         
             
              FXRbUnregisterRubyObj2(foxObj, true);
         
     | 
| 
       333 
120 
     | 
    
         
             
            }
         
     | 
| 
       334 
121 
     | 
    
         | 
| 
       335 
     | 
    
         
            -
            void FXRbUnregisterRubyObj2(const void* foxObj, bool alsoOwned){
         
     | 
| 
       336 
     | 
    
         
            -
              if(foxObj!=0){
         
     | 
| 
       337 
     | 
    
         
            -
                FXRubyObjDesc* desc;
         
     | 
| 
       338 
     | 
    
         
            -
                if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(const_cast<void*>(foxObj)),reinterpret_cast<st_data_t *>(&desc))!=0){
         
     | 
| 
       339 
     | 
    
         
            -
                  if( !alsoOwned && !desc->borrowed ) return;
         
     | 
| 
       340 
     | 
    
         
            -
                  FXTRACE((1,"FXRbUnregisterRubyObj(rubyObj=%p (%s),foxObj=%p)\n",(void *)desc->obj,safe_rb_obj_classname(desc->obj),foxObj));
         
     | 
| 
       341 
     | 
    
         
            -
                  DATA_PTR(desc->obj)=0;
         
     | 
| 
       342 
     | 
    
         
            -
                  FXFREE(&desc);
         
     | 
| 
       343 
     | 
    
         
            -
                  st_delete(FXRuby_Objects,reinterpret_cast<st_data_t *>(const_cast<void**>(&foxObj)),reinterpret_cast<st_data_t *>(0));
         
     | 
| 
       344 
     | 
    
         
            -
                  FXASSERT(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(const_cast<void*>(foxObj)),reinterpret_cast<st_data_t *>(0))==0);
         
     | 
| 
       345 
     | 
    
         
            -
                  }
         
     | 
| 
       346 
     | 
    
         
            -
                }
         
     | 
| 
       347 
     | 
    
         
            -
              }
         
     | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
       349 
122 
     | 
    
         
             
            void FXRbUnregisterBorrowedRubyObj(const void* foxObj){
         
     | 
| 
       350 
123 
     | 
    
         
             
              FXRbUnregisterRubyObj2( foxObj, false );
         
     | 
| 
       351 
124 
     | 
    
         
             
            };
         
     | 
| 
         @@ -380,18 +153,9 @@ VALUE to_ruby(const FXObject* obj){ 
     | 
|
| 
       380 
153 
     | 
    
         
             
             * Return the registered Ruby class instance associated with this
         
     | 
| 
       381 
154 
     | 
    
         
             
             * FOX object, or Qnil if not found.
         
     | 
| 
       382 
155 
     | 
    
         
             
             */
         
     | 
| 
       383 
     | 
    
         
            -
            VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed, bool  
     | 
| 
       384 
     | 
    
         
            -
               
     | 
| 
       385 
     | 
    
         
            -
             
     | 
| 
       386 
     | 
    
         
            -
                FXASSERT(desc!=0);
         
     | 
| 
       387 
     | 
    
         
            -
                if(alsoBorrowed || !desc->borrowed){
         
     | 
| 
       388 
     | 
    
         
            -
                  const char *classname = in_gc ? "in GC" : safe_rb_obj_classname(desc->obj);
         
     | 
| 
       389 
     | 
    
         
            -
                  FXTRACE((2,"FXRbGetRubyObj(foxObj=%p) => rubyObj=%p (%s)\n", foxObj, (void *)desc->obj, classname));
         
     | 
| 
       390 
     | 
    
         
            -
                  return desc->obj;
         
     | 
| 
       391 
     | 
    
         
            -
                  }
         
     | 
| 
       392 
     | 
    
         
            -
                }
         
     | 
| 
       393 
     | 
    
         
            -
              return Qnil;
         
     | 
| 
       394 
     | 
    
         
            -
              }
         
     | 
| 
      
 156 
     | 
    
         
            +
            VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed, bool in_gc_mark){
         
     | 
| 
      
 157 
     | 
    
         
            +
              return FXRbObjRegistry::main.GetRubyObj(foxObj, alsoBorrowed, in_gc_mark);
         
     | 
| 
      
 158 
     | 
    
         
            +
            }
         
     | 
| 
       395 
159 
     | 
    
         | 
| 
       396 
160 
     | 
    
         
             
            /**
         
     | 
| 
       397 
161 
     | 
    
         
             
             * Return the registered Ruby class instance associated with this
         
     | 
| 
         @@ -438,7 +202,7 @@ void FXRbGcMark(void *obj){ 
     | 
|
| 
       438 
202 
     | 
    
         
             
                 * example program works if you invoke the GC in ShutterWindow#create;
         
     | 
| 
       439 
203 
     | 
    
         
             
                 * make sure that the shutter items' contents don't get blown away!
         
     | 
| 
       440 
204 
     | 
    
         
             
                 */
         
     | 
| 
       441 
     | 
    
         
            -
                VALUE value=FXRbGetRubyObj(obj,true, true);
         
     | 
| 
      
 205 
     | 
    
         
            +
                VALUE value=FXRbGetRubyObj(obj, true, true);
         
     | 
| 
       442 
206 
     | 
    
         
             
                if(!NIL_P(value)){
         
     | 
| 
       443 
207 
     | 
    
         
             
                  rb_gc_mark(value);
         
     | 
| 
       444 
208 
     | 
    
         
             
                  }
         
     | 
| 
         @@ -522,7 +286,7 @@ VALUE FXRbMakeArray(const FXSegment* segments,FXuint nsegments){ 
     | 
|
| 
       522 
286 
     | 
    
         
             
            // Returns a Ruby array of FXColor values
         
     | 
| 
       523 
287 
     | 
    
         
             
            VALUE FXRbMakeColorArray(const FXColor* colors,FXint w,FXint h){
         
     | 
| 
       524 
288 
     | 
    
         
             
              VALUE result=rb_ary_new();
         
     | 
| 
       525 
     | 
    
         
            -
               
     | 
| 
      
 289 
     | 
    
         
            +
              FXuint size=w*h;
         
     | 
| 
       526 
290 
     | 
    
         
             
              for(FXuint i=0; i<size; i++)
         
     | 
| 
       527 
291 
     | 
    
         
             
                rb_ary_push(result,to_ruby(colors[i]));
         
     | 
| 
       528 
292 
     | 
    
         
             
              return result;
         
     | 
| 
         @@ -575,7 +339,6 @@ FXColor *FXRbConvertToFXColors(VALUE string_or_ary, FXuint *opts){ 
     | 
|
| 
       575 
339 
     | 
    
         
             
             */
         
     | 
| 
       576 
340 
     | 
    
         
             
            static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector sel,void* ptr){
         
     | 
| 
       577 
341 
     | 
    
         
             
              FXTRACE((1,"FXRbConvertMessageData(%s(%p),FXSEL(%s,%d),%p)\n",sender->getClassName(),sender,FXDebugTarget::messageTypeName[FXSELTYPE(sel)],FXSELID(sel),ptr));
         
     | 
| 
       578 
     | 
    
         
            -
              FXInputHandle fff;
         
     | 
| 
       579 
342 
     | 
    
         
             
              FXushort type=FXSELTYPE(sel);
         
     | 
| 
       580 
343 
     | 
    
         
             
              FXushort id=FXSELID(sel);
         
     | 
| 
       581 
344 
     | 
    
         | 
| 
         @@ -642,11 +405,6 @@ static VALUE FXRbConvertMessageData(FXObject* sender,FXObject* recv,FXSelector s 
     | 
|
| 
       642 
405 
     | 
    
         
             
              else if(type==SEL_IO_READ ||
         
     | 
| 
       643 
406 
     | 
    
         
             
                      type==SEL_IO_WRITE ||
         
     | 
| 
       644 
407 
     | 
    
         
             
            	  type==SEL_IO_EXCEPT){
         
     | 
| 
       645 
     | 
    
         
            -
            #ifdef WIN32
         
     | 
| 
       646 
     | 
    
         
            -
                fff=reinterpret_cast<FXInputHandle>(ptr);
         
     | 
| 
       647 
     | 
    
         
            -
            #else
         
     | 
| 
       648 
     | 
    
         
            -
                fff=static_cast<FXInputHandle>(reinterpret_cast<long>(ptr));
         
     | 
| 
       649 
     | 
    
         
            -
            #endif
         
     | 
| 
       650 
408 
     | 
    
         
             
                return Qnil;
         
     | 
| 
       651 
409 
     | 
    
         
             
                }
         
     | 
| 
       652 
410 
     | 
    
         
             
              else if(type==SEL_CLOSE ||
         
     | 
| 
         @@ -1368,6 +1126,10 @@ static VALUE handle_rescue(VALUE args,VALUE error){ 
     | 
|
| 
       1368 
1126 
     | 
    
         
             
              }
         
     | 
| 
       1369 
1127 
     | 
    
         | 
| 
       1370 
1128 
     | 
    
         | 
| 
      
 1129 
     | 
    
         
            +
            // Should we catch exceptions thrown by message handlers?
         
     | 
| 
      
 1130 
     | 
    
         
            +
            FXbool FXRbCatchExceptions=FALSE;
         
     | 
| 
      
 1131 
     | 
    
         
            +
             
     | 
| 
      
 1132 
     | 
    
         
            +
             
     | 
| 
       1371 
1133 
     | 
    
         
             
            // Call the designated function and return its result (which should be a long).
         
     | 
| 
       1372 
1134 
     | 
    
         
             
            long FXRbHandleMessage_gvlcb(FXObject* recv,ID func,FXObject* sender,FXSelector key,void* ptr){
         
     | 
| 
       1373 
1135 
     | 
    
         
             
              FXRbHandleArgs hArgs;
         
     | 
| 
         @@ -1805,6 +1567,94 @@ FXbool FXRbGLViewer::sortProc(FXfloat*& buffer,FXint& used,FXint& size){ 
     | 
|
| 
       1805 
1567 
     | 
    
         
             
              return TRUE;
         
     | 
| 
       1806 
1568 
     | 
    
         
             
              }
         
     | 
| 
       1807 
1569 
     | 
    
         | 
| 
      
 1570 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1571 
     | 
    
         
            +
             * FXRbConvertPtr() is just a wrapper around SWIG_ConvertPtr().
         
     | 
| 
      
 1572 
     | 
    
         
            +
             */
         
     | 
| 
      
 1573 
     | 
    
         
            +
             
     | 
| 
      
 1574 
     | 
    
         
            +
            void* FXRbConvertPtr(VALUE obj,swig_type_info* ty){
         
     | 
| 
      
 1575 
     | 
    
         
            +
              void *ptr;
         
     | 
| 
      
 1576 
     | 
    
         
            +
              SWIG_ConvertPtr(obj,&ptr,ty,1);
         
     | 
| 
      
 1577 
     | 
    
         
            +
              return ptr;
         
     | 
| 
      
 1578 
     | 
    
         
            +
              }
         
     | 
| 
      
 1579 
     | 
    
         
            +
             
     | 
| 
      
 1580 
     | 
    
         
            +
             
     | 
| 
      
 1581 
     | 
    
         
            +
            // Returns an FXInputHandle for this Ruby file object
         
     | 
| 
      
 1582 
     | 
    
         
            +
            FXInputHandle FXRbGetReadFileHandle(VALUE obj,FXuint mode) {
         
     | 
| 
      
 1583 
     | 
    
         
            +
              int fd;
         
     | 
| 
      
 1584 
     | 
    
         
            +
              fd = FIX2INT(rb_funcall(obj, rb_intern("fileno"), 0));
         
     | 
| 
      
 1585 
     | 
    
         
            +
            #ifdef WIN32
         
     | 
| 
      
 1586 
     | 
    
         
            +
            #ifdef __CYGWIN__
         
     | 
| 
      
 1587 
     | 
    
         
            +
              return (FXInputHandle) get_osfhandle(fd);
         
     | 
| 
      
 1588 
     | 
    
         
            +
            #else
         
     | 
| 
      
 1589 
     | 
    
         
            +
              WSAEVENT hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
         
     | 
| 
      
 1590 
     | 
    
         
            +
              long events = 0;
         
     | 
| 
      
 1591 
     | 
    
         
            +
              if(mode&INPUT_READ) events |= FD_READ|FD_ACCEPT|FD_OOB;
         
     | 
| 
      
 1592 
     | 
    
         
            +
              if(mode&INPUT_EXCEPT) events |= FD_CLOSE|FD_QOS|FD_GROUP_QOS|FD_ROUTING_INTERFACE_CHANGE|FD_ADDRESS_LIST_CHANGE;
         
     | 
| 
      
 1593 
     | 
    
         
            +
              if ( WSAEventSelect(_get_osfhandle(fd), hEvent, events) == SOCKET_ERROR ) {
         
     | 
| 
      
 1594 
     | 
    
         
            +
                WSACloseEvent( hEvent );
         
     | 
| 
      
 1595 
     | 
    
         
            +
                rb_raise( rb_eRuntimeError, "WSAEventSelect sockett error: %d", WSAGetLastError() );
         
     | 
| 
      
 1596 
     | 
    
         
            +
              }
         
     | 
| 
      
 1597 
     | 
    
         
            +
              rb_iv_set(obj, "FXRuby::FXRbGetReadFileHandle", ULL2NUM((intptr_t)hEvent));
         
     | 
| 
      
 1598 
     | 
    
         
            +
              return (FXInputHandle) hEvent;
         
     | 
| 
      
 1599 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1600 
     | 
    
         
            +
            #else
         
     | 
| 
      
 1601 
     | 
    
         
            +
              return (FXInputHandle) fd;
         
     | 
| 
      
 1602 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1603 
     | 
    
         
            +
              }
         
     | 
| 
      
 1604 
     | 
    
         
            +
             
     | 
| 
      
 1605 
     | 
    
         
            +
            void FXRbRemoveReadFileHandle(VALUE obj,FXuint mode) {
         
     | 
| 
      
 1606 
     | 
    
         
            +
            #ifdef WIN32
         
     | 
| 
      
 1607 
     | 
    
         
            +
              WSAEVENT hEvent = (HANDLE)NUM2ULL(rb_iv_get(obj, "FXRuby::FXRbGetReadFileHandle"));
         
     | 
| 
      
 1608 
     | 
    
         
            +
              CloseHandle( hEvent );
         
     | 
| 
      
 1609 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1610 
     | 
    
         
            +
            }
         
     | 
| 
      
 1611 
     | 
    
         
            +
             
     | 
| 
      
 1612 
     | 
    
         
            +
            // Returns an FXInputHandle for this Ruby file object
         
     | 
| 
      
 1613 
     | 
    
         
            +
            FXInputHandle FXRbGetWriteFileHandle(VALUE obj,FXuint mode) {
         
     | 
| 
      
 1614 
     | 
    
         
            +
              int fd;
         
     | 
| 
      
 1615 
     | 
    
         
            +
            #if defined(RUBINIUS)
         
     | 
| 
      
 1616 
     | 
    
         
            +
              VALUE vwrite = rb_intern("@write");
         
     | 
| 
      
 1617 
     | 
    
         
            +
              if(rb_ivar_defined(obj, vwrite)) obj = rb_ivar_get(obj, vwrite);
         
     | 
| 
      
 1618 
     | 
    
         
            +
              fd = FIX2INT(rb_funcall(obj, rb_intern("fileno"), 0));
         
     | 
| 
      
 1619 
     | 
    
         
            +
            #elif defined(RUBY_1_8)
         
     | 
| 
      
 1620 
     | 
    
         
            +
              OpenFile *fptr;
         
     | 
| 
      
 1621 
     | 
    
         
            +
              GetOpenFile(obj, fptr);
         
     | 
| 
      
 1622 
     | 
    
         
            +
              FILE *fpw=GetWriteFile(fptr);
         
     | 
| 
      
 1623 
     | 
    
         
            +
              fd = fileno(fpw);
         
     | 
| 
      
 1624 
     | 
    
         
            +
            #else
         
     | 
| 
      
 1625 
     | 
    
         
            +
              rb_io_t *fptr;
         
     | 
| 
      
 1626 
     | 
    
         
            +
              GetOpenFile(obj, fptr);
         
     | 
| 
      
 1627 
     | 
    
         
            +
              VALUE wrio = fptr->tied_io_for_writing;
         
     | 
| 
      
 1628 
     | 
    
         
            +
              if(wrio) obj = wrio;
         
     | 
| 
      
 1629 
     | 
    
         
            +
              fd = FIX2INT(rb_funcall(obj, rb_intern("fileno"), 0));
         
     | 
| 
      
 1630 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1631 
     | 
    
         
            +
            #ifdef WIN32
         
     | 
| 
      
 1632 
     | 
    
         
            +
            #ifdef __CYGWIN__
         
     | 
| 
      
 1633 
     | 
    
         
            +
              return (FXInputHandle) get_osfhandle(fd);
         
     | 
| 
      
 1634 
     | 
    
         
            +
            #else
         
     | 
| 
      
 1635 
     | 
    
         
            +
              WSAEVENT hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
         
     | 
| 
      
 1636 
     | 
    
         
            +
              long events = 0;
         
     | 
| 
      
 1637 
     | 
    
         
            +
              if(mode&INPUT_WRITE) events |= FD_WRITE|FD_CONNECT;
         
     | 
| 
      
 1638 
     | 
    
         
            +
              if(mode&INPUT_EXCEPT) events |= FD_CLOSE|FD_QOS|FD_GROUP_QOS|FD_ROUTING_INTERFACE_CHANGE|FD_ADDRESS_LIST_CHANGE;
         
     | 
| 
      
 1639 
     | 
    
         
            +
              if ( WSAEventSelect(_get_osfhandle(fd), hEvent, events) == SOCKET_ERROR ) {
         
     | 
| 
      
 1640 
     | 
    
         
            +
                WSACloseEvent( hEvent );
         
     | 
| 
      
 1641 
     | 
    
         
            +
                rb_raise( rb_eRuntimeError, "WSAEventSelect sockettt error: %d", WSAGetLastError() );
         
     | 
| 
      
 1642 
     | 
    
         
            +
              }
         
     | 
| 
      
 1643 
     | 
    
         
            +
              rb_iv_set(obj, "FXRuby::FXRbGetWriteFileHandle", ULL2NUM((intptr_t)hEvent));
         
     | 
| 
      
 1644 
     | 
    
         
            +
              return (FXInputHandle) hEvent;
         
     | 
| 
      
 1645 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1646 
     | 
    
         
            +
            #else
         
     | 
| 
      
 1647 
     | 
    
         
            +
              return (FXInputHandle) fd;
         
     | 
| 
      
 1648 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1649 
     | 
    
         
            +
              }
         
     | 
| 
      
 1650 
     | 
    
         
            +
             
     | 
| 
      
 1651 
     | 
    
         
            +
            void FXRbRemoveWriteFileHandle(VALUE obj,FXuint mode) {
         
     | 
| 
      
 1652 
     | 
    
         
            +
            #ifdef WIN32
         
     | 
| 
      
 1653 
     | 
    
         
            +
              WSAEVENT hEvent = (HANDLE)NUM2ULL(rb_iv_get(obj, "FXRuby::FXRbGetWriteFileHandle"));
         
     | 
| 
      
 1654 
     | 
    
         
            +
              CloseHandle( hEvent );
         
     | 
| 
      
 1655 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1656 
     | 
    
         
            +
            }
         
     | 
| 
      
 1657 
     | 
    
         
            +
             
     | 
| 
       1808 
1658 
     | 
    
         
             
            //----------------------------------------------------------------------
         
     | 
| 
       1809 
1659 
     | 
    
         | 
| 
       1810 
1660 
     | 
    
         
             
            // Copied from the Ruby 1.8.6 sources (signal.c)
         
     | 
| 
         @@ -2128,7 +1978,6 @@ Init_fox16_c(void) { 
     | 
|
| 
       2128 
1978 
     | 
    
         
             
              utf8_enc_idx = rb_enc_find_index("UTF-8");
         
     | 
| 
       2129 
1979 
     | 
    
         
             
            #endif
         
     | 
| 
       2130 
1980 
     | 
    
         | 
| 
       2131 
     | 
    
         
            -
              FXRuby_Objects=st_init_numtable();
         
     | 
| 
       2132 
1981 
     | 
    
         
             
              appSensitiveObjs=st_init_numtable();
         
     | 
| 
       2133 
1982 
     | 
    
         
             
              appSensitiveDCs=st_init_numtable();
         
     | 
| 
       2134 
1983 
     | 
    
         
             
              }
         
     |