lament_faces);
}
-
\f
/* Computing normal vectors (thanks to Nat Friedman <ndf@mit.edu>)
*/
0.0, 0.0, 0.5, -0.5, 0.5,
0.0, 0.0, 0.5, 0.5, -0.5,
0.0, 0.0, -0.5, -0.5, -0.5);
- glEnd();
}
glEndList();
int height = lc->texture->width; /* assume square */
glBindTexture(GL_TEXTURE_2D, lc->texids[i]);
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, exterior_color);
+
+ clear_gl_error();
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
lc->texture->width, height, 0,
GL_RGBA, GL_UNSIGNED_BYTE,
(lc->texture->data +
(lc->texture->bytes_per_line * height * i)));
+ check_gl_error("texture");
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
}
+# ifdef HAVE_MESA_GL
+
+# include <signal.h>
+
+static RETSIGTYPE
+lament_signal_kludge (int sig)
+{
+ signal (sig, SIG_DFL);
+ fprintf (stderr,
+ "\n"
+ "%s: dying with signal %d (%s).\n"
+ "\n"
+ "\tThis is almost certainly a bug in the MesaGL library,\n"
+ "\tespecially if the stack trace in the core file mentions\n"
+ "\t`lambda_textured_triangle' or `render_quad'.\n"
+ "\n"
+ "\tI encourage you to report this to the Mesa maintainers\n"
+ "\tat <http://www.mesa3d.org/>. I reported this bug more\n"
+ "\tthan a year ago, and it is trivially reproducible.\n"
+ "\tI do not know a workaround.\n"
+ "\n",
+ progname,
+ sig,
+ (sig == SIGILL ? "SIGILL" :
+ sig == SIGFPE ? "SIGFPE" :
+ sig == SIGBUS ? "SIGBUS" :
+ sig == SIGSEGV ? "SIGSEGV" : "???"));
+ fflush (stderr);
+ kill (getpid (), sig);
+}
+
+static void
+handle_signals (void)
+{
+ signal (SIGILL, lament_signal_kludge);
+ signal (SIGFPE, lament_signal_kludge);
+ signal (SIGBUS, lament_signal_kludge);
+ signal (SIGSEGV, lament_signal_kludge);
+}
+# endif /* HAVE_MESA_GL */
+
+
void
init_lament(ModeInfo *mi)
{
reshape(MI_WIDTH(mi), MI_HEIGHT(mi));
gl_init(mi);
}
+
+# ifdef HAVE_MESA_GL
+ handle_signals ();
+# endif /* HAVE_MESA_GL */
}