fxruby 1.6.29-x86-mingw32 → 1.6.30-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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +11 -0
  3. data/Manifest.txt +5 -0
  4. data/Rakefile +8 -2
  5. data/examples/gltest.rb +0 -7
  6. data/examples/groupbox.rb +5 -3
  7. data/examples/thread.rb +55 -0
  8. data/ext/fox16_c/FXRbApp.cpp +67 -5
  9. data/ext/fox16_c/FXRuby.cpp +142 -110
  10. data/ext/fox16_c/extconf.rb +36 -28
  11. data/ext/fox16_c/gvl_wrappers.cpp +12 -0
  12. data/ext/fox16_c/include/FXRbApp.h +41 -6
  13. data/ext/fox16_c/include/FXRbBitmap.h +12 -12
  14. data/ext/fox16_c/include/FXRbCommon.h +3 -0
  15. data/ext/fox16_c/include/FXRbCursor.h +2 -2
  16. data/ext/fox16_c/include/FXRbDC.h +62 -62
  17. data/ext/fox16_c/include/FXRbDialogBox.h +2 -2
  18. data/ext/fox16_c/include/FXRbDockBar.h +3 -3
  19. data/ext/fox16_c/include/FXRbDockSite.h +4 -4
  20. data/ext/fox16_c/include/FXRbDrawable.h +1 -1
  21. data/ext/fox16_c/include/FXRbFileDict.h +3 -3
  22. data/ext/fox16_c/include/FXRbFoldingList.h +28 -28
  23. data/ext/fox16_c/include/FXRbFont.h +18 -18
  24. data/ext/fox16_c/include/FXRbGLCanvas.h +4 -4
  25. data/ext/fox16_c/include/FXRbGLObject.h +8 -8
  26. data/ext/fox16_c/include/FXRbGLShape.h +1 -1
  27. data/ext/fox16_c/include/FXRbGLViewer.h +3 -3
  28. data/ext/fox16_c/include/FXRbHeader.h +7 -7
  29. data/ext/fox16_c/include/FXRbIconList.h +28 -28
  30. data/ext/fox16_c/include/FXRbIconSource.h +12 -12
  31. data/ext/fox16_c/include/FXRbId.h +3 -3
  32. data/ext/fox16_c/include/FXRbImage.h +19 -19
  33. data/ext/fox16_c/include/FXRbList.h +21 -21
  34. data/ext/fox16_c/include/FXRbListBox.h +1 -1
  35. data/ext/fox16_c/include/FXRbMDIChild.h +4 -4
  36. data/ext/fox16_c/include/FXRbMDIClient.h +4 -4
  37. data/ext/fox16_c/include/FXRbObject.h +2 -2
  38. data/ext/fox16_c/include/FXRbPopup.h +2 -2
  39. data/ext/fox16_c/include/FXRbRealSpinner.h +1 -1
  40. data/ext/fox16_c/include/FXRbScrollArea.h +4 -4
  41. data/ext/fox16_c/include/FXRbShutter.h +1 -1
  42. data/ext/fox16_c/include/FXRbSpinner.h +1 -1
  43. data/ext/fox16_c/include/FXRbStream.h +3 -3
  44. data/ext/fox16_c/include/FXRbTabBar.h +1 -1
  45. data/ext/fox16_c/include/FXRbTable.h +53 -53
  46. data/ext/fox16_c/include/FXRbText.h +23 -23
  47. data/ext/fox16_c/include/FXRbTopWindow.h +5 -5
  48. data/ext/fox16_c/include/FXRbTranslator.h +1 -1
  49. data/ext/fox16_c/include/FXRbTreeList.h +28 -28
  50. data/ext/fox16_c/include/FXRbTreeListBox.h +1 -1
  51. data/ext/fox16_c/include/FXRbWindow.h +31 -31
  52. data/ext/fox16_c/include/FXRuby.h +200 -94
  53. data/ext/fox16_c/include/gvl_wrappers.h +594 -0
  54. data/lib/1.8/fox16_c.so +0 -0
  55. data/lib/1.9/fox16_c.so +0 -0
  56. data/lib/2.0/fox16_c.so +0 -0
  57. data/lib/2.1/fox16_c.so +0 -0
  58. data/lib/2.2/fox16_c.so +0 -0
  59. data/lib/fox16.rb +1 -0
  60. data/lib/fox16/thread.rb +51 -0
  61. data/lib/fox16/version.rb +1 -1
  62. data/lib/x86-mingw32/libFOX-1.6-0.dll +0 -0
  63. data/lib/x86-mingw32/libfxscintilla-20.dll +0 -0
  64. data/lib/x86-mingw32/libgcc_s_sjlj-1.dll +0 -0
  65. data/lib/x86-mingw32/libjpeg-8.dll +0 -0
  66. data/lib/x86-mingw32/libpng15-15.dll +0 -0
  67. data/lib/x86-mingw32/libstdc++-6.dll +0 -0
  68. data/lib/x86-mingw32/libtiff-5.dll +0 -0
  69. data/lib/x86-mingw32/libwinpthread-1.dll +0 -0
  70. data/lib/x86-mingw32/zlib1.dll +0 -0
  71. data/rdoc-sources/FXApp.rb +5 -0
  72. data/rdoc-sources/FXId.rb +5 -0
  73. data/swig-interfaces/FXApp.i +14 -78
  74. data/swig-interfaces/macros.i +56 -0
  75. data/test/TC_FXApp.rb +60 -10
  76. data/test/TC_FXJPGImage.rb +47 -0
  77. metadata +24 -103
  78. checksums.yaml.gz.sig +0 -0
  79. data.tar.gz.sig +0 -0
  80. metadata.gz.sig +0 -0
@@ -7,7 +7,7 @@ def find_installed_fox_version
7
7
  stddirs = ["/usr/include/fox-1.6",
8
8
  "/usr/local/include/fox-1.6",
9
9
  "/sw/include/fox-1.6",
10
- "/opt/local/include/fox-1.6"]
10
+ "/opt/local/include/fox-1.6"]
11
11
  usrdirs = []
12
12
  ARGV.each do |arg|
13
13
  if arg =~ /--with-fox-include/
@@ -109,12 +109,13 @@ def do_rake_compiler_setup
109
109
 
110
110
  dir_config("installed")
111
111
 
112
+ host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
112
113
  libz_recipe = MiniPortile.new("libz", LIBZ_VERSION).tap do |recipe|
113
114
  recipe.files = [LIBZ_SOURCE_URI]
114
115
  recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
115
116
  # Prefer host_alias over host in order to use i586-mingw32msvc as
116
117
  # correct compiler prefix for cross build, but use host if not set.
117
- recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
118
+ recipe.host = host
118
119
  class << recipe
119
120
  def configure
120
121
  Dir.chdir work_path do
@@ -157,7 +158,7 @@ def do_rake_compiler_setup
157
158
  recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
158
159
  # Prefer host_alias over host in order to use i586-mingw32msvc as
159
160
  # correct compiler prefix for cross build, but use host if not set.
160
- recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
161
+ recipe.host = host
161
162
  recipe.configure_options = [
162
163
  "--host=#{recipe.host}",
163
164
  "--enable-shared",
@@ -182,7 +183,7 @@ def do_rake_compiler_setup
182
183
  recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
183
184
  # Prefer host_alias over host in order to use i586-mingw32msvc as
184
185
  # correct compiler prefix for cross build, but use host if not set.
185
- recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
186
+ recipe.host = host
186
187
  recipe.configure_options = [
187
188
  "--host=#{recipe.host}",
188
189
  "--enable-shared",
@@ -202,7 +203,7 @@ def do_rake_compiler_setup
202
203
  recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
203
204
  # Prefer host_alias over host in order to use i586-mingw32msvc as
204
205
  # correct compiler prefix for cross build, but use host if not set.
205
- recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
206
+ recipe.host = host
206
207
  recipe.configure_options = [
207
208
  "--host=#{recipe.host}",
208
209
  "--enable-shared",
@@ -222,7 +223,7 @@ def do_rake_compiler_setup
222
223
  recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
223
224
  # Prefer host_alias over host in order to use i586-mingw32msvc as
224
225
  # correct compiler prefix for cross build, but use host if not set.
225
- recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
226
+ recipe.host = host
226
227
  recipe.configure_options = [
227
228
  "--host=#{recipe.host}",
228
229
  "--without-xft",
@@ -255,7 +256,7 @@ def do_rake_compiler_setup
255
256
  recipe.target = portsdir = File.expand_path('../../../ports', __FILE__)
256
257
  # Prefer host_alias over host in order to use i586-mingw32msvc as
257
258
  # correct compiler prefix for cross build, but use host if not set.
258
- recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
259
+ recipe.host = host
259
260
  recipe.configure_options = [
260
261
  "--host=#{recipe.host}",
261
262
  "--enable-shared",
@@ -282,22 +283,19 @@ def do_rake_compiler_setup
282
283
 
283
284
  checkpoint = File.join(portsdir, "#{recipe.name}-#{recipe.version}-#{recipe.host}.installed")
284
285
  unless File.exist?(checkpoint)
285
- recipe.cook
286
- FileUtils.touch checkpoint
286
+ with_env(
287
+ 'PKG_CONFIG_PATH' => "#{libfox_recipe.path}/lib/pkgconfig"
288
+ ) do
289
+ recipe.cook
290
+ FileUtils.touch checkpoint
291
+ end
287
292
  end
288
293
  recipe.activate
289
294
  end
295
+ $autodetected_fxscintilla = true
290
296
 
291
- # have_library( 'gdi32', 'CreateDC' ) && append_library( $libs, 'gdi32' )
292
- # have_library( 'opengl32' ) && append_library( $libs, 'opengl32' )
293
- # have_library( 'winspool', 'EnumPrintersA') && append_library( $libs, 'winspool' )
294
-
295
- # dir_config('libz', "#{libz_recipe.path}/include", "#{libz_recipe.path}/lib")
296
- # dir_config('libpng', "#{libpng_recipe.path}/include", "#{libpng_recipe.path}/lib")
297
- # dir_config('libtiff', "#{libtiff_recipe.path}/include", "#{libtiff_recipe.path}/lib")
298
- # dir_config('libjpeg', "#{libjpeg_recipe.path}/include", "#{libjpeg_recipe.path}/lib")
299
- dir_config('libfox', "#{libfox_recipe.path}/include", "#{libfox_recipe.path}/lib")
300
- dir_config('libfxscintilla', "#{libfxscintills_recipe.path}/include", "#{libfxscintills_recipe.path}/lib")
297
+ dir_config('libfox', "#{libfox_recipe.path}/include/fox-1.6", "#{libfox_recipe.path}/lib")
298
+ dir_config('libfxscintilla', "#{libfxscintills_recipe.path}/include/fxscintilla", "#{libfxscintills_recipe.path}/lib")
301
299
 
302
300
  shared_dlls = [
303
301
  "#{libfxscintills_recipe.path}/bin/libfxscintilla-20.dll",
@@ -320,7 +318,7 @@ def do_rake_compiler_setup
320
318
  FileUtils.cp `#{cmd}`.chomp, '.', verbose: true
321
319
  end
322
320
 
323
- CONFIG['CXX'] = "#{RbConfig::CONFIG["host"]}-g++" # CXX setting must be prefixed for cross build
321
+ CONFIG['CXX'] = "#{host}-g++" # CXX setting must be prefixed for cross build
324
322
  CONFIG['CC'] += "\nCXX=#{CONFIG['CXX']}" # Hack CXX into Makefile for cross compilation
325
323
  CONFIG['LDSHARED'].gsub!('gcc', 'g++') # ensure C++ linker is used, so that libstdc++ is linked static
326
324
  $LDFLAGS += " -s" # remove symbol table informations from shared lib
@@ -350,8 +348,8 @@ def do_rake_compiler_setup
350
348
  find_library("GLU", "gluNewQuadric", "/usr/X11R6/lib")
351
349
  $libs = append_library($libs, "Xrandr") unless RUBY_PLATFORM =~ /mingw/ || enable_config("win32-static-build")
352
350
  $libs = append_library($libs, "Xcursor") unless RUBY_PLATFORM =~ /mingw/ || enable_config("win32-static-build")
353
- find_header('FXRbCommon.h', File.join(File.dirname(__FILE__), 'include'))
354
351
  $libs = append_library($libs, "FOX-1.6")
352
+ $INCFLAGS << " -I#{File.join(File.dirname(__FILE__), 'include')}"
355
353
  if is_fxscintilla_build?
356
354
  FileUtils.move('scintilla_wrap.cpp.bak', 'scintilla_wrap.cpp') if FileTest.exist?('scintilla_wrap.cpp.bak')
357
355
  $CPPFLAGS = $CPPFLAGS + " -DWITH_FXSCINTILLA -DHAVE_FOX_1_6"
@@ -359,6 +357,13 @@ def do_rake_compiler_setup
359
357
  else
360
358
  FileUtils.move('scintilla_wrap.cpp', 'scintilla_wrap.cpp.bak') if FileTest.exist?('scintilla_wrap.cpp')
361
359
  end
360
+
361
+ checking_for("thread local variables") do
362
+ $defs.push( "-DHAVE___THREAD" ) if try_compile('__thread int x=1;')
363
+ end &&
364
+ have_func('rb_thread_call_without_gvl') &&
365
+ have_func('rb_thread_call_with_gvl')
366
+
362
367
  end
363
368
 
364
369
  # This directive processes the "--with-fox-include" and "--with-fox-lib"
@@ -372,15 +377,17 @@ dir_config('fox', '/usr/local/include/fox-1.6', '/usr/local/lib')
372
377
 
373
378
  dir_config('fxscintilla', '/usr/local/include/fxscintilla', '/usr/local/lib')
374
379
 
375
- find_installed_fox_version
380
+ unless enable_config("win32-cross")
381
+ find_installed_fox_version
376
382
 
377
- #
378
- # Check for FXScintilla header files, unless FXScintilla support has
379
- # been explicitly suppressed with the '--without-fxscintilla' flag.
380
- #
383
+ #
384
+ # Check for FXScintilla header files, unless FXScintilla support has
385
+ # been explicitly suppressed with the '--without-fxscintilla' flag.
386
+ #
381
387
 
382
- unless fxscintilla_support_suppressed?
383
- find_installed_fxscintilla_version
388
+ unless fxscintilla_support_suppressed?
389
+ find_installed_fxscintilla_version
390
+ end
384
391
  end
385
392
 
386
393
  # Platform-specific modifications
@@ -391,4 +398,5 @@ $CFLAGS += " -DRUBY_1_9" if RUBY_VERSION =~ /1\.9\./
391
398
  $CFLAGS += " -DRUBY_2_0" if RUBY_VERSION =~ /2\.0\./
392
399
 
393
400
  # Last step: build the makefile
401
+ create_header
394
402
  create_makefile("fox16_c")
@@ -0,0 +1,12 @@
1
+ /*
2
+ * gvl_wrappers.c - Wrapper functions for locking/unlocking the Ruby GVL
3
+ *
4
+ */
5
+
6
+ #include "FXRbCommon.h"
7
+
8
+ __thread int g_fxrb_thread_has_gvl = 1;
9
+
10
+ FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_WRAPPER_STRUCT );
11
+ FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_SKELETON );
12
+ FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_STUB );
@@ -38,6 +38,33 @@ inline void cls ## _detach(cls *self){ \
38
38
  inline void cls ## _create(cls *self){ \
39
39
  self->cls::create(); \
40
40
  } \
41
+ inline FXint cls ## _run_gvl(cls *self){ \
42
+ return self->cls::run(); \
43
+ } \
44
+ inline FXint cls ## _runOneEvent_gvl(cls *self, bool blocking=true){ \
45
+ return self->cls::runOneEvent(blocking); \
46
+ } \
47
+ inline FXint cls ## _runUntil_gvl(cls *self, FXuint& condition){ \
48
+ return self->cls::runUntil(condition); \
49
+ } \
50
+ inline FXint cls ## _runWhileEvents_gvl(cls *self){ \
51
+ return self->cls::runWhileEvents(); \
52
+ } \
53
+ inline FXint cls ## _runModalWhileEvents_gvl(cls *self, FXWindow* window=NULL){ \
54
+ return self->cls::runModalWhileEvents(window); \
55
+ } \
56
+ inline FXint cls ## _runModal_gvl(cls *self){ \
57
+ return self->cls::runModal(); \
58
+ } \
59
+ inline FXint cls ## _runModalFor_gvl(cls *self, FXWindow* window){ \
60
+ return self->cls::runModalFor(window); \
61
+ } \
62
+ inline FXint cls ## _runModalWhileShown_gvl(cls *self, FXWindow* window){ \
63
+ return self->cls::runModalWhileShown(window); \
64
+ } \
65
+ inline FXint cls ## _runPopup_gvl(cls *self, FXWindow* owner){ \
66
+ return self->cls::runPopup(owner); \
67
+ } \
41
68
  static void cls ## _init(cls* self,VALUE ary,bool connect){ \
42
69
  int i; \
43
70
  char **argv; \
@@ -62,7 +89,6 @@ inline void cls ## _exit(cls *self,FXint code){ \
62
89
  self->cls::exit(code); \
63
90
  }
64
91
 
65
-
66
92
  /**
67
93
  * For C/C++ applications, the argument count (argc) will always be at least
68
94
  * one, and the first element of the argument array (argv[0]) will contain
@@ -83,13 +109,13 @@ inline void cls ## _exit(cls *self,FXint code){ \
83
109
  */
84
110
  #define IMPLEMENT_FXAPP_STUBS(cls) \
85
111
  void cls::create(){ \
86
- FXRbCallVoidMethod(this,rb_intern("create")); \
112
+ FXRbCallVoidMethod(this,"create"); \
87
113
  } \
88
114
  void cls::detach(){ \
89
- FXRbCallVoidMethod(this,rb_intern("detach")); \
115
+ FXRbCallVoidMethod(this,"detach"); \
90
116
  } \
91
117
  void cls::destroy(){ \
92
- FXRbCallVoidMethod(this,rb_intern("destroy")); \
118
+ FXRbCallVoidMethod(this,"destroy"); \
93
119
  } \
94
120
  void cls::init(int& argc,char** argv,bool connect){ \
95
121
  int i; \
@@ -97,7 +123,7 @@ inline void cls ## _exit(cls *self,FXint code){ \
97
123
  for(i=1; i<argc; i++){ \
98
124
  rb_ary_push(ary,rb_str_new2(argv[i])); \
99
125
  } \
100
- FXRbCallVoidMethod(this,rb_intern("init"),ary,connect); \
126
+ FXRbCallVoidMethod(this,"init",ary,connect); \
101
127
  argc=static_cast<int>(RARRAY_LEN(ary)+1); \
102
128
  for(i=1; i<argc; i++){ \
103
129
  VALUE e=rb_ary_entry(ary,i-1); \
@@ -105,7 +131,7 @@ inline void cls ## _exit(cls *self,FXint code){ \
105
131
  } \
106
132
  } \
107
133
  void cls::exit(FXint code){ \
108
- FXRbCallVoidMethod(this,rb_intern("exit"),code); \
134
+ FXRbCallVoidMethod(this,"exit",code); \
109
135
  }
110
136
 
111
137
 
@@ -114,6 +140,12 @@ class FXRbApp : public FXApp {
114
140
  protected:
115
141
  FXbool m_bThreadsEnabled;
116
142
  FXuint sleepTime;
143
+ public:
144
+ #ifdef WIN32
145
+ static WSAEVENT interrupt_event;
146
+ #else
147
+ static int interrupt_fds[2];
148
+ #endif
117
149
  protected:
118
150
  FXRbApp(){}
119
151
  public:
@@ -126,6 +158,7 @@ public:
126
158
  };
127
159
  public:
128
160
  long onChoreThreads(FXObject*,FXSelector,void*);
161
+ long onChoreThreads_gvlcb(FXObject*,FXSelector,void*);
129
162
  public:
130
163
  // Constructor
131
164
  FXRbApp(const FXchar* name,const FXchar* vendor);
@@ -152,4 +185,6 @@ public:
152
185
  virtual ~FXRbApp();
153
186
  };
154
187
 
188
+ long FXRbApp_onChoreThreads_gvlcb(FXRbApp*,FXObject*,FXSelector,void*);
189
+
155
190
  #endif
@@ -68,40 +68,40 @@ inline void cls ## _setData(cls* self,FXuchar* pix,FXuint opts,FXint w,FXint h){
68
68
 
69
69
  #define IMPLEMENT_FXBITMAP_STUBS(cls) \
70
70
  void cls::restore(){ \
71
- FXRbCallVoidMethod(this,rb_intern("restore")); \
71
+ FXRbCallVoidMethod(this,"restore"); \
72
72
  } \
73
73
  void cls::render(){ \
74
- FXRbCallVoidMethod(this,rb_intern("render")); \
74
+ FXRbCallVoidMethod(this,"render"); \
75
75
  } \
76
76
  void cls::release(){ \
77
- FXRbCallVoidMethod(this,rb_intern("release")); \
77
+ FXRbCallVoidMethod(this,"release"); \
78
78
  } \
79
79
  bool cls::savePixels(FXStream& store) const { \
80
- return FXRbCallBoolMethod(this,rb_intern("savePixels"),store); \
80
+ return FXRbCallBoolMethod(this,"savePixels",store); \
81
81
  } \
82
82
  bool cls::loadPixels(FXStream& store){ \
83
- return FXRbCallBoolMethod(this,rb_intern("loadPixels"),store); \
83
+ return FXRbCallBoolMethod(this,"loadPixels",store); \
84
84
  } \
85
85
  void cls::scale(FXint w,FXint h){ \
86
- FXRbCallVoidMethod(this,rb_intern("scale"),w,h); \
86
+ FXRbCallVoidMethod(this,"scale",w,h); \
87
87
  } \
88
88
  void cls::mirror(FXbool horizontal,FXbool vertical){ \
89
- FXRbCallVoidMethod(this,rb_intern("mirror"),horizontal,vertical); \
89
+ FXRbCallVoidMethod(this,"mirror",horizontal,vertical); \
90
90
  } \
91
91
  void cls::rotate(FXint degrees){ \
92
- FXRbCallVoidMethod(this,rb_intern("rotate"),degrees); \
92
+ FXRbCallVoidMethod(this,"rotate",degrees); \
93
93
  } \
94
94
  void cls::crop(FXint x,FXint y,FXint w,FXint h,FXbool color){ \
95
- FXRbCallVoidMethod(this,rb_intern("crop"),x,y,w,h,color); \
95
+ FXRbCallVoidMethod(this,"crop",x,y,w,h,color); \
96
96
  } \
97
97
  void cls::fill(FXbool color){ \
98
- FXRbCallVoidMethod(this,rb_intern("fill"),color); \
98
+ FXRbCallVoidMethod(this,"fill",color); \
99
99
  } \
100
100
  void cls::setData(FXuchar* pix,FXuint opts){ \
101
- FXRbCallVoidMethod(this,rb_intern("setData"),pix,opts); \
101
+ FXRbCallVoidMethod(this,"setData",pix,opts); \
102
102
  } \
103
103
  void cls::setData(FXuchar* pix,FXuint opts,FXint w,FXint h){ \
104
- FXRbCallVoidMethod(this,rb_intern("setData"),pix,opts,w,h); \
104
+ FXRbCallVoidMethod(this,"setData",pix,opts,w,h); \
105
105
  }
106
106
 
107
107
 
@@ -27,6 +27,8 @@
27
27
  extern "C" {
28
28
  #include "ruby.h"
29
29
 
30
+ #include "extconf.h"
31
+
30
32
  #ifdef HAVE_RUBY_ENCODING_H
31
33
  #include "ruby/encoding.h"
32
34
  #endif
@@ -97,3 +99,4 @@ extern "C" {
97
99
  #include "FXScintilla.h"
98
100
  #endif
99
101
  #include "FXRuby.h"
102
+ #include "gvl_wrappers.h"
@@ -38,10 +38,10 @@ inline bool klass ## _loadPixels(klass* self,FXStream& store){ \
38
38
 
39
39
  #define IMPLEMENT_FXCURSOR_STUBS(cls) \
40
40
  bool cls::savePixels(FXStream& store) const { \
41
- return FXRbCallBoolMethod(this,rb_intern("savePixels"),store); \
41
+ return FXRbCallBoolMethod(this,"savePixels",store); \
42
42
  } \
43
43
  bool cls::loadPixels(FXStream& store){ \
44
- return FXRbCallBoolMethod(this,rb_intern("loadPixels"),store); \
44
+ return FXRbCallBoolMethod(this,"loadPixels",store); \
45
45
  }
46
46
 
47
47
  class FXRbCursor : public FXCursor {
@@ -218,190 +218,190 @@ inline void klass ## _clipChildren(klass* self,FXbool yes){ \
218
218
 
219
219
  #define IMPLEMENT_FXDC_STUBS(cls) \
220
220
  FXColor cls::readPixel(FXint x,FXint y){ \
221
- return FXRbCallColorMethod(this,rb_intern("readPixel"),x,y); \
221
+ return FXRbCallColorMethod(this,"readPixel",x,y); \
222
222
  } \
223
223
  void cls::drawPoint(FXint x,FXint y){ \
224
- FXRbCallVoidMethod(this,rb_intern("drawPoint"),x,y); \
224
+ FXRbCallVoidMethod(this,"drawPoint",x,y); \
225
225
  } \
226
226
  void cls::drawPoints(const FXPoint* points,FXuint npoints){ \
227
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawPoints"),1,FXRbMakeArray(points,npoints)); \
227
+ FXRbCallVoidArrayMethod(this,"drawPoints",points,npoints); \
228
228
  } \
229
229
  void cls::drawPointsRel(const FXPoint* points,FXuint npoints){ \
230
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawPointsRel"),1,FXRbMakeArray(points,npoints)); \
230
+ FXRbCallVoidArrayMethod(this,"drawPointsRel",points,npoints); \
231
231
  } \
232
232
  void cls::drawLine(FXint x1,FXint y1,FXint x2,FXint y2){ \
233
- FXRbCallVoidMethod(this,rb_intern("drawLine"),x1,y1,x2,y2); \
233
+ FXRbCallVoidMethod(this,"drawLine",x1,y1,x2,y2); \
234
234
  } \
235
235
  void cls::drawLines(const FXPoint* points,FXuint npoints){ \
236
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawLines"),1,FXRbMakeArray(points,npoints)); \
236
+ FXRbCallVoidArrayMethod(this,"drawLines",points,npoints); \
237
237
  } \
238
238
  void cls::drawLinesRel(const FXPoint* points,FXuint npoints){ \
239
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawLinesRel"),1,FXRbMakeArray(points,npoints)); \
239
+ FXRbCallVoidArrayMethod(this,"drawLinesRel",points,npoints); \
240
240
  } \
241
241
  void cls::drawLineSegments(const FXSegment* segments,FXuint nsegments){ \
242
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawLineSegments"),1,FXRbMakeArray(segments,nsegments)); \
242
+ FXRbCallVoidArrayMethod(this,"drawLineSegments",segments,nsegments); \
243
243
  } \
244
244
  void cls::drawRectangle(FXint x,FXint y,FXint w,FXint h){ \
245
- FXRbCallVoidMethod(this,rb_intern("drawRectangle"),x,y,w,h); \
245
+ FXRbCallVoidMethod(this,"drawRectangle",x,y,w,h); \
246
246
  } \
247
247
  void cls::drawRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh){ \
248
- FXRbCallVoidMethod(this,rb_intern("drawRoundRectangle"),x,y,w,h,ew,eh); \
248
+ FXRbCallVoidMethod(this,"drawRoundRectangle",x,y,w,h,ew,eh); \
249
249
  } \
250
250
  void cls::drawRectangles(const FXRectangle* rectangles,FXuint nrectangles){ \
251
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawRectangles"),1,FXRbMakeArray(rectangles,nrectangles)); \
251
+ FXRbCallVoidArrayMethod(this,"drawRectangles",rectangles,nrectangles); \
252
252
  } \
253
253
  void cls::drawArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2){ \
254
- FXRbCallVoidMethod(this,rb_intern("drawArc"),x,y,w,h,ang1,ang2); \
254
+ FXRbCallVoidMethod(this,"drawArc",x,y,w,h,ang1,ang2); \
255
255
  } \
256
256
  void cls::drawArcs(const FXArc* arcs,FXuint narcs){ \
257
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawArcs"),1,FXRbMakeArray(arcs,narcs)); \
257
+ FXRbCallVoidArrayMethod(this,"drawArcs",arcs,narcs); \
258
258
  } \
259
259
  void cls::drawEllipse(FXint x,FXint y,FXint w,FXint h){ \
260
- FXRbCallVoidMethod(this,rb_intern("drawEllipse"),x,y,w,h); \
260
+ FXRbCallVoidMethod(this,"drawEllipse",x,y,w,h); \
261
261
  } \
262
262
  void cls::fillRectangle(FXint x,FXint y,FXint w,FXint h){ \
263
- FXRbCallVoidMethod(this,rb_intern("fillRectangle"),x,y,w,h); \
263
+ FXRbCallVoidMethod(this,"fillRectangle",x,y,w,h); \
264
264
  } \
265
265
  void cls::fillRectangles(const FXRectangle* rectangles,FXuint nrectangles){ \
266
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillRectangles"),1,FXRbMakeArray(rectangles,nrectangles)); \
266
+ FXRbCallVoidArrayMethod(this,"fillRectangles",rectangles,nrectangles); \
267
267
  } \
268
268
  void cls::fillRoundRectangle(FXint x,FXint y,FXint w,FXint h,FXint ew,FXint eh){ \
269
- FXRbCallVoidMethod(this,rb_intern("fillRoundRectangle"),x,y,w,h,ew,eh); \
269
+ FXRbCallVoidMethod(this,"fillRoundRectangle",x,y,w,h,ew,eh); \
270
270
  } \
271
271
  void cls::fillChord(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2){ \
272
- FXRbCallVoidMethod(this,rb_intern("fillChord"),x,y,w,h,ang1,ang2); \
272
+ FXRbCallVoidMethod(this,"fillChord",x,y,w,h,ang1,ang2); \
273
273
  } \
274
274
  void cls::fillChords(const FXArc* chords,FXuint nchords){ \
275
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillChords"),1,FXRbMakeArray(chords,nchords)); \
275
+ FXRbCallVoidArrayMethod(this,"fillChords",chords,nchords); \
276
276
  } \
277
277
  void cls::fillArc(FXint x,FXint y,FXint w,FXint h,FXint ang1,FXint ang2){ \
278
- FXRbCallVoidMethod(this,rb_intern("fillArc"),x,y,w,h,ang1,ang2); \
278
+ FXRbCallVoidMethod(this,"fillArc",x,y,w,h,ang1,ang2); \
279
279
  } \
280
280
  void cls::fillArcs(const FXArc* arcs,FXuint narcs){ \
281
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillArcs"),1,FXRbMakeArray(arcs,narcs)); \
281
+ FXRbCallVoidArrayMethod(this,"fillArcs",arcs,narcs); \
282
282
  } \
283
283
  void cls::fillEllipse(FXint x,FXint y,FXint w,FXint h){ \
284
- FXRbCallVoidMethod(this,rb_intern("fillEllipse"),x,y,w,h); \
284
+ FXRbCallVoidMethod(this,"fillEllipse",x,y,w,h); \
285
285
  } \
286
286
  void cls::fillPolygon(const FXPoint* points,FXuint npoints){ \
287
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillPolygon"),1,FXRbMakeArray(points,npoints)); \
287
+ FXRbCallVoidArrayMethod(this,"fillPolygon",points,npoints); \
288
288
  } \
289
289
  void cls::fillConcavePolygon(const FXPoint* points,FXuint npoints){ \
290
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillConcavePolygon"),1,FXRbMakeArray(points,npoints)); \
290
+ FXRbCallVoidArrayMethod(this,"fillConcavePolygon",points,npoints); \
291
291
  } \
292
292
  void cls::fillComplexPolygon(const FXPoint* points,FXuint npoints){ \
293
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillComplexPolygon"),1,FXRbMakeArray(points,npoints)); \
293
+ FXRbCallVoidArrayMethod(this,"fillComplexPolygon",points,npoints); \
294
294
  } \
295
295
  void cls::fillPolygonRel(const FXPoint* points,FXuint npoints){ \
296
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillPolygonRel"),1,FXRbMakeArray(points,npoints)); \
296
+ FXRbCallVoidArrayMethod(this,"fillPolygonRel",points,npoints); \
297
297
  } \
298
298
  void cls::fillConcavePolygonRel(const FXPoint* points,FXuint npoints){ \
299
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillConcavePolygonRel"),1,FXRbMakeArray(points,npoints)); \
299
+ FXRbCallVoidArrayMethod(this,"fillConcavePolygonRel",points,npoints); \
300
300
  } \
301
301
  void cls::fillComplexPolygonRel(const FXPoint* points,FXuint npoints){ \
302
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("fillComplexPolygonRel"),1,FXRbMakeArray(points,npoints)); \
302
+ FXRbCallVoidArrayMethod(this,"fillComplexPolygonRel",points,npoints); \
303
303
  } \
304
304
  void cls::drawHashBox(FXint x,FXint y,FXint w,FXint h,FXint b){ \
305
- FXRbCallVoidMethod(this,rb_intern("drawHashBox"),x,y,w,h,b); \
305
+ FXRbCallVoidMethod(this,"drawHashBox",x,y,w,h,b); \
306
306
  } \
307
307
  void cls::drawFocusRectangle(FXint x,FXint y,FXint w,FXint h){ \
308
- FXRbCallVoidMethod(this,rb_intern("drawFocusRectangle"),x,y,w,h); \
308
+ FXRbCallVoidMethod(this,"drawFocusRectangle",x,y,w,h); \
309
309
  } \
310
310
  void cls::drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy){ \
311
- FXRbCallVoidMethod(this,rb_intern("drawArea"),source,sx,sy,sw,sh,dx,dy); \
311
+ FXRbCallVoidMethod(this,"drawArea",source,sx,sy,sw,sh,dx,dy); \
312
312
  } \
313
313
  void cls::drawArea(const FXDrawable* source,FXint sx,FXint sy,FXint sw,FXint sh,FXint dx,FXint dy,FXint dw,FXint dh){ \
314
- FXRbCallVoidMethod(this,rb_intern("drawArea"),source,sx,sy,sw,sh,dx,dy,dw,dh); \
314
+ FXRbCallVoidMethod(this,"drawArea",source,sx,sy,sw,sh,dx,dy,dw,dh); \
315
315
  } \
316
316
  void cls::drawImage(const FXImage* image,FXint dx,FXint dy){ \
317
- FXRbCallVoidMethod(this,rb_intern("drawImage"),image,dx,dy); \
317
+ FXRbCallVoidMethod(this,"drawImage",image,dx,dy); \
318
318
  } \
319
319
  void cls::drawBitmap(const FXBitmap* bitmap,FXint dx,FXint dy){ \
320
- FXRbCallVoidMethod(this,rb_intern("drawBitmap"),bitmap,dx,dy); \
320
+ FXRbCallVoidMethod(this,"drawBitmap",bitmap,dx,dy); \
321
321
  } \
322
322
  void cls::drawIcon(const FXIcon* icon,FXint dx,FXint dy){ \
323
- FXRbCallVoidMethod(this,rb_intern("drawIcon"),icon,dx,dy); \
323
+ FXRbCallVoidMethod(this,"drawIcon",icon,dx,dy); \
324
324
  } \
325
325
  void cls::drawIconShaded(const FXIcon* icon,FXint dx,FXint dy){ \
326
- FXRbCallVoidMethod(this,rb_intern("drawIconShaded"),icon,dx,dy); \
326
+ FXRbCallVoidMethod(this,"drawIconShaded",icon,dx,dy); \
327
327
  } \
328
328
  void cls::drawIconSunken(const FXIcon* icon,FXint dx,FXint dy){ \
329
- FXRbCallVoidMethod(this,rb_intern("drawIconSunken"),icon,dx,dy); \
329
+ FXRbCallVoidMethod(this,"drawIconSunken",icon,dx,dy); \
330
330
  } \
331
331
  void cls::drawText(FXint x,FXint y,const FXString& string){ \
332
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawText"),3,to_ruby(x),to_ruby(y),to_ruby(string)); \
332
+ FXRbCallDCDrawMethod(this, "drawText", x, y, string); \
333
333
  } \
334
334
  void cls::drawText(FXint x,FXint y,const FXchar* string,FXuint length){ \
335
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawText"),3,to_ruby(x),to_ruby(y),to_ruby(string,length)); \
335
+ FXRbCallDCDrawMethod(this, "drawText", x, y, string, length); \
336
336
  } \
337
337
  void cls::drawImageText(FXint x,FXint y,const FXString& string){ \
338
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawImageText"),3,to_ruby(x),to_ruby(y),to_ruby(string)); \
338
+ FXRbCallDCDrawMethod(this, "drawImageText", x, y, string); \
339
339
  } \
340
340
  void cls::drawImageText(FXint x,FXint y,const FXchar* string,FXuint length){ \
341
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("drawImageText"),3,to_ruby(x),to_ruby(y),to_ruby(string,length)); \
341
+ FXRbCallDCDrawMethod(this, "drawImageText", x, y, string, length); \
342
342
  } \
343
343
  void cls::setForeground(FXColor clr){ \
344
- FXRbCallVoidMethod(this,rb_intern("setForeground"),clr); \
344
+ FXRbCallVoidMethod(this,"setForeground",clr); \
345
345
  } \
346
346
  void cls::setBackground(FXColor clr){ \
347
- FXRbCallVoidMethod(this,rb_intern("setBackground"),clr); \
347
+ FXRbCallVoidMethod(this,"setBackground",clr); \
348
348
  } \
349
349
  void cls::setDashes(FXuint dashoffset,const FXchar *dashpattern,FXuint dashlength){ \
350
- rb_funcall(FXRbGetRubyObj(this,false),rb_intern("setDashes"),2,to_ruby(dashoffset),FXRbMakeArray(dashpattern,dashlength)); \
350
+ FXRbCallSetDashes(this,"setDashes",dashoffset,dashpattern,dashlength); \
351
351
  } \
352
352
  void cls::setLineWidth(FXuint linewidth){ \
353
- FXRbCallVoidMethod(this,rb_intern("setLineWidth"),linewidth); \
353
+ FXRbCallVoidMethod(this,"setLineWidth",linewidth); \
354
354
  } \
355
355
  void cls::setLineCap(FXCapStyle capstyle){ \
356
- FXRbCallVoidMethod(this,rb_intern("setLineCap"),capstyle); \
356
+ FXRbCallVoidMethod(this,"setLineCap",capstyle); \
357
357
  } \
358
358
  void cls::setLineJoin(FXJoinStyle joinstyle){ \
359
- FXRbCallVoidMethod(this,rb_intern("setLineJoin"),joinstyle); \
359
+ FXRbCallVoidMethod(this,"setLineJoin",joinstyle); \
360
360
  } \
361
361
  void cls::setLineStyle(FXLineStyle linestyle){ \
362
- FXRbCallVoidMethod(this,rb_intern("setLineStyle"),linestyle); \
362
+ FXRbCallVoidMethod(this,"setLineStyle",linestyle); \
363
363
  } \
364
364
  void cls::setFillStyle(FXFillStyle fillstyle){ \
365
- FXRbCallVoidMethod(this,rb_intern("setFillStyle"),fillstyle); \
365
+ FXRbCallVoidMethod(this,"setFillStyle",fillstyle); \
366
366
  } \
367
367
  void cls::setFillRule(FXFillRule fillrule){ \
368
- FXRbCallVoidMethod(this,rb_intern("setFillRule"),fillrule); \
368
+ FXRbCallVoidMethod(this,"setFillRule",fillrule); \
369
369
  } \
370
370
  void cls::setFunction(FXFunction func){ \
371
- FXRbCallVoidMethod(this,rb_intern("setFunction"),func); \
371
+ FXRbCallVoidMethod(this,"setFunction",func); \
372
372
  } \
373
373
  void cls::setTile(FXImage* image,FXint dx,FXint dy){ \
374
- FXRbCallVoidMethod(this,rb_intern("setTile"),image,dx,dy); \
374
+ FXRbCallVoidMethod(this,"setTile",image,dx,dy); \
375
375
  } \
376
376
  void cls::setStipple(FXBitmap *bitmap,FXint dx,FXint dy){ \
377
- FXRbCallVoidMethod(this,rb_intern("setStipple"),bitmap,dx,dy); \
377
+ FXRbCallVoidMethod(this,"setStipple",bitmap,dx,dy); \
378
378
  } \
379
379
  void cls::setStipple(FXStipplePattern pat,FXint dx,FXint dy){ \
380
- FXRbCallVoidMethod(this,rb_intern("setStipple"),pat,dx,dy); \
380
+ FXRbCallVoidMethod(this,"setStipple",pat,dx,dy); \
381
381
  } \
382
382
  void cls::setClipRegion(const FXRegion& region){ \
383
- FXRbCallVoidMethod(this,rb_intern("setClipRegion"),region); \
383
+ FXRbCallVoidMethod(this,"setClipRegion",region); \
384
384
  } \
385
385
  void cls::setClipRectangle(FXint x,FXint y,FXint w,FXint h){ \
386
- FXRbCallVoidMethod(this,rb_intern("setClipRectangle"),x,y,w,h); \
386
+ FXRbCallVoidMethod(this,"setClipRectangle",x,y,w,h); \
387
387
  } \
388
388
  void cls::setClipRectangle(const FXRectangle& rectangle){ \
389
- FXRbCallVoidMethod(this,rb_intern("setClipRectangle"),rectangle); \
389
+ FXRbCallVoidMethod(this,"setClipRectangle",rectangle); \
390
390
  } \
391
391
  void cls::clearClipRectangle(){ \
392
- FXRbCallVoidMethod(this,rb_intern("clearClipRectangle")); \
392
+ FXRbCallVoidMethod(this,"clearClipRectangle"); \
393
393
  } \
394
394
  void cls::setClipMask(FXBitmap* bitmap,FXint dx,FXint dy){ \
395
- FXRbCallVoidMethod(this,rb_intern("setClipMask"),bitmap,dx,dy); \
395
+ FXRbCallVoidMethod(this,"setClipMask",bitmap,dx,dy); \
396
396
  } \
397
397
  void cls::clearClipMask(){ \
398
- FXRbCallVoidMethod(this,rb_intern("clearClipMask")); \
398
+ FXRbCallVoidMethod(this,"clearClipMask"); \
399
399
  } \
400
400
  void cls::setFont(FXFont *fnt){ \
401
- FXRbCallVoidMethod(this,rb_intern("setFont"),fnt); \
401
+ FXRbCallVoidMethod(this,"setFont",fnt); \
402
402
  } \
403
403
  void cls::clipChildren(FXbool yes){ \
404
- FXRbCallVoidMethod(this,rb_intern("clipChildren"),yes); \
404
+ FXRbCallVoidMethod(this,"clipChildren",yes); \
405
405
  }
406
406
 
407
407