From c797d028eea09c4922ae0a73e09c805c3f041ff4 Mon Sep 17 00:00:00 2001 From: Ingo Ruhnke <grumbel@gmx.de> Date: Thu, 27 Jan 2011 17:51:21 +0100 Subject: [PATCH] Turned x11keysym_names into a singleton --- TODO | 7 ++----- src/evdev_helper.cpp | 9 +++++++-- src/evdev_helper.hpp | 8 ++++---- src/xboxdrv.cpp | 4 ++-- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index 366adc4..2f98da5 100644 --- a/TODO +++ b/TODO @@ -46,15 +46,12 @@ List Output =========== * update docu on force feedback for multi controller - -* turn EnumBox into singleton - -* Keysym2Keycode is currently always constructed at startup, even when - not used, construct it on demand to avoid X11 server connection Stuff to do before 0.7.1 release: ================================= +* turn EnumBox into singleton + * allow --modifier help, --ui-buttonmap X2^help * cleanup device_id, don't manually do (slot<<16) | devid (only an diff --git a/src/evdev_helper.cpp b/src/evdev_helper.cpp index 6c3e704..1685ac5 100644 --- a/src/evdev_helper.cpp +++ b/src/evdev_helper.cpp @@ -25,7 +25,12 @@ EvDevRelEnum evdev_rel_names; EvDevKeyEnum evdev_key_names; EvDevAbsEnum evdev_abs_names; -X11KeysymEnum x11keysym_names; + +const X11KeysymEnum& get_x11keysym_names() +{ + static X11KeysymEnum x11keysym_names; + return x11keysym_names; +} EvDevRelEnum::EvDevRelEnum() : EnumBox<int>("EV_REL") @@ -103,7 +108,7 @@ X11KeysymEnum::process_keymap(Display* dpy) int xkeysym2keycode(const std::string& name) { - return x11keysym_names[name]; + return get_x11keysym_names()[name]; } void str2event(const std::string& name, int& type, int& code) diff --git a/src/evdev_helper.hpp b/src/evdev_helper.hpp index fde4795..d3979b2 100644 --- a/src/evdev_helper.hpp +++ b/src/evdev_helper.hpp @@ -66,10 +66,10 @@ private: void process_keymap(Display* dpy); }; -extern EvDevRelEnum evdev_rel_names; -extern EvDevKeyEnum evdev_key_names; -extern EvDevAbsEnum evdev_abs_names; -extern X11KeysymEnum x11keysym_names; +extern EvDevRelEnum evdev_rel_names; +extern EvDevKeyEnum evdev_key_names; +extern EvDevAbsEnum evdev_abs_names; +const X11KeysymEnum& get_x11keysym_names(); #endif diff --git a/src/xboxdrv.cpp b/src/xboxdrv.cpp index 2fe85f5..2e9669a 100644 --- a/src/xboxdrv.cpp +++ b/src/xboxdrv.cpp @@ -675,8 +675,8 @@ Xboxdrv::run_list_enums(uint32_t enums) if (enums & Options::LIST_X11KEYSYM) { std::vector<std::string> lst; - for(X11KeysymEnum::const_iterator i = x11keysym_names.begin(); - i != x11keysym_names.end(); ++i) + for(X11KeysymEnum::const_iterator i = get_x11keysym_names().begin(); + i != get_x11keysym_names().end(); ++i) { lst.push_back(i->second); }