Move redundant window attr fetch from maprequest directly into

client_init and perform that X roundtrip only once.
This commit is contained in:
okan 2014-02-02 21:34:05 +00:00
parent ad1b78c6d1
commit ad76995af7
2 changed files with 7 additions and 7 deletions

View File

@ -63,6 +63,10 @@ client_init(Window win, struct screen_ctx *sc, int mapped)
if (win == None)
return (NULL);
if (!XGetWindowAttributes(X_Dpy, win, &wattr))
return (NULL);
if (sc == NULL)
sc = screen_fromroot(wattr.root);
cc = xcalloc(1, sizeof(*cc));
@ -86,7 +90,6 @@ client_init(Window win, struct screen_ctx *sc, int mapped)
cc->ptr.x = -1;
cc->ptr.y = -1;
XGetWindowAttributes(X_Dpy, cc->win, &wattr);
cc->geom.x = wattr.x;
cc->geom.y = wattr.y;
cc->geom.w = wattr.width;

View File

@ -75,17 +75,14 @@ xev_handle_maprequest(XEvent *ee)
{
XMapRequestEvent *e = &ee->xmaprequest;
struct client_ctx *cc = NULL, *old_cc;
XWindowAttributes xattr;
if ((old_cc = client_current()))
client_ptrsave(old_cc);
if ((cc = client_find(e->window)) == NULL) {
XGetWindowAttributes(X_Dpy, e->window, &xattr);
cc = client_init(e->window, screen_fromroot(xattr.root), 1);
}
if ((cc = client_find(e->window)) == NULL)
cc = client_init(e->window, NULL, 1);
if ((cc->flags & CLIENT_IGNORE) == 0)
if ((cc != NULL) && ((cc->flags & CLIENT_IGNORE) == 0))
client_ptrwarp(cc);
}