From 7dde62b8cd7378cef29070c0ab04e26147717868 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 3 Jun 2013 12:31:30 +0000
Subject: [PATCH] fix crash on mac

---
 Fltk/drawContextFltkCairo.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/Fltk/drawContextFltkCairo.cpp b/Fltk/drawContextFltkCairo.cpp
index 3b7ac09ae1..031d49455b 100644
--- a/Fltk/drawContextFltkCairo.cpp
+++ b/Fltk/drawContextFltkCairo.cpp
@@ -37,6 +37,7 @@ static void _data2gl (int width, int height, unsigned char *data,
   glDisable (GL_DEPTH_TEST);
   glEnable (GL_BLEND);
   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, _textureId);
   glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_ALPHA, width, height, 0,
                 GL_ALPHA, GL_UNSIGNED_BYTE, data);
@@ -111,6 +112,9 @@ void drawContextFltkCairo::drawString(const char *str)
   cairo_move_to(cr, 1-extent.x_bearing, 1-extent.y_bearing);
 	cairo_set_source_rgba(cr, 1, 1, 1, 1);
   cairo_show_text(cr, str);
+
+  if(!_textureId) glGenTextures (1, &_textureId);
+
   _data2gl(cairo_image_surface_get_width(surface),
            cairo_image_surface_get_height(surface),
            cairo_image_surface_get_data(surface),
@@ -147,7 +151,7 @@ drawContextFltkCairo::drawContextFltkCairo()
 {
   _surface = cairo_image_surface_create(CAIRO_FORMAT_A8, 100, 100);
   _cr = cairo_create(_surface);
-  glGenTextures (1, &_textureId);
+  _textureId = 0;
   _currentFontId = -1;
 }
 
-- 
GitLab