Browse Source

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
pull/168/head
Michael R Sweet 22 years ago
parent
commit
7b52b48c9d
  1. 2
      CHANGES
  2. 18
      src/Fl_Gl_Window.cxx

2
CHANGES

@ -1,5 +1,7 @@
CHANGES IN FLTK 1.1.4 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 - FLUID could crash after displaying a syntax error
dialog for the callback code. dialog for the callback code.
- FLUID would reset the callback code if you opened the - FLUID would reset the callback code if you opened the

18
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). // OpenGL window code for the Fast Light Tool Kit (FLTK).
// //
@ -128,6 +128,18 @@ void Fl_Gl_Window::make_current() {
mode_ &= ~NON_LOCAL_CONTEXT; mode_ &= ~NON_LOCAL_CONTEXT;
context_ = fl_create_gl_context(this, g); context_ = fl_create_gl_context(this, g);
valid(0); 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_); fl_set_gl_context(this, context_);
#if defined(WIN32) && USE_COLORMAP #if defined(WIN32) && USE_COLORMAP
@ -317,6 +329,7 @@ void Fl_Gl_Window::resize(int X,int Y,int W,int H) {
if (W != w() || H != h()) { if (W != w() || H != h()) {
valid(0); valid(0);
#ifdef __APPLE__ #ifdef __APPLE__
if (window()) {
GLint xywh[4]; GLint xywh[4];
xywh[0] = X; xywh[0] = X;
xywh[1] = window()->h() - Y - H; xywh[1] = window()->h() - Y - H;
@ -324,6 +337,7 @@ void Fl_Gl_Window::resize(int X,int Y,int W,int H) {
xywh[3] = H; xywh[3] = H;
aglSetInteger(context_, AGL_BUFFER_RECT, xywh); aglSetInteger(context_, AGL_BUFFER_RECT, xywh);
aglUpdateContext(context_); aglUpdateContext(context_);
}
#elif !defined(WIN32) #elif !defined(WIN32)
if (!resizable() && overlay && overlay != this) if (!resizable() && overlay && overlay != this)
((Fl_Gl_Window*)overlay)->resize(0,0,W,H); ((Fl_Gl_Window*)overlay)->resize(0,0,W,H);
@ -377,5 +391,5 @@ void Fl_Gl_Window::draw_overlay() {}
#endif #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 $".
// //

Loading…
Cancel
Save