summaryrefslogtreecommitdiff
path: root/src/Fl_Sys_Menu_Bar.cxx
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2017-12-04 17:39:19 +0000
committerManolo Gouy <Manolo>2017-12-04 17:39:19 +0000
commit8612fea27712a41d7e8167cef964d7098b1d733d (patch)
tree4a92a869d02394605364270525c467022d2fd24d /src/Fl_Sys_Menu_Bar.cxx
parent6586b77975636da3d96d277d7556a8bbc8d0031b (diff)
Make Fl_Sys_Menu_Bar class usable in static initializers.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12579 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Sys_Menu_Bar.cxx')
-rw-r--r--src/Fl_Sys_Menu_Bar.cxx16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/Fl_Sys_Menu_Bar.cxx b/src/Fl_Sys_Menu_Bar.cxx
index 08c7186a7..71613dd0b 100644
--- a/src/Fl_Sys_Menu_Bar.cxx
+++ b/src/Fl_Sys_Menu_Bar.cxx
@@ -24,11 +24,19 @@
Fl_Sys_Menu_Bar *fl_sys_menu_bar = 0;
// initialize this static variable if it was not initialized previously
-Fl_Sys_Menu_Bar_Driver *Fl_Sys_Menu_Bar_Driver::driver_ =
- ( driver_ ? driver_ : new Fl_Sys_Menu_Bar_Driver() );
+Fl_Sys_Menu_Bar_Driver* Fl_Sys_Menu_Bar_Driver::new_driver() {
+ if (!driver_) { // initialize this static variable if it was not initialized previously
+ static Fl_Sys_Menu_Bar_Driver *once = new Fl_Sys_Menu_Bar_Driver();
+ driver_ = once;
+ }
+ return driver_;
+}
-Fl_Sys_Menu_Bar_Driver *Fl_Sys_Menu_Bar::driver() {return Fl_Sys_Menu_Bar_Driver::driver_;}
+inline Fl_Sys_Menu_Bar_Driver *Fl_Sys_Menu_Bar::driver() {
+ return Fl_Sys_Menu_Bar_Driver::new_driver();
+}
+Fl_Sys_Menu_Bar_Driver *Fl_Sys_Menu_Bar_Driver::driver_ = Fl_Sys_Menu_Bar_Driver::new_driver();
/**
The constructor.
@@ -39,7 +47,7 @@ Fl_Sys_Menu_Bar::Fl_Sys_Menu_Bar(int x,int y,int w,int h,const char *l)
{
if (fl_sys_menu_bar) delete fl_sys_menu_bar;
fl_sys_menu_bar = this;
- Fl_Sys_Menu_Bar_Driver::driver_->bar = this;
+ driver()->bar = this;
}
/** The destructor */