diff --git a/lib/modules/Protocols.pmod/X.pmod/Atom.pmod b/lib/modules/Protocols.pmod/X.pmod/Atom.pmod index f941a22f366525ba070bd1f8a6a2d3c082feab6b..6ffbc4d9dcee3cfdcaddaac63c9a5ae0852289ba 100644 --- a/lib/modules/Protocols.pmod/X.pmod/Atom.pmod +++ b/lib/modules/Protocols.pmod/X.pmod/Atom.pmod @@ -104,9 +104,19 @@ class atom_manager object req = Requests.InternAtom(); req->name = name; - send_async_request(req, pending_intern(this_object(), atom, - callback)->handle_reply); - return 0; + if (callback) + { + send_async_request(req, pending_intern(this_object(), atom, + callback)->handle_reply); + return 0; + } else { + array a = blocking_request(req); + if (!a[0]) + return 0; + atom->id = a[1]; + remember_atom(atom); + return atom; + } } object GetAtomName_req(object atom) @@ -138,5 +148,14 @@ class atom_manager } } - void create() { } + void create() + { + for(int i = 1; i<sizeof(_Xlib.predefined_atoms); i++) + { + object atom = Atom(this_object()); + atom->id = i; + atom->name = _Xlib.predefined_atoms[i]; + remember_atom(atom); + } + } }