mirror of
https://github.com/awesomeWM/awesome
synced 2024-11-17 07:47:41 +01:00
xutil: make xutil_lock_mask_get() asynchronous
This commit is contained in:
parent
13edc48587
commit
5c9cc7857d
3 changed files with 26 additions and 11 deletions
12
awesome.c
12
awesome.c
|
@ -279,6 +279,7 @@ main(int argc, char **argv)
|
||||||
const char *confpath = NULL;
|
const char *confpath = NULL;
|
||||||
int xfd, i, screen_nbr, opt, colors_nbr;
|
int xfd, i, screen_nbr, opt, colors_nbr;
|
||||||
xcolor_init_request_t colors_reqs[2];
|
xcolor_init_request_t colors_reqs[2];
|
||||||
|
xcb_get_modifier_mapping_cookie_t xmapping_cookie;
|
||||||
ssize_t cmdlen = 1;
|
ssize_t cmdlen = 1;
|
||||||
client_t *c;
|
client_t *c;
|
||||||
static struct option long_options[] =
|
static struct option long_options[] =
|
||||||
|
@ -389,9 +390,9 @@ main(int argc, char **argv)
|
||||||
/* Allocate the key symbols */
|
/* Allocate the key symbols */
|
||||||
globalconf.keysyms = xcb_key_symbols_alloc(globalconf.connection);
|
globalconf.keysyms = xcb_key_symbols_alloc(globalconf.connection);
|
||||||
|
|
||||||
/* Get the NumLock, ShiftLock and CapsLock masks */
|
/* Send the request to get the NumLock, ShiftLock and CapsLock
|
||||||
xutil_lock_mask_get(globalconf.connection, globalconf.keysyms, &globalconf.numlockmask,
|
masks */
|
||||||
&globalconf.shiftlockmask, &globalconf.capslockmask);
|
xmapping_cookie = xcb_get_modifier_mapping_unchecked(globalconf.connection);
|
||||||
|
|
||||||
/* init atom cache */
|
/* init atom cache */
|
||||||
atoms_init(globalconf.connection);
|
atoms_init(globalconf.connection);
|
||||||
|
@ -431,6 +432,11 @@ main(int argc, char **argv)
|
||||||
for(colors_nbr = 0; colors_nbr < 2; colors_nbr++)
|
for(colors_nbr = 0; colors_nbr < 2; colors_nbr++)
|
||||||
xcolor_init_reply(globalconf.connection, colors_reqs[colors_nbr]);
|
xcolor_init_reply(globalconf.connection, colors_reqs[colors_nbr]);
|
||||||
|
|
||||||
|
/* Process the reply of previously sent mapping request */
|
||||||
|
xutil_lock_mask_get(globalconf.connection, xmapping_cookie,
|
||||||
|
globalconf.keysyms, &globalconf.numlockmask,
|
||||||
|
&globalconf.shiftlockmask, &globalconf.capslockmask);
|
||||||
|
|
||||||
/* init lua */
|
/* init lua */
|
||||||
luaA_init();
|
luaA_init();
|
||||||
|
|
||||||
|
|
|
@ -76,9 +76,20 @@ xutil_text_prop_get(xcb_connection_t *conn, xcb_window_t w, xcb_atom_t atom,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get the lock masks (shiftlock, numlock, capslock).
|
||||||
|
* \param connection The X connection.
|
||||||
|
* \param cookie The cookie of the request.
|
||||||
|
* \param keysyms Key symbols.
|
||||||
|
* \param numlockmask Numlock mask.
|
||||||
|
* \param shiftlockmask Shiftlock mask.
|
||||||
|
* \param capslockmask Capslock mask.
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
xutil_lock_mask_get(xcb_connection_t *conn, xcb_key_symbols_t *keysyms,
|
xutil_lock_mask_get(xcb_connection_t *connection,
|
||||||
unsigned int *numlockmask, unsigned int *shiftlockmask,
|
xcb_get_modifier_mapping_cookie_t cookie,
|
||||||
|
xcb_key_symbols_t *keysyms,
|
||||||
|
unsigned int *numlockmask,
|
||||||
|
unsigned int *shiftlockmask,
|
||||||
unsigned int *capslockmask)
|
unsigned int *capslockmask)
|
||||||
{
|
{
|
||||||
xcb_get_modifier_mapping_reply_t *modmap_r;
|
xcb_get_modifier_mapping_reply_t *modmap_r;
|
||||||
|
@ -86,10 +97,7 @@ xutil_lock_mask_get(xcb_connection_t *conn, xcb_key_symbols_t *keysyms,
|
||||||
unsigned int mask;
|
unsigned int mask;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
modmap_r = xcb_get_modifier_mapping_reply(conn,
|
modmap_r = xcb_get_modifier_mapping_reply(connection, cookie, NULL);
|
||||||
xcb_get_modifier_mapping_unchecked(conn),
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
modmap = xcb_get_modifier_mapping_keycodes(modmap_r);
|
modmap = xcb_get_modifier_mapping_keycodes(modmap_r);
|
||||||
|
|
||||||
for(i = 0; i < 8; i++)
|
for(i = 0; i < 8; i++)
|
||||||
|
|
|
@ -110,8 +110,9 @@ bool xutil_class_hint_get(xcb_connection_t *, xcb_window_t, xutil_class_hint_t *
|
||||||
|
|
||||||
bool xutil_text_prop_get(xcb_connection_t *, xcb_window_t, xcb_atom_t, char **, ssize_t *);
|
bool xutil_text_prop_get(xcb_connection_t *, xcb_window_t, xcb_atom_t, char **, ssize_t *);
|
||||||
|
|
||||||
void xutil_lock_mask_get(xcb_connection_t *, xcb_key_symbols_t *,
|
void xutil_lock_mask_get(xcb_connection_t *, xcb_get_modifier_mapping_cookie_t,
|
||||||
unsigned int *, unsigned int *, unsigned int *);
|
xcb_key_symbols_t *, unsigned int *, unsigned int *,
|
||||||
|
unsigned int *);
|
||||||
|
|
||||||
/** Set the same handler for all errors */
|
/** Set the same handler for all errors */
|
||||||
void xutil_error_handler_catch_all_set(xcb_event_handlers_t *,
|
void xutil_error_handler_catch_all_set(xcb_event_handlers_t *,
|
||||||
|
|
Loading…
Reference in a new issue