Chromium Code Reviews| Index: ui/base/x/x11_atom_cache.h |
| diff --git a/ui/base/x/x11_atom_cache.h b/ui/base/x/x11_atom_cache.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6c10f1810f0a1f7eaa06e879c41e9dd515d3497b |
| --- /dev/null |
| +++ b/ui/base/x/x11_atom_cache.h |
| @@ -0,0 +1,58 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef UI_BASE_X_X11_ATOM_CACHE_H_ |
| +#define UI_BASE_X_X11_ATOM_CACHE_H_ |
| + |
| +#include "base/basictypes.h" |
| +#include "base/memory/singleton.h" |
| +#include "ui/base/ui_export.h" |
| + |
| +#include <X11/Xlib.h> |
| + |
| +#include <map> |
| + |
| +// Get rid of a macro from Xlib.h that conflicts with Aura's RootWindow class. |
| +#undef RootWindow |
| + |
| +namespace ui { |
| + |
| +// Names of cached atoms that we fetch during the constructor to minimize |
| +// round trips to the X11 server. |
| +enum AtomName { |
| + ATOM_WM_DELETE_WINDOW = 0, |
| + ATOM__NET_WM_MOVERESIZE, |
| + ATOM__NET_WM_PING, |
| + ATOM__NET_WM_PID, |
| + ATOM_WM_S0, |
| + ATOM__MOTIF_WM_HINTS, |
| + |
| + ATOM_COUNT |
| +}; |
| + |
| +// Pre-caches all Atoms on first use to minimize roundtrips to the X11 |
|
sadrul
2012/05/15 22:08:12
This doc may be confusing with ui::GetAtom (in ui/
|
| +// server. Assumes that we only have a single X11 display, |
| +// base::MessagePumpX::GetDefaultXDisplay(). |
| +class UI_EXPORT X11AtomCache { |
| + public: |
| + static X11AtomCache* GetInstance(); |
| + |
| + // Returns the pre-interned Atom by enum instead of string. |
| + ::Atom GetAtom(AtomName name) const; |
| + |
| + private: |
| + friend struct DefaultSingletonTraits<X11AtomCache>; |
| + |
| + // Constructor performs all interning |
| + X11AtomCache(); |
| + ~X11AtomCache(); |
| + |
| + std::map<AtomName, ::Atom> cached_atoms_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(X11AtomCache); |
| +}; |
| + |
| +} // namespace ui |
| + |
| +#endif // UI_BASE_X_ATOM_CACHE_H_ |