summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2016-01-18 22:55:46 +0000
committerMatthias Melcher <fltk@matthiasm.com>2016-01-18 22:55:46 +0000
commitb86f2f735a004a66f62f70ec30aea01b828731bd (patch)
tree1352d35984db4800527aadce0b700bf4dfd42a13 /src
parent884928f68c6403947abb65b246a3bb3f2b23d6bf (diff)
Replaced static initializer with Fl_OpenGL_Display_Device.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11008 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Gl_Window.cxx22
-rw-r--r--src/Fl_Image_Surface.cxx1
2 files changed, 19 insertions, 4 deletions
diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx
index 4fe8ca13e..da93fd399 100644
--- a/src/Fl_Gl_Window.cxx
+++ b/src/Fl_Gl_Window.cxx
@@ -151,7 +151,21 @@ public:
const char *Fl_OpenGL_Graphics_Driver::class_id = "Fl_OpenGL_Graphics_Driver";
-Fl_OpenGL_Graphics_Driver fl_opengl_graphics_driver;
+Fl_OpenGL_Display_Device *Fl_OpenGL_Display_Device::display_device() {
+ static Fl_OpenGL_Display_Device *display = new Fl_OpenGL_Display_Device(new Fl_OpenGL_Graphics_Driver());
+ return display;
+};
+
+
+Fl_OpenGL_Display_Device::Fl_OpenGL_Display_Device(Fl_OpenGL_Graphics_Driver *graphics_driver)
+: Fl_Surface_Device(graphics_driver)
+{
+}
+
+
+const char *Fl_OpenGL_Display_Device::class_id = "Fl_OpenGL_Display_Device";
+
+
#endif
// ------ end of separate file! ------------------------------------------------
@@ -659,8 +673,8 @@ void Fl_Gl_Window::draw_overlay() {}
*/
void Fl_Gl_Window::draw() {
#ifdef FL_CFG_GFX_OPENGL
- Fl_Graphics_Driver *prev_driver = fl_graphics_driver;
- fl_graphics_driver = &fl_opengl_graphics_driver;
+ Fl_Surface_Device *prev_device = Fl_Surface_Device::surface();
+ Fl_OpenGL_Display_Device::display_device()->set_current();
glPushAttrib(GL_ENABLE_BIT);
glDisable(GL_DEPTH_TEST);
glPushMatrix();
@@ -673,7 +687,7 @@ void Fl_Gl_Window::draw() {
glPopMatrix();
glPushAttrib(GL_ENABLE_BIT);
- fl_graphics_driver = prev_driver;
+ prev_device->set_current();
#else
Fl::fatal("Fl_Gl_Window::draw() *must* be overriden. Please refer to the documentation.");
#endif
diff --git a/src/Fl_Image_Surface.cxx b/src/Fl_Image_Surface.cxx
index 79f5c28d3..7f6198967 100644
--- a/src/Fl_Image_Surface.cxx
+++ b/src/Fl_Image_Surface.cxx
@@ -82,6 +82,7 @@ Fl_Image_Surface::~Fl_Image_Surface() {
/** Returns an image made of all drawings sent to the Fl_Image_Surface object.
The returned object contains its own copy of the RGB data.
+ The caller is responsible for deleting the image.
*/
Fl_RGB_Image* Fl_Image_Surface::image()
{