2 #include "e_mod_comp_atoms.h"
3 #include "e_mod_comp_debug.h"
6 EAPI Ecore_X_Atom ATOM_CM_LOG = 0;
7 EAPI Ecore_X_Atom ATOM_CM_LOG_DUMP_DONE = 0;
8 EAPI Ecore_X_Atom ATOM_IMAGE_LAUNCH = 0;
9 EAPI Ecore_X_Atom ATOM_IMAGE_LAUNCH_FILE = 0;
10 EAPI Ecore_X_Atom ATOM_EFFECT_ENABLE = 0;
11 EAPI Ecore_X_Atom ATOM_WINDOW_EFFECT_ENABLE = 0;
12 EAPI Ecore_X_Atom ATOM_WINDOW_LAUNCHING_EFFECT_DONE = 0;
13 EAPI Ecore_X_Atom ATOM_WINDOW_EFFECT_CLIENT_STATE = 0;
14 EAPI Ecore_X_Atom ATOM_WINDOW_EFFECT_TYPE = 0;
15 EAPI Ecore_X_Atom ATOM_EFFECT_DEFAULT = 0;
16 EAPI Ecore_X_Atom ATOM_EFFECT_NONE = 0;
17 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM0 = 0;
18 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM1 = 0;
19 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM2 = 0;
20 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM3 = 0;
21 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM4 = 0;
22 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM5 = 0;
23 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM6 = 0;
24 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM7 = 0;
25 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM8 = 0;
26 EAPI Ecore_X_Atom ATOM_EFFECT_CUSTOM9 = 0;
27 EAPI Ecore_X_Atom ATOM_OVERAY_WINDOW = 0;
28 EAPI Ecore_X_Atom ATOM_X_HIBERNATION_STATE = 0;
29 EAPI Ecore_X_Atom ATOM_X_SCREEN_ROTATION = 0;
30 EAPI Ecore_X_Atom ATOM_X_WIN_USE_DRI2 = 0;
31 EAPI Ecore_X_Atom ATOM_X_WIN_HW_OV_SHOW = 0;
32 EAPI Ecore_X_Atom ATOM_CM_LOCK_SCREEN = 0;
33 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_SUPPORTED = 0;
34 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_STATE = 0;
35 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_BEGIN = 0;
36 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_BEGIN_DONE = 0;
37 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_END = 0;
38 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_END_DONE = 0;
39 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_REQUEST = 0;
40 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_REQUEST_DONE = 0;
41 EAPI Ecore_X_Atom ATOM_CM_PIXMAP_ROTATION_RESIZE_PIXMAP = 0;
42 EAPI Ecore_X_Atom ATOM_NET_CM_WINDOW_BACKGROUND = 0;
43 EAPI Ecore_X_Atom ATOM_XV_USE = 0;
44 EAPI Ecore_X_Atom ATOM_XV_PIXMAP0 = 0;
45 EAPI Ecore_X_Atom ATOM_XV_PIXMAP1 = 0;
46 EAPI Ecore_X_Atom ATOM_XV_BYPASS_TO_PIXMAP0 = 0;
47 EAPI Ecore_X_Atom ATOM_XV_BYPASS_TO_PIXMAP1 = 0;
48 EAPI Ecore_X_Atom ATOM_XV_BYPASS_DONE0 = 0;
49 EAPI Ecore_X_Atom ATOM_XV_BYPASS_DONE1 = 0;
50 EAPI Ecore_X_Atom ATOM_XV_ROT_EFFECT_DONE = 0;
51 EAPI Ecore_X_Atom ATOM_XV_ROT_EFFECT_BEGIN = 0;
52 EAPI Ecore_X_Atom ATOM_CM_TRANSPARENT_RECT = 0;
53 EAPI Ecore_X_Atom ATOM_RR_WM_STATE = 0;
54 EAPI Ecore_X_Atom ATOM_CM_3D_APP_WIN = 0;
55 EAPI Ecore_X_Atom ATOM_CM_STEREOSCOPIC_MODE = 0;
56 EAPI Ecore_X_Atom ATOM_CM_MSG_STEREO_MODE = 0;
58 /* local subsystem globals */
59 static Eina_Hash *atoms_hash = NULL;
61 static const char *atom_names[] = {
63 "_E_COMP_LOG_DUMP_DONE",
64 "_E_COMP_FAKE_LAUNCH",
65 "_E_COMP_FAKE_LAUNCH_IMAGE",
66 "_NET_CM_EFFECT_ENABLE",
67 "_NET_CM_WINDOW_EFFECT_ENABLE",
68 "_NET_CM_WINDOW_LAUNCH_EFFECT_DONE",
69 "_NET_CM_WINDOW_EFFECT_CLIENT_STATE",
70 "_NET_CM_WINDOW_EFFECT_TYPE",
71 "_NET_CM_EFFECT_DEFAULT",
72 "_NET_CM_EFFECT_NONE",
73 "_NET_CM_EFFECT_CUSTOM0",
74 "_NET_CM_EFFECT_CUSTOM1",
75 "_NET_CM_EFFECT_CUSTOM2",
76 "_NET_CM_EFFECT_CUSTOM3",
77 "_NET_CM_EFFECT_CUSTOM4",
78 "_NET_CM_EFFECT_CUSTOM5",
79 "_NET_CM_EFFECT_CUSTOM6",
80 "_NET_CM_EFFECT_CUSTOM7",
81 "_NET_CM_EFFECT_CUSTOM8",
82 "_NET_CM_EFFECT_CUSTOM9",
83 "_E_COMP_OVERAY_WINDOW",
84 "X_HIBERNATION_STATE",
88 "_E_COMP_LOCK_SCREEN",
89 "_E_COMP_PIXMAP_ROTATION_SUPPORTED",
90 "_E_COMP_PIXMAP_ROTATION_STATE",
91 "_E_COMP_PIXMAP_ROTATION_BEGIN",
92 "_E_COMP_PIXMAP_ROTATION_BEGIN_DONE",
93 "_E_COMP_PIXMAP_ROTATION_END",
94 "_E_COMP_PIXMAP_ROTATION_END_DONE",
95 "_E_COMP_PIXMAP_ROTATION_REQUEST",
96 "_E_COMP_PIXMAP_ROTATION_REQUEST_DONE",
97 "_E_COMP_PIXMAP_ROTATION_RESIZE_PIXMAP",
98 "_NET_CM_WINDOW_BACKGROUND",
102 "_XV_BYPASS_TO_PIXMAP0",
103 "_XV_BYPASS_TO_PIXMAP1",
106 "_XV_ROT_EFFECT_DONE",
107 "_XV_ROT_EFFECT_BEGIN",
108 "_E_COMP_TRANSPARENT_RECT",
110 "_E_COMP_3D_APP_WIN",
111 "_E_COMP_STEREOSCOPIC_MODE",
112 "_E_COMP_MSG_STEREO_MODE"
115 static const char *external_atom_names[] = {
125 /* externally accessible functions */
127 e_mod_comp_atoms_init(void)
129 Ecore_X_Atom *atoms = NULL;
130 int n = 0, i = 0, res = 0;
132 if (!atoms_hash) atoms_hash = eina_hash_string_superfast_new(NULL);
133 E_CHECK_RETURN(atoms_hash, 0);
135 n = (sizeof(atom_names) / sizeof(char *));
137 atoms = E_NEW(Ecore_X_Atom, n);
138 E_CHECK_GOTO(atoms, cleanup);
140 ecore_x_atoms_get(atom_names, n, atoms);
142 ATOM_CM_LOG = atoms[i++];
143 ATOM_CM_LOG_DUMP_DONE = atoms[i++];
144 ATOM_IMAGE_LAUNCH = atoms[i++];
145 ATOM_IMAGE_LAUNCH_FILE = atoms[i++];
146 ATOM_EFFECT_ENABLE = atoms[i++];
147 ATOM_WINDOW_EFFECT_ENABLE = atoms[i++];
148 ATOM_WINDOW_LAUNCHING_EFFECT_DONE = atoms[i++];
149 ATOM_WINDOW_EFFECT_CLIENT_STATE = atoms[i++];
150 ATOM_WINDOW_EFFECT_TYPE = atoms[i++];
151 ATOM_EFFECT_DEFAULT = atoms[i++];
152 ATOM_EFFECT_NONE = atoms[i++];
153 ATOM_EFFECT_CUSTOM0 = atoms[i++];
154 ATOM_EFFECT_CUSTOM1 = atoms[i++];
155 ATOM_EFFECT_CUSTOM2 = atoms[i++];
156 ATOM_EFFECT_CUSTOM3 = atoms[i++];
157 ATOM_EFFECT_CUSTOM4 = atoms[i++];
158 ATOM_EFFECT_CUSTOM5 = atoms[i++];
159 ATOM_EFFECT_CUSTOM6 = atoms[i++];
160 ATOM_EFFECT_CUSTOM7 = atoms[i++];
161 ATOM_EFFECT_CUSTOM8 = atoms[i++];
162 ATOM_EFFECT_CUSTOM9 = atoms[i++];
163 ATOM_OVERAY_WINDOW = atoms[i++];
164 ATOM_X_HIBERNATION_STATE = atoms[i++];
165 ATOM_X_SCREEN_ROTATION = atoms[i++];
166 ATOM_X_WIN_USE_DRI2 = atoms[i++];
167 ATOM_X_WIN_HW_OV_SHOW = atoms[i++];
168 ATOM_CM_LOCK_SCREEN = atoms[i++];
169 ATOM_CM_PIXMAP_ROTATION_SUPPORTED = atoms[i++];
170 ATOM_CM_PIXMAP_ROTATION_STATE = atoms[i++];
171 ATOM_CM_PIXMAP_ROTATION_BEGIN = atoms[i++];
172 ATOM_CM_PIXMAP_ROTATION_BEGIN_DONE = atoms[i++];
173 ATOM_CM_PIXMAP_ROTATION_END = atoms[i++];
174 ATOM_CM_PIXMAP_ROTATION_END_DONE = atoms[i++];
175 ATOM_CM_PIXMAP_ROTATION_REQUEST = atoms[i++];
176 ATOM_CM_PIXMAP_ROTATION_REQUEST_DONE = atoms[i++];
177 ATOM_CM_PIXMAP_ROTATION_RESIZE_PIXMAP = atoms[i++];
178 ATOM_NET_CM_WINDOW_BACKGROUND = atoms[i++];
179 ATOM_XV_USE = atoms[i++];
180 ATOM_XV_PIXMAP0 = atoms[i++];
181 ATOM_XV_PIXMAP1 = atoms[i++];
182 ATOM_XV_BYPASS_TO_PIXMAP0 = atoms[i++];
183 ATOM_XV_BYPASS_TO_PIXMAP1 = atoms[i++];
184 ATOM_XV_BYPASS_DONE0 = atoms[i++];
185 ATOM_XV_BYPASS_DONE1 = atoms[i++];
186 ATOM_XV_ROT_EFFECT_DONE = atoms[i++];
187 ATOM_XV_ROT_EFFECT_BEGIN = atoms[i++];
188 ATOM_CM_TRANSPARENT_RECT = atoms[i++];
189 ATOM_RR_WM_STATE = atoms[i++];
190 ATOM_CM_3D_APP_WIN = atoms[i++];
191 ATOM_CM_STEREOSCOPIC_MODE = atoms[i++];
192 ATOM_CM_MSG_STEREO_MODE = atoms[i++];
194 for (i = 0; i < n; i++)
196 E_CHECK_GOTO(atoms[i], cleanup);
197 eina_hash_add(atoms_hash,
198 e_util_winid_str_get(atoms[i]),
203 eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE), external_atom_names[i++]);
204 eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_E_COMP_SYNC_COUNTER), external_atom_names[i++]);
205 eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_E_ILLUME_WINDOW_STATE), external_atom_names[i++]);
206 eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_NET_WM_WINDOW_OPACITY), external_atom_names[i++]);
207 eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_WM_CLASS), external_atom_names[i++]);
208 eina_hash_add(atoms_hash, e_util_winid_str_get(ECORE_X_ATOM_WM_WINDOW_ROLE), external_atom_names[i++]);
213 if (atoms) E_FREE(atoms);
218 e_mod_comp_atoms_shutdown(void)
220 if (atoms_hash) eina_hash_free(atoms_hash);
226 e_mod_comp_atoms_name_get(Ecore_X_Atom a)
228 E_CHECK_RETURN(a, NULL);
229 return eina_hash_find(atoms_hash,
230 e_util_winid_str_get(a));