fxruby 1.6.32-x64-mingw32 → 1.6.33-x64-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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +8 -0
  3. data/README.rdoc +7 -4
  4. data/Rakefile +11 -0
  5. data/examples/WhatAQuietStiff.rb +1 -1
  6. data/examples/imageviewer.rb +1 -1
  7. data/examples/textedit/textedit.rb +8 -8
  8. data/ext/fox16_c/FXRuby.cpp +52 -20
  9. data/ext/fox16_c/extconf.rb +1 -0
  10. data/ext/fox16_c/include/FXRbWindow.h +2 -2
  11. data/ext/fox16_c/include/FXRuby.h +5 -1
  12. data/ext/fox16_c/markfuncs.cpp +24 -0
  13. data/lib/2.0/fox16_c.so +0 -0
  14. data/lib/2.1/fox16_c.so +0 -0
  15. data/lib/2.2/fox16_c.so +0 -0
  16. data/lib/fox16/core.rb +0 -8
  17. data/lib/fox16/thread.rb +2 -2
  18. data/lib/fox16/version.rb +1 -1
  19. data/ports/x86_64-w64-mingw32/bin/libFOX-1.6-0.dll +0 -0
  20. data/ports/x86_64-w64-mingw32/bin/libfxscintilla-20.dll +0 -0
  21. data/ports/x86_64-w64-mingw32/bin/libgcc_s_sjlj-1.dll +0 -0
  22. data/ports/x86_64-w64-mingw32/bin/libjpeg-8.dll +0 -0
  23. data/ports/x86_64-w64-mingw32/bin/libpng15-15.dll +0 -0
  24. data/ports/x86_64-w64-mingw32/bin/libstdc++-6.dll +0 -0
  25. data/ports/x86_64-w64-mingw32/bin/libtiff-5.dll +0 -0
  26. data/ports/x86_64-w64-mingw32/bin/libwinpthread-1.dll +0 -0
  27. data/ports/x86_64-w64-mingw32/bin/zlib1.dll +0 -0
  28. data/swig-interfaces/FXVec2d.i +1 -0
  29. data/swig-interfaces/FXVec2f.i +1 -0
  30. data/swig-interfaces/FXVec3d.i +1 -0
  31. data/swig-interfaces/FXVec3f.i +1 -0
  32. data/swig-interfaces/FXVec4d.i +1 -0
  33. data/swig-interfaces/FXVec4f.i +1 -0
  34. data/swig-interfaces/ruby-typemaps.i +15 -9
  35. data/test/TC_FXApp.rb +2 -2
  36. data/test/TC_FXCheckButton.rb +0 -5
  37. data/test/TC_FXDCPrint.rb +1 -1
  38. data/test/TC_FXFileStream.rb +1 -1
  39. data/test/TC_FXFont.rb +2 -2
  40. data/test/TC_FXId.rb +1 -1
  41. data/test/TC_FXImage.rb +2 -2
  42. data/test/TC_FXMainWindow.rb +1 -0
  43. data/test/TC_FXMat4f.rb +3 -3
  44. data/test/TC_FXMaterial.rb +1 -1
  45. data/test/TC_FXMenuCheck.rb +0 -5
  46. data/test/TC_FXMenuRadio.rb +0 -5
  47. data/test/TC_FXQuatf.rb +5 -5
  48. data/test/TC_FXRadioButton.rb +0 -5
  49. data/test/TC_FXRegion.rb +3 -3
  50. data/test/TC_FXShell.rb +1 -0
  51. data/test/TC_FXTable.rb +1 -1
  52. data/test/TC_FXVec4f.rb +1 -1
  53. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ddc754382f272835ed18c7d5ecdb91913cf17fd2
4
- data.tar.gz: 9911ca3aba43c06714e9609a85181854f23aec43
3
+ metadata.gz: 976877f65b3913a2d3e2fc78ac76584f8e2b5556
4
+ data.tar.gz: 345d83f552be95f775894c3dc08cb631a796d046
5
5
  SHA512:
6
- metadata.gz: b7fdb4cb8c84c94d07253313ba53f857fa2e7e2f17e87f03a356f55d10d4ac75289f263ee982b39f22eb2f22c8362aa07525528f0215a50186863c915405573c
7
- data.tar.gz: e18d79adb2dc0f9e831176e3a99f02ad598440f90d372f59c10974e192924e09237e2a1b3ea4c3788fc4a7b39759a56a3f5538c9586cb849dc8d285344214838
6
+ metadata.gz: 93560a1477f13a78e678248c3252e3ea56b32d61a242cbea35b5de2adf129922dedfe04775f4df373acfa9c426249e30b8dafd17c1ab20f2eedd2595cbe54b3a
7
+ data.tar.gz: 0cf5f68b271b6f6b4c07b94a9f0b057446008d57eba87686fa3abe8a5d88d2eab0ef56897c0b5722e0db555b147a05093857e3c1c058c055c5156e9bb19bbeae
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ === 1.6.33 / 2015-08-20
2
+
3
+ * Avoid calls that are prohibited while GC phases during GC. Fixes #23
4
+ * Use copy'ing getters for FXVec members in FXMat*, FXMaterial and FXLight.
5
+ This fixes the TC_FXMaterial#test_bug test case.
6
+ * Fix test suite, so that all tests pass.
7
+ * Add a travis-ci test setup and connect it to the github account.
8
+
1
9
  === 1.6.32 / 2015-08-07
2
10
 
3
11
  * Avoid call to rb_class2name() during GC. Fixes #21
data/README.rdoc CHANGED
@@ -1,7 +1,9 @@
1
1
  = FXRuby
2
2
 
3
3
  * http://github.com/larskanis/fxruby
4
- * API: http://rubydoc.info/gems/fxruby/frames
4
+ * Full API-description: http://rubydoc.info/gems/fxruby/frames
5
+ * Latest fxruby {<img src="https://badge.fury.io/rb/fxruby.svg" alt="Gem Version" />}[http://badge.fury.io/rb/fxruby]
6
+ * Status (on Linux): {<img src="https://travis-ci.org/larskanis/fxruby.svg?branch=1.6" alt="Build Status" />}[https://travis-ci.org/larskanis/fxruby]
5
7
 
6
8
  == DESCRIPTION:
7
9
 
@@ -14,7 +16,7 @@ Ruby programming language that you already know and love, while at the
14
16
  same time taking advantage of the performance and functionality of a
15
17
  featureful, highly optimized C++ toolkit.
16
18
 
17
- == FEATURES/PROBLEMS:
19
+ == FEATURES:
18
20
 
19
21
  FXRuby supportes everything of FOX, that is useful in Ruby:
20
22
  * MDI/SDI application window layouts, floating toolbars
@@ -22,14 +24,15 @@ FXRuby supportes everything of FOX, that is useful in Ruby:
22
24
  * Flexible layout management
23
25
  * Image read/write support in many formats
24
26
  * Embedded OpenGL graphics
27
+ * Thread support
25
28
 
26
29
  == INSTALL:
27
30
 
28
- FXRuby runs on Linux, Windows and OS-X. Installation on *nix requires
31
+ FXRuby runs on Linux, Windows and OS-X with Ruby-1.9.3 or newer and with Rubinius. Installation on Unix requires
29
32
  FOX development headers and libraries installed:
30
33
  * on Debian/Ubuntu: <tt>sudo apt-get install g++ libxrandr-dev libfox-1.6-dev</tt>
31
34
  * see also detailed installation instructions in the {https://github.com/lylejohnson/fxruby/wiki Wiki}
32
- * no preparation needed on Windows - the binary gem can be used
35
+ * on Windows: the binary fxruby gems already contain all required libararies
33
36
 
34
37
  Then, install the gem:
35
38
  * gem install fxruby
data/Rakefile CHANGED
@@ -21,6 +21,9 @@ end
21
21
  # Some constants we'll need
22
22
  PKG_VERSION = Fox.fxrubyversion
23
23
 
24
+ LIBFXSCINTILLA_VERSION = ENV['LIBFXSCINTILLA_VERSION'] || '2.28.0'
25
+ LIBFXSCINTILLA_SOURCE_URI = "http://download.savannah.gnu.org/releases/fxscintilla/fxscintilla-#{LIBFXSCINTILLA_VERSION}.tar.gz"
26
+
24
27
  SWIG = (RUBY_PLATFORM =~ /mingw/) ? "swig.exe" : "swig"
25
28
  SWIGFLAGS = "-c++ -ruby -nodefaultdtor -nodefaultctor -w302 -features compactdefaultargs -I../fox-includes"
26
29
  SWIG_MODULES = {
@@ -99,6 +102,8 @@ task :test => [:compile]
99
102
  Rake::ExtensionTask.new("fox16_c", hoe.spec) do |ext|
100
103
  ext.cross_compile = true
101
104
  ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
105
+ # Enable FXTRACE and FXASSERT for 'rake compile'
106
+ ext.config_options << "--enable-debug"
102
107
 
103
108
  ext.cross_config_options += [
104
109
  "--enable-win32-cross",
@@ -253,6 +258,12 @@ namespace :fxruby do
253
258
  file "ext/fox16_c/extconf.rb" => ['ext/fox16_c/swigruby.h', 'ext/fox16_c/impl.cpp', 'ext/fox16_c/include/inlinestubs.h'] +
254
259
  SWIG_MODULES.map{|ifile, cppfile| File.join("ext/fox16_c", cppfile) }
255
260
 
261
+
262
+ directory "ports/archives"
263
+ file "ports/archives/fxscintilla-2.28.0.tar.gz" => ["ports/archives"] do |t|
264
+ sh "wget #{LIBFXSCINTILLA_SOURCE_URI} -O #{t.name}"
265
+ end
266
+
256
267
  directory "tmp/fxscintilla"
257
268
  task "tmp/fxscintilla/fxscintilla-2.28.0/include/Scintilla.iface" => ["tmp/fxscintilla", "ports/archives/fxscintilla-2.28.0.tar.gz"] do
258
269
  chdir "tmp/fxscintilla" do
@@ -134,7 +134,7 @@ class WhatAQuietWindow < FXMainWindow
134
134
  saveDialog = FXFileDialog.new(self, "Save Image")
135
135
  saveDialog.filename = @itemList.getItemText(@itemList.currentItem)
136
136
  if saveDialog.execute != 0
137
- if File.exists? saveDialog.filename
137
+ if File.exist? saveDialog.filename
138
138
  if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
139
139
  "Overwrite Image", "Overwrite existing image?")
140
140
  return 1
@@ -326,7 +326,7 @@ class ImageWindow < FXMainWindow
326
326
  def onCmdSave(sender, sel, ptr)
327
327
  saveDialog = FXFileDialog.new(self, "Save Image")
328
328
  if saveDialog.execute != 0
329
- if File.exists? saveDialog.filename
329
+ if File.exist? saveDialog.filename
330
330
  if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
331
331
  "Overwrite Image", "Overwrite existing image?")
332
332
  return 1
@@ -1025,7 +1025,7 @@ class TextWindow < FXMainWindow
1025
1025
  return false if (savedialog.execute == 0)
1026
1026
  setCurrentPattern(savedialog.currentPattern)
1027
1027
  file = savedialog.filename
1028
- if File.exists?(file)
1028
+ if File.exist?(file)
1029
1029
  if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
1030
1030
  "Overwrite Document", "Overwrite existing document: #{file}?")
1031
1031
  return false
@@ -1092,7 +1092,7 @@ class TextWindow < FXMainWindow
1092
1092
  if savedialog.execute != 0
1093
1093
  setCurrentPattern(savedialog.currentPattern)
1094
1094
  file = savedialog.filename
1095
- if File.exists?(file)
1095
+ if File.exist?(file)
1096
1096
  if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
1097
1097
  "Overwrite Document", "Overwrite existing document: #{file}?")
1098
1098
  return 1
@@ -1134,24 +1134,24 @@ class TextWindow < FXMainWindow
1134
1134
  # Attempt to extract the file name from various forms
1135
1135
  if string =~ /#include \".*\"/
1136
1136
  file = File.expand_path(name, dir)
1137
- if !File.exists?(file)
1137
+ if !File.exist?(file)
1138
1138
  Find.find(@searchpath) { |f| file = f if (f == name) }
1139
1139
  end
1140
1140
  elsif string =~ /#include <.*>/
1141
1141
  file = File.expand_path(name, dir)
1142
- if !File.exists?(file)
1142
+ if !File.exist?(file)
1143
1143
  Find.find(@searchpath) { |f| file = f if (f == name) }
1144
1144
  end
1145
1145
  elsif string =~ /.*:.*:.*/
1146
1146
  file = File.expand_path(name, dir)
1147
- if !File.exists?(file)
1147
+ if !File.exist?(file)
1148
1148
  Find.find(@searchpath) { |f| file = f if (f == name) }
1149
1149
  end
1150
1150
  else
1151
1151
  file = File.expand_path(string, dir)
1152
1152
  end
1153
1153
 
1154
- if File.exists?(file)
1154
+ if File.exist?(file)
1155
1155
  # Different from current file?
1156
1156
  if file != @filename
1157
1157
  # Save old file first
@@ -1213,7 +1213,7 @@ class TextWindow < FXMainWindow
1213
1213
  if savedialog.execute != 0
1214
1214
  setCurrentPattern(savedialog.currentPattern)
1215
1215
  file = savedialog.filename
1216
- if File.exists?(file)
1216
+ if File.exist?(file)
1217
1217
  if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
1218
1218
  "Overwrite Document", "Overwrite existing document: #{file}?")
1219
1219
  return 1
@@ -1690,7 +1690,7 @@ class TextWindow < FXMainWindow
1690
1690
 
1691
1691
  # Update box for readonly display
1692
1692
  def onCheckFile(sender, sel, ptr)
1693
- mtime = File.exists?(@filename) ? File.mtime(@filename) : nil
1693
+ mtime = File.exist?(@filename) ? File.mtime(@filename) : nil
1694
1694
  if @filetime && mtime && mtime != @filetime
1695
1695
  @filetime = mtime
1696
1696
  if MBOX_CLICKED_OK == FXMessageBox.warning(self, MBOX_OK_CANCEL,
@@ -85,12 +85,19 @@ static st_table * FXRuby_Objects;
85
85
 
86
86
  static const char * const safe_rb_obj_classname(VALUE obj)
87
87
  {
88
- if( rb_during_gc() ){
88
+ int tdata = TYPE(obj)==T_DATA;
89
+ if( (tdata && FXRbIsInGC(DATA_PTR(obj)))
90
+ #ifdef HAVE_RB_DURING_GC
91
+ || rb_during_gc()
92
+ #endif
93
+ ){
89
94
  /* It's not safe to call rb_obj_classname() during GC.
90
95
  * Return dummy value in this case. */
91
96
  return "during GC";
92
- } else {
97
+ } else if (tdata) {
93
98
  return rb_obj_classname(obj);
99
+ } else {
100
+ return "no T_DATA";
94
101
  }
95
102
  }
96
103
 
@@ -161,6 +168,31 @@ bool FXRbIsBorrowed(void* ptr){
161
168
  }
162
169
  }
163
170
 
171
+ bool FXRbSetInGC(const void* ptr, bool enabled){
172
+ FXASSERT(ptr!=0);
173
+ FXRubyObjDesc *desc;
174
+ if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(ptr),reinterpret_cast<st_data_t *>(&desc))!=0){
175
+ desc->in_gc=enabled;
176
+ return enabled;
177
+ }
178
+ return false;
179
+ }
180
+
181
+ bool FXRbIsInGC(const void* ptr){
182
+ FXASSERT(ptr!=0);
183
+ FXRubyObjDesc *desc;
184
+
185
+ #ifdef HAVE_RB_DURING_GC
186
+ if( rb_during_gc() ){
187
+ return true;
188
+ }
189
+ #endif
190
+ if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(ptr),reinterpret_cast<st_data_t *>(&desc))!=0){
191
+ return desc->in_gc;
192
+ }
193
+ return false;
194
+ }
195
+
164
196
 
165
197
  /**
166
198
  * FXRbConvertPtr() is just a wrapper around SWIG_ConvertPtr().
@@ -343,12 +375,13 @@ VALUE to_ruby(const FXObject* obj){
343
375
  * Return the registered Ruby class instance associated with this
344
376
  * FOX object, or Qnil if not found.
345
377
  */
346
- VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed){
378
+ VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed, bool in_gc){
347
379
  FXRubyObjDesc* desc;
348
380
  if(foxObj!=0 && st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(const_cast<void*>(foxObj)),reinterpret_cast<st_data_t *>(&desc))!=0){
349
381
  FXASSERT(desc!=0);
350
382
  if(alsoBorrowed || !desc->borrowed){
351
- FXTRACE((2,"FXRbGetRubyObj(foxObj=%p) => rubyObj=%p (%s)\n",foxObj,(void *)desc->obj,safe_rb_obj_classname(desc->obj)));
383
+ const char *classname = in_gc ? "in GC" : safe_rb_obj_classname(desc->obj);
384
+ FXTRACE((2,"FXRbGetRubyObj(foxObj=%p) => rubyObj=%p (%s)\n", foxObj, (void *)desc->obj, classname));
352
385
  return desc->obj;
353
386
  }
354
387
  }
@@ -362,23 +395,21 @@ VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed){
362
395
  VALUE FXRbGetRubyObj(const void *foxObj,swig_type_info* ty){
363
396
  if(foxObj!=0){
364
397
  VALUE rbObj=FXRbGetRubyObj(foxObj,true);
365
- return NIL_P(rbObj) ? FXRbNewPointerObj(const_cast<void*>(foxObj),ty) : rbObj;
398
+ if( NIL_P(rbObj) ){
399
+ return FXRbNewPointerObj(const_cast<void*>(foxObj),ty);
400
+ }else{
401
+ // The requested type should match the registered class.
402
+ FXASSERT(SWIG_CheckConvert(rbObj, ty));
403
+ return rbObj;
366
404
  }
367
- else{
405
+ }else{
368
406
  return Qnil;
369
- }
370
407
  }
408
+ }
371
409
 
372
410
  VALUE FXRbGetRubyObj(const void *foxObj,const char *type){
373
- if(foxObj!=0){
374
- FXASSERT(type!=0);
375
- VALUE rbObj=FXRbGetRubyObj(foxObj,true);
376
- return NIL_P(rbObj) ? FXRbNewPointerObj(const_cast<void*>(foxObj),FXRbTypeQuery(type)) : rbObj;
377
- }
378
- else{
379
- return Qnil;
380
- }
381
- }
411
+ return FXRbGetRubyObj(foxObj, FXRbTypeQuery(type));
412
+ }
382
413
 
383
414
  /**
384
415
  * Look up the Ruby instance associated with this C++ object, if any, and mark
@@ -402,7 +433,7 @@ void FXRbGcMark(void *obj){
402
433
  * example program works if you invoke the GC in ShutterWindow#create;
403
434
  * make sure that the shutter items' contents don't get blown away!
404
435
  */
405
- VALUE value=FXRbGetRubyObj(obj,true);
436
+ VALUE value=FXRbGetRubyObj(obj,true, true);
406
437
  if(!NIL_P(value)){
407
438
  rb_gc_mark(value);
408
439
  }
@@ -1427,6 +1458,7 @@ void FXRbRange2LoHi(VALUE range,FXdouble& lo,FXdouble& hi){
1427
1458
  void FXRbCallVoidMethod_gvlcb(FXObject* recv, const char *func) {
1428
1459
  VALUE obj=FXRbGetRubyObj(recv,false);
1429
1460
  FXASSERT(!NIL_P(obj));
1461
+ FXASSERT(!FXRbIsInGC(recv));
1430
1462
  rb_funcall(obj,rb_intern(func),0,NULL);
1431
1463
  }
1432
1464
 
@@ -1633,7 +1665,7 @@ void FXRbCallDCDrawMethod_gvlcb(FXDC* recv, const char * func, FXint x,FXint y,c
1633
1665
  FXRbMenuCommand::~FXRbMenuCommand(){
1634
1666
  FXAccelTable *table;
1635
1667
  FXWindow *owner;
1636
- if(acckey && !rb_during_gc()){
1668
+ if(acckey && !FXRbIsInGC(this)){
1637
1669
  owner=getShell()->getOwner();
1638
1670
  if(owner){
1639
1671
  table=owner->getAccelTable();
@@ -1649,7 +1681,7 @@ FXRbMenuCommand::~FXRbMenuCommand(){
1649
1681
  FXRbMenuCheck::~FXRbMenuCheck(){
1650
1682
  FXAccelTable *table;
1651
1683
  FXWindow *owner;
1652
- if(acckey && !rb_during_gc()){
1684
+ if(acckey && !FXRbIsInGC(this)){
1653
1685
  owner=getShell()->getOwner();
1654
1686
  if(owner){
1655
1687
  table=owner->getAccelTable();
@@ -1665,7 +1697,7 @@ FXRbMenuCheck::~FXRbMenuCheck(){
1665
1697
  FXRbMenuRadio::~FXRbMenuRadio(){
1666
1698
  FXAccelTable *table;
1667
1699
  FXWindow *owner;
1668
- if(acckey && !rb_during_gc()){
1700
+ if(acckey && !FXRbIsInGC(this)){
1669
1701
  owner=getShell()->getOwner();
1670
1702
  if(owner){
1671
1703
  table=owner->getAccelTable();
@@ -318,6 +318,7 @@ def do_rake_compiler_setup
318
318
  have_func('rb_thread_call_without_gvl') &&
319
319
  have_func('rb_thread_call_with_gvl')
320
320
 
321
+ have_func('rb_during_gc')
321
322
  end
322
323
 
323
324
  # This directive processes the "--with-fox-include" and "--with-fox-lib"
@@ -149,7 +149,7 @@ inline void klass ## _dropDisable(klass* self){ \
149
149
  FXRbCallVoidMethod(this,"killFocus"); \
150
150
  } \
151
151
  void cls::changeFocus(FXWindow* child){ \
152
- if(!rb_during_gc()) FXRbCallVoidMethod(this,"changeFocus",child); \
152
+ if(!FXRbIsInGC(this)) FXRbCallVoidMethod(this,"changeFocus",child); \
153
153
  } \
154
154
  void cls::setDefault(FXbool enable){ \
155
155
  FXRbCallVoidMethod(this,"setDefault",enable); \
@@ -173,7 +173,7 @@ inline void klass ## _dropDisable(klass* self){ \
173
173
  FXRbCallVoidMethod(this,"position",x,y,w,h); \
174
174
  } \
175
175
  void cls::recalc(){ \
176
- if(!rb_during_gc()) FXRbCallVoidMethod(this,"recalc"); \
176
+ if(!FXRbIsInGC(this)) FXRbCallVoidMethod(this,"recalc"); \
177
177
  } \
178
178
  void cls::reparent(FXWindow* father,FXWindow* other){ \
179
179
  FXRbCallVoidMethod(this,"reparent",father,other); \
@@ -81,6 +81,8 @@ VALUE showHelper(VALUE self, int argc, VALUE *argv, TYPE *p, swig_type_info *typ
81
81
  // Wrapper around SWIG_Ruby_NewPointerObj()
82
82
  VALUE FXRbNewPointerObj(void *ptr, swig_type_info *typeinfo);
83
83
  bool FXRbIsBorrowed(void* ptr);
84
+ bool FXRbSetInGC(const void* ptr, bool enabled);
85
+ bool FXRbIsInGC(const void* ptr);
84
86
 
85
87
  // Wrapper around SWIG_TypeQuery()
86
88
  swig_type_info *FXRbTypeQuery(const char *name);
@@ -124,7 +126,7 @@ void FXRbDestroyAppSensitiveObjects();
124
126
  * FOX object (if any). If searchBoth is false, only considers the
125
127
  * Ruby-owned objects; otherwise considers all outstanding references.
126
128
  */
127
- VALUE FXRbGetRubyObj(const void *foxObj, bool searchBoth);
129
+ VALUE FXRbGetRubyObj(const void *foxObj, bool searchBoth, bool in_gc=false);
128
130
 
129
131
  /**
130
132
  * Return the registered Ruby class instance associated with this
@@ -367,6 +369,7 @@ template<class TYPE>
367
369
  void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func, TYPE& arg){
368
370
  VALUE obj=FXRbGetRubyObj(recv,false);
369
371
  FXASSERT(!NIL_P(obj));
372
+ FXASSERT(!FXRbIsInGC(recv));
370
373
  rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
371
374
  FXRbUnregisterBorrowedRubyObj(&arg);
372
375
  }
@@ -383,6 +386,7 @@ template<class TYPE>
383
386
  void FXRbCallVoidMethod_gvlcb(const FXObject* recv, const char *func, TYPE& arg){
384
387
  VALUE obj=FXRbGetRubyObj(recv,false);
385
388
  FXASSERT(!NIL_P(obj));
389
+ FXASSERT(!FXRbIsInGC(recv));
386
390
  rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
387
391
  FXRbUnregisterBorrowedRubyObj(&arg);
388
392
  }
@@ -53,6 +53,19 @@ void FXRbObject::markfunc(FXObject* obj){
53
53
  FXTRACE((100,"%s::markfunc(%p)\n",obj?obj->getClassName():"FXRbObject",obj));
54
54
  }
55
55
 
56
+ static void FXRbSetInGCParentsRecursive(FXWindow *window, bool enabled){
57
+ FXRbSetInGC( window, true );
58
+ if(window->getParent()) FXRbSetInGCParentsRecursive( window->getParent(), enabled );
59
+ }
60
+
61
+ static void FXRbSetInGCChildrenRecursive(FXWindow *window, bool enabled){
62
+ FXRbSetInGC( window, true );
63
+ for(FXWindow* child=window->getFirst(); child; child=child->getNext()){
64
+ FXRbSetInGCChildrenRecursive( child, enabled );
65
+ }
66
+ }
67
+
68
+
56
69
  void FXRbObject::freefunc(FXObject* self){
57
70
  if(self!=0){
58
71
  // Unregister, but don't destroy, borrowed references
@@ -65,6 +78,17 @@ void FXRbObject::freefunc(FXObject* self){
65
78
  FXASSERT(classname!=0);
66
79
  FXASSERT(strlen(classname)>3);
67
80
  if(classname[0]=='F' && classname[1]=='X' && classname[2]=='R' && classname[3]=='b'){
81
+ // FXWindow destructor calls recalc() and changeFocus() of it's parent window.
82
+ // Since these methods are routed back to Ruby code, but calling Ruby code from
83
+ // GC isn't a good idea, we mark the parent window as "in_gc", so that it will
84
+ // ignore recalc() and changeFocus() calls completely.
85
+ // The parent window should also be scheduled to be free'd. In the other case,
86
+ // the child window would have been marked as used.
87
+ if(self->isMemberOf(FXMETACLASS(FXWindow))){
88
+ FXWindow *window = dynamic_cast<FXWindow*>(self);
89
+ FXRbSetInGCParentsRecursive( window, true );
90
+ FXRbSetInGCChildrenRecursive( window, true );
91
+ }
68
92
  delete self;
69
93
  }
70
94
  else{
data/lib/2.0/fox16_c.so CHANGED
Binary file
data/lib/2.1/fox16_c.so CHANGED
Binary file
data/lib/2.2/fox16_c.so CHANGED
Binary file
data/lib/fox16/core.rb CHANGED
@@ -625,14 +625,6 @@ module Fox
625
625
  end
626
626
  end
627
627
 
628
- class FXHVec
629
- def normalize!
630
- normalized = self.normalize
631
- 0.upto(3) { |idx| self[idx] = normalized[idx] }
632
- self
633
- end
634
- end
635
-
636
628
  class FXTable
637
629
  #
638
630
  # Append _numColumns_ columns to the right of the table..
data/lib/fox16/thread.rb CHANGED
@@ -13,7 +13,7 @@ module Fox
13
13
 
14
14
  def runOnUiThread(&block)
15
15
  @event_handler_events << block
16
- @event_handler_pwr.write 'e' if @event_handler_pwr
16
+ @event_handler_pwr.write 'e'
17
17
  end
18
18
 
19
19
  private
@@ -34,7 +34,7 @@ module Fox
34
34
  end
35
35
 
36
36
  def event_handler_pull(prd)
37
- prd.read(1) if prd
37
+ prd.read(1)
38
38
  while !@event_handler_events.empty?
39
39
  ev = @event_handler_events.shift
40
40
  ev.call
data/lib/fox16/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Fox
2
2
  def Fox.fxrubyversion
3
- "1.6.32"
3
+ "1.6.33"
4
4
  end
5
5
  end
Binary file
@@ -20,6 +20,7 @@
20
20
  * at "lyle@lylejohnson.name".
21
21
  ***********************************************************************/
22
22
 
23
+ %naturalvar FXVec2d;
23
24
  /// Double-precision 2-element vector
24
25
  class FXVec2d {
25
26
  public:
@@ -20,6 +20,7 @@
20
20
  * at "lyle@lylejohnson.name".
21
21
  ***********************************************************************/
22
22
 
23
+ %naturalvar FXVec2f;
23
24
  /// Single-precision 2-element vector
24
25
  class FXVec2f {
25
26
  public:
@@ -20,6 +20,7 @@
20
20
  * at "lyle@lylejohnson.name".
21
21
  ***********************************************************************/
22
22
 
23
+ %naturalvar FXVec3d;
23
24
  /// Double-precision 3-element vector
24
25
  class FXVec3d {
25
26
  public:
@@ -20,6 +20,7 @@
20
20
  * at "lyle@lylejohnson.name".
21
21
  ***********************************************************************/
22
22
 
23
+ %naturalvar FXVec3f;
23
24
  /// Single-precision 3-element vector
24
25
  class FXVec3f {
25
26
  public:
@@ -21,6 +21,7 @@
21
21
  ***********************************************************************/
22
22
 
23
23
  %rename("crosses?") FXVec4d::crosses(const FXVec3d& a,const FXVec3d& b) const;
24
+ %naturalvar FXVec4d;
24
25
 
25
26
  /// Double-precision 4-element vector
26
27
  class FXVec4d {
@@ -21,6 +21,7 @@
21
21
  ***********************************************************************/
22
22
 
23
23
  %rename("crosses?") FXVec4f::crosses(const FXVec3f& a,const FXVec3f& b) const;
24
+ %naturalvar FXVec4f;
24
25
 
25
26
  /// Single-precision 4-element vector
26
27
  class FXVec4f {
@@ -493,13 +493,27 @@ inline void* to_FXEvent(VALUE obj){
493
493
  %typemap(out) FXVec2f* "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
494
494
  %typemap(out) FXVec2f& "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
495
495
 
496
+ /* Output typemap for FXVec3f instances */
497
+ %typemap(out) FXVec3f {
498
+ FXVec3f* resultptr = new FXVec3f($1);
499
+ $result = FXRbGetRubyObj(resultptr, "FXVec3f *");
500
+ }
501
+ %typemap(out) FXVec3f* "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
502
+ %typemap(out) const FXVec3f& {
503
+ FXVec3f* resultptr = new FXVec3f(*$1);
504
+ $result = FXRbGetRubyObj(resultptr, "FXVec3f *");
505
+ }
506
+
496
507
  /* Output typemap for FXVec4f instances */
497
508
  %typemap(out) FXVec4f {
498
509
  FXVec4f* resultptr = new FXVec4f($1);
499
510
  $result = FXRbGetRubyObj(resultptr, "FXVec4f *");
500
511
  }
501
512
  %typemap(out) FXVec4f* "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
502
- %typemap(out) FXVec4f& "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
513
+ %typemap(out) const FXVec4f& {
514
+ FXVec4f* resultptr = new FXVec4f(*$1);
515
+ $result = FXRbGetRubyObj(resultptr, "FXVec4f *");
516
+ }
503
517
 
504
518
  /* Output typemap for FXIcon instances */
505
519
  %typemap(out) FXIcon * = FXObject *;
@@ -610,14 +624,6 @@ inline void* to_FXEvent(VALUE obj){
610
624
  /* Output typemap for FXTreeItem instances */
611
625
  %typemap(out) FXTreeItem * = FXObject *;
612
626
 
613
- /* Output typemap for FXVec3f instances */
614
- %typemap(out) FXVec3f {
615
- FXVec3f* resultptr = new FXVec3f($1);
616
- $result = FXRbGetRubyObj(resultptr, "FXVec3f *");
617
- }
618
- %typemap(out) FXVec3f* "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
619
- %typemap(out) const FXVec3f& "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
620
-
621
627
  /* Output typemap for FXVerticalFrame instances */
622
628
  %typemap(out) FXVerticalFrame * = FXObject *;
623
629
 
data/test/TC_FXApp.rb CHANGED
@@ -8,7 +8,7 @@ class TC_FXApp < Test::Unit::TestCase
8
8
 
9
9
  def test_exception_for_second_app
10
10
  assert_raise RuntimeError do
11
- app2 = FXApp.new
11
+ FXApp.new
12
12
  end
13
13
  end
14
14
  end
@@ -46,7 +46,7 @@ class TC_FXApp2 < Fox::TestCase
46
46
  end
47
47
 
48
48
  def test_addInput_on_pipe
49
- check_events *IO.pipe
49
+ check_events(*IO.pipe)
50
50
  end
51
51
 
52
52
  def test_addInput_on_socket_accept
@@ -12,7 +12,6 @@ class TC_FXCheckButton < Fox::TestCase
12
12
 
13
13
  def test_setCheck_TRUE
14
14
  @checkButton.check = Fox::TRUE
15
- assert_equal(true, @checkButton.check)
16
15
  assert_equal(Fox::TRUE, @checkButton.checkState)
17
16
  assert(@checkButton.checked?)
18
17
  assert(!@checkButton.unchecked?)
@@ -21,7 +20,6 @@ class TC_FXCheckButton < Fox::TestCase
21
20
 
22
21
  def test_setCheck_FALSE
23
22
  @checkButton.check = Fox::FALSE
24
- assert_equal(false, @checkButton.check)
25
23
  assert_equal(Fox::FALSE, @checkButton.checkState)
26
24
  assert(!@checkButton.checked?)
27
25
  assert(@checkButton.unchecked?)
@@ -30,7 +28,6 @@ class TC_FXCheckButton < Fox::TestCase
30
28
 
31
29
  def test_setCheck_MAYBE
32
30
  @checkButton.check = Fox::MAYBE
33
- assert_equal(true, @checkButton.check) # this is not a typo!
34
31
  assert_equal(Fox::MAYBE, @checkButton.checkState)
35
32
  assert(!@checkButton.checked?)
36
33
  assert(!@checkButton.unchecked?)
@@ -39,7 +36,6 @@ class TC_FXCheckButton < Fox::TestCase
39
36
 
40
37
  def test_setCheck_true
41
38
  @checkButton.check = true
42
- assert_equal(true, @checkButton.check)
43
39
  assert_equal(Fox::TRUE, @checkButton.checkState)
44
40
  assert(@checkButton.checked?)
45
41
  assert(!@checkButton.unchecked?)
@@ -48,7 +44,6 @@ class TC_FXCheckButton < Fox::TestCase
48
44
 
49
45
  def test_setCheck_false
50
46
  @checkButton.check = false
51
- assert_equal(false, @checkButton.check)
52
47
  assert_equal(Fox::FALSE, @checkButton.checkState)
53
48
  assert(!@checkButton.checked?)
54
49
  assert(@checkButton.unchecked?)
data/test/TC_FXDCPrint.rb CHANGED
@@ -95,7 +95,7 @@ public
95
95
  end
96
96
 
97
97
  def teardown
98
- if File.exists?("output.ps")
98
+ if File.exist?("output.ps")
99
99
  FileUtils.rm_f("output.ps")
100
100
  end
101
101
  end
@@ -82,7 +82,7 @@ class TC_FXFileStream < Test::Unit::TestCase
82
82
  end
83
83
 
84
84
  def teardown
85
- if File.exists?("goobers")
85
+ if File.exist?("goobers")
86
86
  FileUtils.rm_f("goobers")
87
87
  end
88
88
  end
data/test/TC_FXFont.rb CHANGED
@@ -15,7 +15,7 @@ class TC_FXFont < Test::Unit::TestCase
15
15
 
16
16
  def testConstructFromFontDescription
17
17
  fontdesc = @app.normalFont.fontDesc
18
- font = FXFont.new(@app, fontdesc)
18
+ FXFont.new(@app, fontdesc)
19
19
  end
20
20
 
21
21
  def testConstructFromParameters
@@ -42,7 +42,7 @@ class TC_FXFont < Test::Unit::TestCase
42
42
  end
43
43
 
44
44
  def testConstructFromFontString
45
- font = FXFont.new(@app, "")
45
+ FXFont.new(@app, "")
46
46
  end
47
47
 
48
48
  def testGetTextWidthAndHeight
data/test/TC_FXId.rb CHANGED
@@ -11,7 +11,7 @@ class TC_FXId < Fox::TestCase
11
11
 
12
12
  def test_created?
13
13
  assert !mainWindow.created?
14
- app.create
14
+ mainWindow.create
15
15
  assert mainWindow.created?, "main window should be created after call to FXApp#create"
16
16
  mainWindow.destroy
17
17
  assert !mainWindow.created?
data/test/TC_FXImage.rb CHANGED
@@ -119,7 +119,7 @@ class TC_FXImage < Fox::TestCase
119
119
  def test_create_with_non_owned_data
120
120
  GC.stress = true
121
121
  img = image_with_non_owned_data
122
- " " * 10000
122
+ _ = " " * 10000
123
123
  GC.stress = false
124
124
  assert_equal("rgbaRGBA", img.pixel_string)
125
125
  assert_equal(0, img.options)
@@ -134,7 +134,7 @@ class TC_FXImage < Fox::TestCase
134
134
  img = FXImage.new(app, nil, 0, 1, 2)
135
135
  GC.stress = true
136
136
  set_non_owned_data(img)
137
- " " * 10000
137
+ _ = " " * 10000
138
138
  GC.stress = false
139
139
  assert_equal("rgbaRGBA", img.pixel_string)
140
140
  assert_equal(0, img.options)
@@ -11,6 +11,7 @@ class TC_FXMainWindow < Test::Unit::TestCase
11
11
  end
12
12
 
13
13
  def test_non_created_app_raises_runtime_error
14
+ pend "two FXApp are not allowed"
14
15
  app = FXApp.new
15
16
  assert_raise RuntimeError do
16
17
  FXMainWindow.new(app, "title").create
data/test/TC_FXMat4f.rb CHANGED
@@ -81,9 +81,9 @@ class TC_FXMat4f < Test::Unit::TestCase
81
81
  def test_mul_by_scalar
82
82
  p = FXMat4f.new.eye
83
83
  q = FXMat4f.new(4.0, 0.0, 0.0, 0.0,
84
- 0.0, 4.0, 0.0, 0.0,
85
- 0.0, 0.0, 4.0, 0.0,
86
- 0.0, 0.0, 0.0, 4.0)
84
+ 0.0, 4.0, 0.0, 0.0,
85
+ 0.0, 0.0, 4.0, 0.0,
86
+ 0.0, 0.0, 0.0, 4.0)
87
87
  r = p*4.0
88
88
  assert_instance_of(FXMat4f, r)
89
89
  # assert_equal(q, r)
@@ -48,7 +48,7 @@ class TC_FXMaterial < Test::Unit::TestCase
48
48
  assert_in_delta(0.7, @mat.emission[2], DELTA)
49
49
  assert_in_delta(0.8, @mat.emission[3], DELTA)
50
50
 
51
- @mat.emission = FXHVec.new(0.5, 0.6, 0.7, 0.8)
51
+ @mat.emission = FXVec4f.new(0.5, 0.6, 0.7, 0.8)
52
52
  assert_in_delta(0.5, @mat.emission[0], DELTA)
53
53
  assert_in_delta(0.6, @mat.emission[1], DELTA)
54
54
  assert_in_delta(0.7, @mat.emission[2], DELTA)
@@ -12,7 +12,6 @@ class TC_FXMenuCheck < Fox::TestCase
12
12
 
13
13
  def test_setCheck_TRUE
14
14
  @menuCheck.check = Fox::TRUE
15
- assert_equal(true, @menuCheck.check)
16
15
  assert_equal(Fox::TRUE, @menuCheck.checkState)
17
16
  assert(@menuCheck.checked?)
18
17
  assert(!@menuCheck.unchecked?)
@@ -21,7 +20,6 @@ class TC_FXMenuCheck < Fox::TestCase
21
20
 
22
21
  def test_setCheck_FALSE
23
22
  @menuCheck.check = Fox::FALSE
24
- assert_equal(false, @menuCheck.check)
25
23
  assert_equal(Fox::FALSE, @menuCheck.checkState)
26
24
  assert(!@menuCheck.checked?)
27
25
  assert(@menuCheck.unchecked?)
@@ -30,7 +28,6 @@ class TC_FXMenuCheck < Fox::TestCase
30
28
 
31
29
  def test_setCheck_MAYBE
32
30
  @menuCheck.check = Fox::MAYBE
33
- assert_equal(true, @menuCheck.check) # this is not a typo!
34
31
  assert_equal(Fox::MAYBE, @menuCheck.checkState)
35
32
  assert(!@menuCheck.checked?)
36
33
  assert(!@menuCheck.unchecked?)
@@ -39,7 +36,6 @@ class TC_FXMenuCheck < Fox::TestCase
39
36
 
40
37
  def test_setCheck_true
41
38
  @menuCheck.check = true
42
- assert_equal(true, @menuCheck.check)
43
39
  assert_equal(Fox::TRUE, @menuCheck.checkState)
44
40
  assert(@menuCheck.checked?)
45
41
  assert(!@menuCheck.unchecked?)
@@ -48,7 +44,6 @@ class TC_FXMenuCheck < Fox::TestCase
48
44
 
49
45
  def test_setCheck_false
50
46
  @menuCheck.check = false
51
- assert_equal(false, @menuCheck.check)
52
47
  assert_equal(Fox::FALSE, @menuCheck.checkState)
53
48
  assert(!@menuCheck.checked?)
54
49
  assert(@menuCheck.unchecked?)
@@ -12,7 +12,6 @@ class TC_FXMenuRadio < Fox::TestCase
12
12
 
13
13
  def test_setCheck_TRUE
14
14
  @menuRadio.check = Fox::TRUE
15
- assert_equal(true, @menuRadio.check)
16
15
  assert_equal(Fox::TRUE, @menuRadio.checkState)
17
16
  assert(@menuRadio.checked?)
18
17
  assert(!@menuRadio.unchecked?)
@@ -21,7 +20,6 @@ class TC_FXMenuRadio < Fox::TestCase
21
20
 
22
21
  def test_setCheck_FALSE
23
22
  @menuRadio.check = Fox::FALSE
24
- assert_equal(false, @menuRadio.check)
25
23
  assert_equal(Fox::FALSE, @menuRadio.checkState)
26
24
  assert(!@menuRadio.checked?)
27
25
  assert(@menuRadio.unchecked?)
@@ -30,7 +28,6 @@ class TC_FXMenuRadio < Fox::TestCase
30
28
 
31
29
  def test_setCheck_MAYBE
32
30
  @menuRadio.check = Fox::MAYBE
33
- assert_equal(true, @menuRadio.check) # this is not a typo!
34
31
  assert_equal(Fox::MAYBE, @menuRadio.checkState)
35
32
  assert(!@menuRadio.checked?)
36
33
  assert(!@menuRadio.unchecked?)
@@ -39,7 +36,6 @@ class TC_FXMenuRadio < Fox::TestCase
39
36
 
40
37
  def test_setCheck_true
41
38
  @menuRadio.check = true
42
- assert_equal(true, @menuRadio.check)
43
39
  assert_equal(Fox::TRUE, @menuRadio.checkState)
44
40
  assert(@menuRadio.checked?)
45
41
  assert(!@menuRadio.unchecked?)
@@ -48,7 +44,6 @@ class TC_FXMenuRadio < Fox::TestCase
48
44
 
49
45
  def test_setCheck_false
50
46
  @menuRadio.check = false
51
- assert_equal(false, @menuRadio.check)
52
47
  assert_equal(Fox::FALSE, @menuRadio.checkState)
53
48
  assert(!@menuRadio.checked?)
54
49
  assert(@menuRadio.unchecked?)
data/test/TC_FXQuatf.rb CHANGED
@@ -9,23 +9,23 @@ class TC_FXQuatf < Test::Unit::TestCase
9
9
  end
10
10
 
11
11
  def test_default_constructor
12
- q = FXQuatf.new
12
+ FXQuatf.new
13
13
  end
14
14
 
15
15
  def test_construct_from_axis_and_angle
16
16
  axis = FXVec3f.new(1.0, 1.0, 1.0)
17
- q = FXQuatf.new(axis)
18
- q = FXQuatf.new(axis, 0.0)
17
+ FXQuatf.new(axis)
18
+ FXQuatf.new(axis, 0.0)
19
19
  end
20
20
 
21
21
  def test_construct_from_components
22
22
  x, y, z, w = 1.0, 1.0, 1.0, 1.0
23
- q = FXQuatf.new(x, y, z, w)
23
+ FXQuatf.new(x, y, z, w)
24
24
  end
25
25
 
26
26
  def test_construct_from_roll_pitch_yaw
27
27
  roll, pitch, yaw = 45.0, 45.0, 45.0
28
- q = FXQuatf.new(roll, pitch, yaw)
28
+ FXQuatf.new(roll, pitch, yaw)
29
29
  end
30
30
 
31
31
  def test_adjust!
@@ -12,7 +12,6 @@ class TC_FXRadioButton < Fox::TestCase
12
12
 
13
13
  def test_setCheck_TRUE
14
14
  @radioButton.check = Fox::TRUE
15
- assert_equal(true, @radioButton.check)
16
15
  assert_equal(Fox::TRUE, @radioButton.checkState)
17
16
  assert(@radioButton.checked?)
18
17
  assert(!@radioButton.unchecked?)
@@ -21,7 +20,6 @@ class TC_FXRadioButton < Fox::TestCase
21
20
 
22
21
  def test_setCheck_FALSE
23
22
  @radioButton.check = Fox::FALSE
24
- assert_equal(false, @radioButton.check)
25
23
  assert_equal(Fox::FALSE, @radioButton.checkState)
26
24
  assert(!@radioButton.checked?)
27
25
  assert(@radioButton.unchecked?)
@@ -30,7 +28,6 @@ class TC_FXRadioButton < Fox::TestCase
30
28
 
31
29
  def test_setCheck_MAYBE
32
30
  @radioButton.check = Fox::MAYBE
33
- assert_equal(true, @radioButton.check) # this is not a typo!
34
31
  assert_equal(Fox::MAYBE, @radioButton.checkState)
35
32
  assert(!@radioButton.checked?)
36
33
  assert(!@radioButton.unchecked?)
@@ -39,7 +36,6 @@ class TC_FXRadioButton < Fox::TestCase
39
36
 
40
37
  def test_setCheck_true
41
38
  @radioButton.check = true
42
- assert_equal(true, @radioButton.check)
43
39
  assert_equal(Fox::TRUE, @radioButton.checkState)
44
40
  assert(@radioButton.checked?)
45
41
  assert(!@radioButton.unchecked?)
@@ -48,7 +44,6 @@ class TC_FXRadioButton < Fox::TestCase
48
44
 
49
45
  def test_setCheck_false
50
46
  @radioButton.check = false
51
- assert_equal(false, @radioButton.check)
52
47
  assert_equal(Fox::FALSE, @radioButton.checkState)
53
48
  assert(!@radioButton.checked?)
54
49
  assert(@radioButton.unchecked?)
data/test/TC_FXRegion.rb CHANGED
@@ -17,9 +17,9 @@ class TC_FXRegion < Test::Unit::TestCase
17
17
  FXPoint.new(100, 100),
18
18
  FXPoint.new(0, 0)
19
19
  ]
20
- r1 = FXRegion.new(points, true)
21
- r2 = FXRegion.new(points, false)
22
- r3 = FXRegion.new(points)
20
+ FXRegion.new(points, true)
21
+ FXRegion.new(points, false)
22
+ FXRegion.new(points)
23
23
  end
24
24
 
25
25
  def test_copy_constructor
data/test/TC_FXShell.rb CHANGED
@@ -22,6 +22,7 @@ class TC_FXShell < Test::Unit::TestCase
22
22
  def test_new
23
23
  # Free-floating
24
24
  shell1 = FXShell.new(@app, 0, 0, 0, 0, 0)
25
+ assert_nil(shell1.owner)
25
26
 
26
27
  # Owned
27
28
  shell2 = FXShell.new(@mainWin, 0, 0, 0, 0, 0)
data/test/TC_FXTable.rb CHANGED
@@ -76,7 +76,7 @@ private
76
76
  clearEdges(extending)
77
77
 
78
78
  old_nr = @table.numRows
79
- old_nc = @table.numColumns
79
+ _old_nc = @table.numColumns
80
80
 
81
81
  # resize the table
82
82
  nr = @data_lines.size + 2
data/test/TC_FXVec4f.rb CHANGED
@@ -39,7 +39,7 @@ class TC_FXVec4f < Test::Unit::TestCase
39
39
  end
40
40
 
41
41
  def test_new5
42
- c = FXVec4f.new(FXRGB(128, 128, 128))
42
+ FXVec4f.new(FXRGB(128, 128, 128))
43
43
  end
44
44
 
45
45
  def test_getitem
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fxruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.32
4
+ version: 1.6.33
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Lyle Johnson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-07 00:00:00.000000000 Z
12
+ date: 2015-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mini_portile