fxruby 1.6.35-x86-mingw32 → 1.6.36-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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/extconf.rb
CHANGED
@@ -6,86 +6,18 @@ require 'mkmf'
|
|
6
6
|
gem 'mini_portile2', '~>2.1'
|
7
7
|
require 'mini_portile2'
|
8
8
|
|
9
|
-
def find_installed_fox_version
|
10
|
-
stddirs = ["/usr/include/fox-1.6",
|
11
|
-
"/usr/local/include/fox-1.6",
|
12
|
-
"/sw/include/fox-1.6",
|
13
|
-
"/opt/local/include/fox-1.6"]
|
14
|
-
usrdirs = []
|
15
|
-
ARGV.each do |arg|
|
16
|
-
if arg =~ /--with-fox-include/
|
17
|
-
option, value = arg.split('=')
|
18
|
-
usrdirs = [ value ] + usrdirs
|
19
|
-
end
|
20
|
-
end
|
21
|
-
incdirs = usrdirs + stddirs
|
22
|
-
incdirs.uniq! # remove duplicates
|
23
|
-
|
24
|
-
incdirs.each do |incdir|
|
25
|
-
filename = File.join(incdir, "fxver.h")
|
26
|
-
if FileTest.exist?(filename)
|
27
|
-
idircflag = "-I" + incdir
|
28
|
-
$CPPFLAGS += " " + idircflag unless $CPPFLAGS.split.include?(idircflag)
|
29
|
-
return
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# Couldn't find it; this should have been caught by the pre-config script
|
34
|
-
raise RuntimeError, "couldn't find FOX header files"
|
35
|
-
end
|
36
|
-
|
37
9
|
$autodetected_fxscintilla = false
|
38
10
|
|
39
|
-
def find_installed_fxscintilla_version
|
40
|
-
stddirs = ["/usr/include/fxscintilla",
|
41
|
-
"/usr/local/include/fxscintilla",
|
42
|
-
"/sw/include/fxscintilla",
|
43
|
-
"/opt/local/include/fxscintilla"]
|
44
|
-
usrdirs = []
|
45
|
-
ARGV.each do |arg|
|
46
|
-
if arg =~ /--with-fxscintilla-include/
|
47
|
-
option, value = arg.split('=')
|
48
|
-
usrdirs = [ value ] + usrdirs
|
49
|
-
end
|
50
|
-
end
|
51
|
-
incdirs = usrdirs + stddirs
|
52
|
-
incdirs.uniq! # remove duplicates
|
53
|
-
|
54
|
-
incdirs.each do |incdir|
|
55
|
-
filename = File.join(incdir, "FXScintilla.h")
|
56
|
-
if FileTest.exist?(filename)
|
57
|
-
$autodetected_fxscintilla = true
|
58
|
-
idircflag = "-I" + incdir
|
59
|
-
$CPPFLAGS += " " + idircflag unless $CPPFLAGS.split.include?(idircflag)
|
60
|
-
return
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
11
|
def is_fxscintilla_build?
|
66
12
|
# No means no
|
67
13
|
return false if fxscintilla_support_suppressed?
|
68
14
|
|
69
15
|
# Check arguments
|
70
|
-
|
71
|
-
(args.length > 0) || $autodetected_fxscintilla
|
16
|
+
with_config("fxscintilla", false) || $autodetected_fxscintilla
|
72
17
|
end
|
73
18
|
|
74
19
|
def fxscintilla_support_suppressed?
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
def with_env(hash)
|
79
|
-
hash.each do |k, v|
|
80
|
-
ENV[k] = v
|
81
|
-
end
|
82
|
-
begin
|
83
|
-
yield
|
84
|
-
ensure
|
85
|
-
hash.each do |k, v|
|
86
|
-
ENV.delete(k)
|
87
|
-
end
|
88
|
-
end
|
20
|
+
!with_config("fxscintilla", true)
|
89
21
|
end
|
90
22
|
|
91
23
|
# Stick at zlib-1.2.7 for compatibility to MSYS1 based RubyInstaller.
|
@@ -95,7 +27,7 @@ LIBZ_SOURCE_URI = "http://zlib.net/fossils/zlib-#{LIBZ_VERSION}.tar.gz"
|
|
95
27
|
LIBPNG_VERSION = ENV['LIBPNG_VERSION'] || '1.6.26'
|
96
28
|
LIBPNG_SOURCE_URI = "http://prdownloads.sourceforge.net/libpng/libpng-#{LIBPNG_VERSION}.tar.gz"
|
97
29
|
|
98
|
-
LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '
|
30
|
+
LIBJPEG_VERSION = ENV['LIBJPEG_VERSION'] || '9b'
|
99
31
|
LIBJPEG_SOURCE_URI = "http://www.ijg.org/files/jpegsrc.v#{LIBJPEG_VERSION}.tar.gz"
|
100
32
|
|
101
33
|
LIBTIFF_VERSION = ENV['LIBTIFF_VERSION'] || '4.0.7'
|
@@ -106,17 +38,20 @@ LIBFOX_SOURCE_URI = "http://ftp.fox-toolkit.org/pub/fox-#{LIBFOX_VERSION
|
|
106
38
|
|
107
39
|
LIBFXSCINTILLA_VERSION = ENV['LIBFXSCINTILLA_VERSION'] || '2.28.0'
|
108
40
|
LIBFXSCINTILLA_SOURCE_URI = "http://download.savannah.gnu.org/releases/fxscintilla/fxscintilla-#{LIBFXSCINTILLA_VERSION}.tar.gz"
|
41
|
+
# LIBFXSCINTILLA_VERSION = ENV['LIBFXSCINTILLA_VERSION'] || '3.5.2'
|
42
|
+
# LIBFXSCINTILLA_SOURCE_URI = "https://github.com/yetanothergeek/fxscintilla/archive/FXSCINTILLA-#{LIBFXSCINTILLA_VERSION.gsub(".","_")}.tar.gz"
|
109
43
|
|
110
44
|
|
111
45
|
class BuildRecipe < MiniPortile
|
112
46
|
def initialize(name, version, files)
|
113
47
|
super(name, version)
|
114
48
|
self.files = files
|
115
|
-
|
49
|
+
rootdir = File.expand_path('../../..', __FILE__)
|
50
|
+
self.target = File.join(rootdir, "ports")
|
116
51
|
# Prefer host_alias over host in order to use i586-mingw32msvc as
|
117
52
|
# correct compiler prefix for cross build, but use host if not set.
|
118
53
|
self.host = consolidated_host(RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"])
|
119
|
-
self.patch_files = Dir[File.join(
|
54
|
+
self.patch_files = Dir[File.join(rootdir, "patches", self.name, self.version, "*.diff")].sort
|
120
55
|
end
|
121
56
|
|
122
57
|
def consolidated_host(name)
|
@@ -196,12 +131,11 @@ def do_rake_compiler_setup
|
|
196
131
|
end
|
197
132
|
|
198
133
|
libpng_recipe = BuildRecipe.new("libpng", LIBPNG_VERSION, [LIBPNG_SOURCE_URI]).tap do |recipe|
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
end
|
134
|
+
recipe.configure_options += [
|
135
|
+
"CPPFLAGS=-I#{libz_recipe.path}/include",
|
136
|
+
"LDFLAGS=-L#{libz_recipe.path}/lib",
|
137
|
+
]
|
138
|
+
recipe.cook_and_activate
|
205
139
|
end
|
206
140
|
|
207
141
|
libjpeg_recipe = BuildRecipe.new("libjpeg", LIBJPEG_VERSION, [LIBJPEG_SOURCE_URI]).tap do |recipe|
|
@@ -213,11 +147,14 @@ def do_rake_compiler_setup
|
|
213
147
|
end
|
214
148
|
|
215
149
|
libfox_recipe = BuildRecipe.new("libfox", LIBFOX_VERSION, [LIBFOX_SOURCE_URI]).tap do |recipe|
|
150
|
+
debug = enable_config("debug")
|
216
151
|
recipe.configure_options += [
|
217
152
|
"--without-xft",
|
218
153
|
"--without-x",
|
219
|
-
|
220
|
-
|
154
|
+
debug ? "--enable-debug" : "--enable-release",
|
155
|
+
"CPPFLAGS=-I#{libjpeg_recipe.path}/include -I#{libpng_recipe.path}/include -I#{libtiff_recipe.path}/include -I#{libz_recipe.path}/include -DUNICODE=1 #{debug ? "-ggdb" : ""}",
|
156
|
+
"LDFLAGS=-L#{libjpeg_recipe.path}/lib -L#{libpng_recipe.path}/lib -L#{libtiff_recipe.path}/lib -L#{libz_recipe.path}/lib #{debug ? "-ggdb" : ""}",
|
157
|
+
]
|
221
158
|
class << recipe
|
222
159
|
def compile
|
223
160
|
# Add param -no-undefined to libtool to build a win32 shared lib
|
@@ -225,12 +162,7 @@ def do_rake_compiler_setup
|
|
225
162
|
end
|
226
163
|
end
|
227
164
|
|
228
|
-
|
229
|
-
"CPPFLAGS" => "-I#{libjpeg_recipe.path}/include -I#{libpng_recipe.path}/include -I#{libtiff_recipe.path}/include -I#{libz_recipe.path}/include",
|
230
|
-
"LDFLAGS" => "-L#{libjpeg_recipe.path}/lib -L#{libpng_recipe.path}/lib -L#{libtiff_recipe.path}/lib -L#{libz_recipe.path}/lib"
|
231
|
-
) do
|
232
|
-
recipe.cook_and_activate
|
233
|
-
end
|
165
|
+
recipe.cook_and_activate
|
234
166
|
end
|
235
167
|
|
236
168
|
libfxscintills_recipe = BuildRecipe.new("libfxscintilla", LIBFXSCINTILLA_VERSION, [LIBFXSCINTILLA_SOURCE_URI]).tap do |recipe|
|
@@ -240,6 +172,12 @@ def do_rake_compiler_setup
|
|
240
172
|
"#{ENV['MAKE'] || "make"}"
|
241
173
|
end
|
242
174
|
|
175
|
+
# # This can be uncommented when fxscintilla is used from the source repository.
|
176
|
+
# def configure
|
177
|
+
# execute "bootstrap", "./bootstrap.sh"
|
178
|
+
# super
|
179
|
+
# end
|
180
|
+
|
243
181
|
def compile
|
244
182
|
execute "compile_lexers", "cd lexers && #{mk}"
|
245
183
|
execute "compile_lexlib", "cd lexlib && #{mk}"
|
@@ -253,13 +191,11 @@ def do_rake_compiler_setup
|
|
253
191
|
end
|
254
192
|
recipe.libfox_path = libfox_recipe.path
|
255
193
|
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
end
|
194
|
+
recipe.configure_options += [
|
195
|
+
"PKG_CONFIG_PATH=#{libfox_recipe.path}/lib/pkgconfig",
|
196
|
+
]
|
197
|
+
recipe.cook_and_activate
|
261
198
|
end
|
262
|
-
$autodetected_fxscintilla = true
|
263
199
|
|
264
200
|
dir_config('libfox', "#{libfox_recipe.path}/include/fox-1.6", "#{libfox_recipe.path}/lib")
|
265
201
|
dir_config('libfxscintilla', "#{libfxscintills_recipe.path}/include/fxscintilla", "#{libfxscintills_recipe.path}/lib")
|
@@ -277,6 +213,7 @@ def do_rake_compiler_setup
|
|
277
213
|
CONFIG['CC'] += "\nCXX=#{CONFIG['CXX']}" # Hack CXX into Makefile for cross compilation
|
278
214
|
CONFIG['LDSHARED'].gsub!('gcc', 'g++') # ensure C++ linker is used, so that libstdc++ is linked static
|
279
215
|
$LDFLAGS += " -s" # remove symbol table informations from shared lib
|
216
|
+
$libs = append_library($libs, "fxscintilla")
|
280
217
|
|
281
218
|
elsif RUBY_PLATFORM =~ /mingw/
|
282
219
|
$CFLAGS = $CFLAGS + " -I/usr/local/include"
|
@@ -306,15 +243,11 @@ def do_rake_compiler_setup
|
|
306
243
|
$libs = append_library($libs, "FOX-1.6")
|
307
244
|
$INCFLAGS << " -I#{File.join(File.dirname(__FILE__), 'include')}"
|
308
245
|
if is_fxscintilla_build?
|
309
|
-
FileUtils.move('scintilla_wrap.cpp.bak', 'scintilla_wrap.cpp') if FileTest.exist?('scintilla_wrap.cpp.bak')
|
310
246
|
$CPPFLAGS = $CPPFLAGS + " -DWITH_FXSCINTILLA -DHAVE_FOX_1_6"
|
311
|
-
find_library("fxscintilla", nil) || find_library(":libfxscintilla.so.19", nil) || ($libs = append_library($libs, "fxscintilla"))
|
312
|
-
else
|
313
|
-
FileUtils.move('scintilla_wrap.cpp', 'scintilla_wrap.cpp.bak') if FileTest.exist?('scintilla_wrap.cpp')
|
314
247
|
end
|
315
248
|
|
316
249
|
checking_for("thread local variables") do
|
317
|
-
$defs.push( "-DHAVE___THREAD" ) if try_compile
|
250
|
+
$defs.push( "-DHAVE___THREAD" ) if try_compile <<-EOT
|
318
251
|
__thread int x=1;
|
319
252
|
#if defined(__MINGW32__)
|
320
253
|
#include <windows.h>
|
@@ -342,7 +275,9 @@ dir_config('fox', '/usr/local/include/fox-1.6', '/usr/local/lib')
|
|
342
275
|
dir_config('fxscintilla', '/usr/local/include/fxscintilla', '/usr/local/lib')
|
343
276
|
|
344
277
|
unless enable_config("win32-cross")
|
345
|
-
|
278
|
+
checking_for "fox per pkg-config" do
|
279
|
+
pkg_config("fox")
|
280
|
+
end
|
346
281
|
|
347
282
|
#
|
348
283
|
# Check for FXScintilla header files, unless FXScintilla support has
|
@@ -350,13 +285,31 @@ unless enable_config("win32-cross")
|
|
350
285
|
#
|
351
286
|
|
352
287
|
unless fxscintilla_support_suppressed?
|
353
|
-
|
288
|
+
checking_for "fxscintilla per pkg-config" do
|
289
|
+
$autodetected_fxscintilla = pkg_config("fxscintilla")
|
290
|
+
end
|
291
|
+
|
292
|
+
unless $autodetected_fxscintilla
|
293
|
+
checking_for "fxscintilla on Ubuntu with missing libfxscintilla.so link" do
|
294
|
+
if find_library(":libfxscintilla.so.19", nil) && (cflags = RUBY_VERSION>="2.1" ? pkg_config("fxscintilla", "cflags") : `pkg-config --cflags fxscintilla`)
|
295
|
+
$CXXFLAGS += " " + cflags
|
296
|
+
$autodetected_fxscintilla = true
|
297
|
+
end
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
301
|
+
checking_for "fxscintilla build" do
|
302
|
+
is_fxscintilla_build?
|
354
303
|
end
|
355
304
|
end
|
356
305
|
|
357
|
-
|
306
|
+
if enable_config("debug")
|
307
|
+
$CPPFLAGS += " -ggdb"
|
308
|
+
$LDFLAGS += " -ggdb"
|
309
|
+
else
|
358
310
|
$CPPFLAGS += " -DNDEBUG"
|
359
311
|
end
|
312
|
+
$CPPFLAGS += " -Wno-unused-function"
|
360
313
|
|
361
314
|
# Platform-specific modifications
|
362
315
|
do_rake_compiler_setup
|
data/ext/fox16_c/impl.cpp
CHANGED
@@ -652,6 +652,8 @@ IMPLEMENT_FXWINDOW_STUBS(FXRbMessageBox)
|
|
652
652
|
IMPLEMENT_FXTOPWINDOW_STUBS(FXRbMessageBox)
|
653
653
|
IMPLEMENT_FXDIALOGBOX_STUBS(FXRbMessageBox)
|
654
654
|
|
655
|
+
/* Start stub implementations for class FXRbObjRegistry */
|
656
|
+
|
655
657
|
/* Start stub implementations for class FXRbObject */
|
656
658
|
IMPLEMENT_FXOBJECT_STUBS(FXRbObject)
|
657
659
|
|
@@ -0,0 +1,101 @@
|
|
1
|
+
/***********************************************************************
|
2
|
+
* FXRuby -- the Ruby language bindings for the FOX GUI toolkit.
|
3
|
+
* Copyright (c) 2017-2017 by Lyle Johnson. All Rights Reserved.
|
4
|
+
*
|
5
|
+
* This library is free software; you can redistribute it and/or
|
6
|
+
* modify it under the terms of the GNU Lesser General Public
|
7
|
+
* License as published by the Free Software Foundation; either
|
8
|
+
* version 2.1 of the License, or (at your option) any later version.
|
9
|
+
*
|
10
|
+
* This library is distributed in the hope that it will be useful,
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
* Lesser General Public License for more details.
|
14
|
+
*
|
15
|
+
* You should have received a copy of the GNU Lesser General Public
|
16
|
+
* License along with this library; if not, write to the Free Software
|
17
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
*
|
19
|
+
* For further information please contact the author by e-mail
|
20
|
+
* at "lars@greiz-reinsdorf.de".
|
21
|
+
***********************************************************************/
|
22
|
+
|
23
|
+
#ifndef FXRBOBJREGISTRY_H
|
24
|
+
#define FXRBOBJREGISTRY_H
|
25
|
+
|
26
|
+
#include <ruby.h>
|
27
|
+
#include "fx.h"
|
28
|
+
|
29
|
+
extern "C" {
|
30
|
+
// Opaque type declaration for SWIG runtime support
|
31
|
+
struct swig_type_info;
|
32
|
+
}
|
33
|
+
|
34
|
+
class FXRbObjRegistry {
|
35
|
+
|
36
|
+
/**
|
37
|
+
* The FXRuby_Objects hash table basically maps C++ objects to Ruby instances.
|
38
|
+
* Each key in the table is a pointer to a C++ object we've seen before, and
|
39
|
+
* the corresponding value is an FXRubyObjDesc struct (see below) that tells
|
40
|
+
* us which Ruby instance corresponds to that C++ object.
|
41
|
+
*/
|
42
|
+
|
43
|
+
st_table * FXRuby_Objects;
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Each value in the FXRuby_Objects hash table is an instance of this
|
47
|
+
* struct. It identifies the Ruby instance associated with a C++ object.
|
48
|
+
* It also indicates whether this is merely a "borrowed" reference to
|
49
|
+
* some C++ object (i.e. it's not one we need to destroy later).
|
50
|
+
*
|
51
|
+
* in_gc is set for FXWindows that are in garbage collection and must
|
52
|
+
* not call ruby code anymore.
|
53
|
+
*/
|
54
|
+
|
55
|
+
enum ObjType { own, borrowed, callback };
|
56
|
+
|
57
|
+
struct ObjDesc {
|
58
|
+
VALUE obj;
|
59
|
+
enum ObjType type;
|
60
|
+
bool in_gc;
|
61
|
+
};
|
62
|
+
|
63
|
+
const char * safe_rb_obj_classname(VALUE obj);
|
64
|
+
|
65
|
+
public:
|
66
|
+
|
67
|
+
FXRbObjRegistry();
|
68
|
+
|
69
|
+
/**
|
70
|
+
* NewBorrowedObj() is a wrapper around SWIG_Ruby_NewPointerObj() that also
|
71
|
+
* registers this C++ object & Ruby instance pair in our FXRuby_Objects
|
72
|
+
* hash table. This function should only get called for methods that return
|
73
|
+
* a reference to an already-existing C++ object (i.e. one that FOX "owns")
|
74
|
+
* and for that reason we mark these objects as "borrowed".
|
75
|
+
*/
|
76
|
+
VALUE NewBorrowedObj(void *ptr,swig_type_info* ty);
|
77
|
+
|
78
|
+
// Register this Ruby class instance
|
79
|
+
void RegisterRubyObj(VALUE rubyObj,const void* foxObj);
|
80
|
+
|
81
|
+
void UnregisterRubyObj(const void* foxObj, bool alsoOwned);
|
82
|
+
|
83
|
+
/**
|
84
|
+
* Return the registered Ruby class instance associated with this
|
85
|
+
* FOX object, or Qnil if not found.
|
86
|
+
*/
|
87
|
+
VALUE GetRubyObj(const void *foxObj,bool alsoBorrowed, bool in_gc_mark=false);
|
88
|
+
|
89
|
+
/**
|
90
|
+
* FXRbIsBorrowed() returns true if the specified C++ object is one that
|
91
|
+
* FOX owns (i.e. it's borrowed).
|
92
|
+
*/
|
93
|
+
bool IsBorrowed(void* ptr);
|
94
|
+
|
95
|
+
bool SetInGC(const void* ptr, bool enabled);
|
96
|
+
bool IsInGC(const void* ptr);
|
97
|
+
|
98
|
+
static FXRbObjRegistry main;
|
99
|
+
};
|
100
|
+
|
101
|
+
#endif
|
@@ -86,7 +86,6 @@ void FXRbRegisterRubyObj(VALUE rubyObj, const void* foxObj);
|
|
86
86
|
// Remove mapping for this FOX object and zero out any pointers
|
87
87
|
// to this (now dead) C++ object held by any Ruby object
|
88
88
|
void FXRbUnregisterRubyObj(const void* foxObj);
|
89
|
-
void FXRbUnregisterRubyObj2(const void* foxObj, bool alsoOwned=true);
|
90
89
|
void FXRbUnregisterBorrowedRubyObj(const void* foxObj);
|
91
90
|
void FXRbUnregisterBorrowedRubyObj(FXlong foxObj);
|
92
91
|
void FXRbUnregisterBorrowedRubyObj(FXString& foxObj);
|
@@ -110,7 +109,7 @@ void FXRbDestroyAppSensitiveObjects();
|
|
110
109
|
* FOX object (if any). If searchBoth is false, only considers the
|
111
110
|
* Ruby-owned objects; otherwise considers all outstanding references.
|
112
111
|
*/
|
113
|
-
VALUE FXRbGetRubyObj(const void *foxObj, bool searchBoth, bool
|
112
|
+
VALUE FXRbGetRubyObj(const void *foxObj, bool searchBoth, bool in_gc_mark=false);
|
114
113
|
|
115
114
|
/**
|
116
115
|
* Return the registered Ruby class instance associated with this
|
data/ext/fox16_c/markfuncs.cpp
CHANGED
@@ -531,7 +531,6 @@ void FXRbTableItem::freefunc(FXTableItem* self){
|
|
531
531
|
|
532
532
|
|
533
533
|
void FXRbTable::markfunc(FXTable* self){
|
534
|
-
register FXTableItem* item;
|
535
534
|
FXRbScrollArea::markfunc(self);
|
536
535
|
if(self){
|
537
536
|
FXRbGcMark(self->FXTable::getFont());
|
@@ -539,7 +538,7 @@ void FXRbTable::markfunc(FXTable* self){
|
|
539
538
|
FXRbGcMark(self->FXTable::getColumnHeaderFont());
|
540
539
|
for(FXint row=0;row<self->FXTable::getNumRows();row++){
|
541
540
|
for(FXint col=0;col<self->FXTable::getNumColumns();col++){
|
542
|
-
item=self->FXTable::getItem(row,col);
|
541
|
+
FXTableItem* item=self->FXTable::getItem(row,col);
|
543
542
|
FXRbGcMark(item);
|
544
543
|
}
|
545
544
|
}
|
data/fxruby.gemspec
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'fox16/version'
|
5
|
+
|
6
|
+
SWIG_MODULES = {
|
7
|
+
"core.i" => "core_wrap.cpp",
|
8
|
+
"dcmodule.i" => "dc_wrap.cpp",
|
9
|
+
"dialogs.i" => "dialogs_wrap.cpp",
|
10
|
+
"framesmodule.i" => "frames_wrap.cpp",
|
11
|
+
"iconlistmodule.i" => "iconlist_wrap.cpp",
|
12
|
+
"icons.i" => "icons_wrap.cpp",
|
13
|
+
"image.i" => "image_wrap.cpp",
|
14
|
+
"labelmodule.i" => "label_wrap.cpp",
|
15
|
+
"layout.i" => "layout_wrap.cpp",
|
16
|
+
"listmodule.i" => "list_wrap.cpp",
|
17
|
+
"mdi.i" => "mdi_wrap.cpp",
|
18
|
+
"menumodule.i" => "menu_wrap.cpp",
|
19
|
+
"fx3d.i" => "fx3d_wrap.cpp",
|
20
|
+
"scintilla.i" => "scintilla_wrap.cpp",
|
21
|
+
"table-module.i" => "table_wrap.cpp",
|
22
|
+
"text-module.i" => "text_wrap.cpp",
|
23
|
+
"treelist-module.i" => "treelist_wrap.cpp",
|
24
|
+
"ui.i" => "ui_wrap.cpp"
|
25
|
+
}
|
26
|
+
|
27
|
+
Gem::Specification.new do |spec|
|
28
|
+
spec.name = "fxruby"
|
29
|
+
spec.version = Fox.fxrubyversion
|
30
|
+
spec.authors = ["Lyle Johnson", "Lars Kanis"]
|
31
|
+
spec.email = ["lyle@lylejohnson.name", "lars@greiz-reinsdorf.de"]
|
32
|
+
|
33
|
+
spec.summary = %q{FXRuby is the Ruby binding to the FOX GUI toolkit.}
|
34
|
+
spec.homepage = "http://fxruby.org/"
|
35
|
+
spec.license = 'LGPL-2.1'
|
36
|
+
|
37
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
38
|
+
f=~/^fox-includes|^web/
|
39
|
+
end
|
40
|
+
spec.files += SWIG_MODULES.values.map{|f| File.join("ext/fox16_c", f) }
|
41
|
+
spec.files << 'ext/fox16_c/include/inlinestubs.h'
|
42
|
+
spec.files << 'ext/fox16_c/swigruby.h'
|
43
|
+
spec.files << 'doap.rdf'
|
44
|
+
spec.files << 'lib/fox16/kwargs.rb'
|
45
|
+
|
46
|
+
spec.bindir = "exe"
|
47
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
48
|
+
spec.require_paths = ["lib"]
|
49
|
+
spec.extensions = ["ext/fox16_c/extconf.rb"]
|
50
|
+
spec.metadata['msys2_mingw_dependencies'] = 'fox'
|
51
|
+
|
52
|
+
spec.add_runtime_dependency 'mini_portile2', '~> 2.1'
|
53
|
+
end
|