[#3228] Core support for Gems, and namespace — "Luke A. Kanies" <luke@...>

Hi all,

21 messages 2004/07/27
[#3230] Re: Core support for Gems, and namespace — Austin Ziegler <halostatue@...> 2004/07/27

On Tue, 27 Jul 2004 11:39:08 +0900, Luke A. Kanies <luke@madstop.com> wrote:

[#3234] Re: Core support for Gems, and namespace — "Luke A. Kanies" <luke@...> 2004/07/27

On Tue, 27 Jul 2004, Austin Ziegler wrote:

[#3238] Re: Core support for Gems, and namespace — Austin Ziegler <halostatue@...> 2004/07/27

On Wed, 28 Jul 2004 00:14:29 +0900, Luke A. Kanies <luke@madstop.com> wrote:

Bug in OpenGL module (Re: [Bug] Ruby 1.8.1 and 1.9: interactions between extensions: opengl and imlib2)

From: nobu.nokada@...
Date: 2004-07-14 06:55:33 UTC
List: ruby-core #3190
Hi,

At Wed, 14 Jul 2004 12:39:13 +0900,
Alvin Schur wrote in [ruby-core:03189]:
> I am trying to use the opengl and imlib2 extensions with Ruby 1.8.1 and 1.9.  
> The program listed below causes a segfault in both versions of Ruby.  The 
> backtrace at the end of the email is for Ruby 1.9.  The interesting lines 
> are:
> 
> def init_timer_fails
>   GLUT.TimerFunc(100, handle_timer, 34)
> end

It's a bug in rbogl, imlib2 isn't concerned with the SEGV
directly.  rbogl has to mark timer_func etc. while GC.


--- extconf.rb~	2003-08-17 12:04:32.000000000 +0900
+++ extconf.rb	2004-07-14 15:47:02.000000000 +0900
@@ -20,5 +20,6 @@ File.unlink("Makefile.glut") if (FileTes
 header = nil
 
-if (/cygwin/ =~ PLATFORM)
+case RUBY_PLATFORM
+when /cygwin/
   $CFLAGS="-DWIN32"
   gl_libname = "opengl32"
@@ -26,5 +27,5 @@ if (/cygwin/ =~ PLATFORM)
   glut_libname = "glut32"
   header=["GL/gl.h", "GL/glu.h", "GL/glut.h"]
-elsif (/mswin32/ =~ PLATFORM)
+when /mswin32/
   $CFLAGS="-DWIN32"
   gl_libname = "opengl32"
--- glut.c~	2004-07-11 00:47:34.000000000 +0900
+++ glut.c	2004-07-14 15:50:14.000000000 +0900
@@ -1501,13 +1501,13 @@ Init_glut()
     rb_define_const(mGLUT, "CURSOR_FULL_CROSSHAIR", INT2NUM(GLUT_CURSOR_FULL_CROSSHAIR));
 
-    rb_define_const(mGLUT, "BITMAP_9_BY_15", INT2NUM(GLUT_BITMAP_9_BY_15));
-    rb_define_const(mGLUT, "BITMAP_8_BY_13", INT2NUM(GLUT_BITMAP_8_BY_13));
-    rb_define_const(mGLUT, "BITMAP_TIMES_ROMAN_10", INT2NUM(GLUT_BITMAP_TIMES_ROMAN_10));
-    rb_define_const(mGLUT, "BITMAP_TIMES_ROMAN_24", INT2NUM(GLUT_BITMAP_TIMES_ROMAN_24));
-    rb_define_const(mGLUT, "BITMAP_HELVETICA_10", INT2NUM(GLUT_BITMAP_HELVETICA_10));
-    rb_define_const(mGLUT, "BITMAP_HELVETICA_12", INT2NUM(GLUT_BITMAP_HELVETICA_12));
-    rb_define_const(mGLUT, "BITMAP_HELVETICA_18", INT2NUM(GLUT_BITMAP_HELVETICA_18));
-    rb_define_const(mGLUT, "STROKE_ROMAN", INT2NUM(GLUT_STROKE_ROMAN));
-    rb_define_const(mGLUT, "STROKE_MONO_ROMAN", INT2NUM(GLUT_STROKE_MONO_ROMAN));
+    rb_define_const(mGLUT, "BITMAP_9_BY_15", INT2NUM((VALUE)GLUT_BITMAP_9_BY_15));
+    rb_define_const(mGLUT, "BITMAP_8_BY_13", INT2NUM((VALUE)GLUT_BITMAP_8_BY_13));
+    rb_define_const(mGLUT, "BITMAP_TIMES_ROMAN_10", INT2NUM((VALUE)GLUT_BITMAP_TIMES_ROMAN_10));
+    rb_define_const(mGLUT, "BITMAP_TIMES_ROMAN_24", INT2NUM((VALUE)GLUT_BITMAP_TIMES_ROMAN_24));
+    rb_define_const(mGLUT, "BITMAP_HELVETICA_10", INT2NUM((VALUE)GLUT_BITMAP_HELVETICA_10));
+    rb_define_const(mGLUT, "BITMAP_HELVETICA_12", INT2NUM((VALUE)GLUT_BITMAP_HELVETICA_12));
+    rb_define_const(mGLUT, "BITMAP_HELVETICA_18", INT2NUM((VALUE)GLUT_BITMAP_HELVETICA_18));
+    rb_define_const(mGLUT, "STROKE_ROMAN", INT2NUM((VALUE)GLUT_STROKE_ROMAN));
+    rb_define_const(mGLUT, "STROKE_MONO_ROMAN", INT2NUM((VALUE)GLUT_STROKE_MONO_ROMAN));
 
     callId = rb_intern("call");
@@ -1539,4 +1539,8 @@ Init_glut()
     WINDOW_CALLBACK_DEFINE(OverlayDisplayFunc);
     WINDOW_CALLBACK_DEFINE(WindowStatusFunc);
+
+    rb_gc_register_address(&idle_func);
+    rb_gc_register_address(&timer_func);
+    rb_gc_register_address(&menustate_func);
 }
 


-- 
Nobu Nakada

In This Thread