diff options
author | fluxgen <fluxgen> | 2002-08-14 21:53:07 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2002-08-14 21:53:07 (GMT) |
commit | 238526bd48a9318672f8e2c20e8a3b3dbf16927d (patch) | |
tree | 56ce0148613c5b938b793966870dc9f61817ff45 | |
parent | 1d14c6ff8afb5776d7f66e46dcbef76a178edc88 (diff) | |
download | fluxbox_pavel-238526bd48a9318672f8e2c20e8a3b3dbf16927d.zip fluxbox_pavel-238526bd48a9318672f8e2c20e8a3b3dbf16927d.tar.bz2 |
singleton
-rw-r--r-- | src/FbAtoms.cc | 26 | ||||
-rw-r--r-- | src/FbAtoms.hh | 10 |
2 files changed, 25 insertions, 11 deletions
diff --git a/src/FbAtoms.cc b/src/FbAtoms.cc index e19ba21..4e2c7f5 100644 --- a/src/FbAtoms.cc +++ b/src/FbAtoms.cc | |||
@@ -19,24 +19,36 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: FbAtoms.cc,v 1.2 2002/03/18 20:29:16 fluxgen Exp $ | 22 | // $Id: FbAtoms.cc,v 1.3 2002/08/14 21:53:07 fluxgen Exp $ |
23 | 23 | ||
24 | #include "FbAtoms.hh" | 24 | #include "FbAtoms.hh" |
25 | 25 | ||
26 | #include <string> | ||
27 | using namespace std; | ||
28 | |||
29 | FbAtoms *FbAtoms::s_singleton = 0; | ||
30 | |||
26 | FbAtoms::FbAtoms(Display *display):m_init(false) { | 31 | FbAtoms::FbAtoms(Display *display):m_init(false) { |
27 | if (display) | 32 | if (s_singleton != 0) |
28 | initAtoms(display); | 33 | throw string("You can only create one instance of FbAtoms"); |
34 | |||
35 | if (display == 0) | ||
36 | throw string("Must supply FbAtoms with an valid display connection"); | ||
37 | |||
38 | s_singleton = this; | ||
39 | initAtoms(display); | ||
29 | } | 40 | } |
30 | 41 | ||
31 | FbAtoms::~FbAtoms() { | 42 | FbAtoms::~FbAtoms() { |
32 | 43 | ||
33 | } | 44 | } |
34 | 45 | ||
46 | FbAtoms *FbAtoms::instance() { | ||
47 | assert(s_singleton); | ||
48 | return s_singleton; | ||
49 | } | ||
50 | |||
35 | void FbAtoms::initAtoms(Display *display) { | 51 | void FbAtoms::initAtoms(Display *display) { |
36 | if (m_init) //already done init? | ||
37 | return; | ||
38 | else | ||
39 | m_init = true; | ||
40 | 52 | ||
41 | xa_wm_colormap_windows = | 53 | xa_wm_colormap_windows = |
42 | XInternAtom(display, "WM_COLORMAP_WINDOWS", False); | 54 | XInternAtom(display, "WM_COLORMAP_WINDOWS", False); |
diff --git a/src/FbAtoms.hh b/src/FbAtoms.hh index 63882e2..3fb8b2b 100644 --- a/src/FbAtoms.hh +++ b/src/FbAtoms.hh | |||
@@ -19,21 +19,21 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: FbAtoms.hh,v 1.5 2002/08/12 19:25:35 fluxgen Exp $ | 22 | // $Id: FbAtoms.hh,v 1.6 2002/08/14 21:53:07 fluxgen Exp $ |
23 | #ifndef FBATOMS_HH | 23 | #ifndef FBATOMS_HH |
24 | #define FBATOMS_HH | 24 | #define FBATOMS_HH |
25 | 25 | ||
26 | #include <X11/Xlib.h> | 26 | #include <X11/Xlib.h> |
27 | #include <X11/Xatom.h> | 27 | #include <X11/Xatom.h> |
28 | |||
28 | /** | 29 | /** |
29 | atom handler, should probably be a singleton | 30 | atom handler, should probably be a singleton |
30 | */ | 31 | */ |
31 | class FbAtoms | 32 | class FbAtoms { |
32 | { | ||
33 | public: | 33 | public: |
34 | explicit FbAtoms(Display *display); | 34 | explicit FbAtoms(Display *display); |
35 | virtual ~FbAtoms(); | 35 | virtual ~FbAtoms(); |
36 | void initAtoms(Display *display); | 36 | static FbAtoms *instance(); |
37 | 37 | ||
38 | #ifdef GNOME | 38 | #ifdef GNOME |
39 | inline Atom getGnomeProtAtom() const { return gnome_wm_prot; } | 39 | inline Atom getGnomeProtAtom() const { return gnome_wm_prot; } |
@@ -125,6 +125,7 @@ public: | |||
125 | #endif // NEWWMSPEC | 125 | #endif // NEWWMSPEC |
126 | 126 | ||
127 | private: | 127 | private: |
128 | void initAtoms(Display *disp); | ||
128 | // NETAttributes | 129 | // NETAttributes |
129 | Atom blackbox_attributes, blackbox_change_attributes, blackbox_hints; | 130 | Atom blackbox_attributes, blackbox_change_attributes, blackbox_hints; |
130 | 131 | ||
@@ -177,6 +178,7 @@ private: | |||
177 | xa_wm_delete_window, xa_wm_take_focus, xa_wm_change_state, | 178 | xa_wm_delete_window, xa_wm_take_focus, xa_wm_change_state, |
178 | motif_wm_hints; | 179 | motif_wm_hints; |
179 | bool m_init; | 180 | bool m_init; |
181 | static FbAtoms *s_singleton; | ||
180 | }; | 182 | }; |
181 | 183 | ||
182 | #endif //FBATOMS_HH | 184 | #endif //FBATOMS_HH |