summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FL/Fl_Device.H5
-rw-r--r--src/Fl_Device.cxx7
2 files changed, 11 insertions, 1 deletions
diff --git a/FL/Fl_Device.H b/FL/Fl_Device.H
index 4d506faec..fc12c6364 100644
--- a/FL/Fl_Device.H
+++ b/FL/Fl_Device.H
@@ -551,6 +551,7 @@ class FL_EXPORT Fl_Surface_Device : public Fl_Device {
/** \brief The graphics driver in use by this surface. */
Fl_Graphics_Driver *_driver;
static Fl_Surface_Device *_surface; // the surface that currently receives graphics output
+ static Fl_Surface_Device *default_surface(); // create surface is none exists yet
protected:
/** \brief Constructor that sets the graphics driver to use for the created surface. */
Fl_Surface_Device(Fl_Graphics_Driver *graphics_driver) {_driver = graphics_driver; };
@@ -564,7 +565,9 @@ public:
inline Fl_Graphics_Driver *driver() {return _driver; };
/** The current drawing surface.
In other words, the Fl_Surface_Device object that currently receives all graphics output */
- static inline Fl_Surface_Device *surface() {return _surface; };
+ static inline Fl_Surface_Device *surface() {
+ return _surface ? _surface : default_surface();
+ };
/** \brief The destructor. */
virtual ~Fl_Surface_Device() {}
};
diff --git a/src/Fl_Device.cxx b/src/Fl_Device.cxx
index 566039149..a35227b23 100644
--- a/src/Fl_Device.cxx
+++ b/src/Fl_Device.cxx
@@ -93,6 +93,13 @@ Fl_Display_Device *Fl_Display_Device::display_device() {
return display;
};
+
+Fl_Surface_Device *Fl_Surface_Device::default_surface()
+{
+ return Fl_Display_Device::display_device();
+}
+
+
Fl_Display_Device *Fl_Display_Device::_display = Fl_Display_Device::display_device();
//