GtkGLArea demo programs



G'Day !

Well Electric-Fence did not help, but playing around with gdb did allow me to
narrow down the focus.  It appears to be dying in the glarea_reshape
function.   Does anything look strange to anyone ?

I set a break point on this function.  It stops at the line:

     int w = widget->allocation.width;

when I type continue it immediately SEGSEGV at the address listed below.  I
suspect the the line:

    if (gtk_gl_area_make_current (GTK_GL_AREA(widget)))
    {

is the problem, but it is required by Gtkglarea, and it is the exactly the same
line as in the example program that works.  So  I am pretty baffled right now.

Any suggestions would be appreciated.  (even a response saying "bummer dude",
would at least let me know you are alive  :-)

cheers

BTW any one know who currently maintains gtk_gl_area ?

/*****************************************************************************/
 *
 * Function: glarea_reshape (GtkWidget*, GdkEventConfigure*)
 *
 * This function performs the operations needed to maintain the viewing area
 * of the GtkGLArea. This should be called whenever the size of the area
 * is changed.
 *
 *****************************************************************************/

/*
 * --- This is called ChangeSize( ) in the "OpenGL Super Bible"
 *     ... It's a GLUT thing :-)
 */

gint glarea_reshape (GtkWidget *widget, GdkEventConfigure *event) {

  int w = widget->allocation.width;
  int h = widget->allocation.height;

  g_print ("Reshape Event (ie ChangeSize)\n");

  /* gtk_gl_area_make_current MUST be called before rendering */
  /* into the GtkGLArea.                                      */

  if (gtk_gl_area_make_current (GTK_GL_AREA(widget)))
  {

    /* This is an example 2D reshape function. Writing reshape */
    /* functions is beyond the scope of this demo. Check the   */
    /* red book or the www.opengl.org for more information on  */
    /* how to write reshape code to suit your needs.           */

    /**********
    glViewport (0, 0, w, h);
    glMatrixMode (GL_PROJECTION);
    glLoadIdentity ();
    gluOrtho2D (-(w>>1), (w>>1), -(h>>1), h>>1);
    glMatrixMode (GL_MODELVIEW);
    **********/

    /* --- The following code is from "OpenGL Super Bible" for 3D --- */
    GLfloat nRange = 100.0f;

    // Prevent a divide by zero
    if(h == 0)
      h = 1;

    // Set Viewport to window dimensions
    glViewport(0, 0, w, h);

    // Reset coordinate system
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    // Establish clipping volume (left, right, bottom, top, near, far)
    if (w <= h) {
      glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange, nRange);
    } else {
      glOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);
    }

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

  }

  return (TRUE);

}

/*****************************************************************************************************************/


cheers,
Jim Parker

Sailboat racing is not a matter of life and death ....  It is far more important
than that !!!
----- Forwarded by Jim Parker/Coinstar Inc/US on 10/19/00 01:30 PM -----
                                                                                                           
                    Jim Parker                                                                             
                                         To:     jlof mail student oulu fi, chris65536 home com            
                    10/18/00             cc:     gtk-app-devel-list gnome org                              
                    01:36 PM             Subject:     GtkGLArea demo programs                              
                                                                                                           
                                                                                                           



G'Day !

I am trying to add a GtkGLArea to my program as a substitute for a
gdk_drawing_area.  However when I complie the demo programs that are part of the
GtkGLArea tarball, I keep getting Segmentation Faults on all the demo programs
except the "Zktor"

BTW ... I'm using GKT+/GLIB 1.2.8
                                  MESA 3.2.1
                                  GtkGLArea 1.2.2

In GtkGLArea_demo.c ....

I have compiled them with debug symbols, but when I run it under gdb, all I get
is the following memory address.

0x4041a59d in           ( )

which does not do me any good  :-(   I tried modifying the code to give me a
better indication of where the problem is, but no progress yet.  Tonight I'll
try using electric-fence and/or other memory debuggers

Any ideas what might be the problem ?

This is my modifed version.  The original can be found in the GtkGLArea tarball.

(See attached file: OpenGLtest.c)

cheers,
Jim Parker

Sailboat racing is not a matter of life and death ....  It is far more important
than that !!!

Attachment: OpenGLtest.c
Description: Binary data



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]