Turned x11keysym_names into a singleton

This commit is contained in:
Ingo Ruhnke 2011-01-27 17:51:21 +01:00
parent b2709086fb
commit c797d028ee
4 changed files with 15 additions and 13 deletions

7
TODO
View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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);
}