summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2003-03-31 17:27:35 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2003-03-31 17:27:35 +0000
commit7b52b48c9deed0a461ff9a28ea1cd0aef7fe9d89 (patch)
tree4fa55ad8df230c02c140934453a1a95770c66d48
parent29240895e20d69fcd3f048139a0d83b28d7733d1 (diff)
Possible fix for OpenGL bus errors on OSX.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2959 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--CHANGES2
-rw-r--r--src/Fl_Gl_Window.cxx32
2 files changed, 25 insertions, 9 deletions
diff --git a/CHANGES b/CHANGES
index 77edde4dd..5e324cb9f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
CHANGES IN FLTK 1.1.4
+ - Fl_Gl_Window could cause a bus error on MacOS X if the
+ parent window was not yet shown.
- FLUID could crash after displaying a syntax error
dialog for the callback code.
- FLUID would reset the callback code if you opened the
diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx
index a703135cd..ae64ab417 100644
--- a/src/Fl_Gl_Window.cxx
+++ b/src/Fl_Gl_Window.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.17 2003/01/30 21:41:49 easysw Exp $"
+// "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.18 2003/03/31 17:27:35 easysw Exp $"
//
// OpenGL window code for the Fast Light Tool Kit (FLTK).
//
@@ -128,6 +128,18 @@ void Fl_Gl_Window::make_current() {
mode_ &= ~NON_LOCAL_CONTEXT;
context_ = fl_create_gl_context(this, g);
valid(0);
+
+#ifdef __APPLE__
+ if (window()) {
+ GLint xywh[4];
+ xywh[0] = x();
+ xywh[1] = window()->h() - y() - h();
+ xywh[2] = w();
+ xywh[3] = h();
+ aglSetInteger(context_, AGL_BUFFER_RECT, xywh);
+ aglUpdateContext(context_);
+ }
+#endif // __APPLE__
}
fl_set_gl_context(this, context_);
#if defined(WIN32) && USE_COLORMAP
@@ -317,13 +329,15 @@ void Fl_Gl_Window::resize(int X,int Y,int W,int H) {
if (W != w() || H != h()) {
valid(0);
#ifdef __APPLE__
- GLint xywh[4];
- xywh[0] = X;
- xywh[1] = window()->h() - Y - H;
- xywh[2] = W;
- xywh[3] = H;
- aglSetInteger(context_, AGL_BUFFER_RECT, xywh);
- aglUpdateContext(context_);
+ if (window()) {
+ GLint xywh[4];
+ xywh[0] = X;
+ xywh[1] = window()->h() - Y - H;
+ xywh[2] = W;
+ xywh[3] = H;
+ aglSetInteger(context_, AGL_BUFFER_RECT, xywh);
+ aglUpdateContext(context_);
+ }
#elif !defined(WIN32)
if (!resizable() && overlay && overlay != this)
((Fl_Gl_Window*)overlay)->resize(0,0,W,H);
@@ -377,5 +391,5 @@ void Fl_Gl_Window::draw_overlay() {}
#endif
//
-// End of "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.17 2003/01/30 21:41:49 easysw Exp $".
+// End of "$Id: Fl_Gl_Window.cxx,v 1.12.2.22.2.18 2003/03/31 17:27:35 easysw Exp $".
//