Move redundant window attr fetch from maprequest directly into
client_init and perform that X roundtrip only once.
This commit is contained in:
parent
03847f1c2e
commit
bb4485df6b
@ -15,7 +15,7 @@
|
|||||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*
|
*
|
||||||
* $OpenBSD: client.c,v 1.169 2014/01/27 15:13:09 okan Exp $
|
* $OpenBSD: client.c,v 1.170 2014/02/02 21:34:05 okan Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
@ -63,6 +63,10 @@ client_init(Window win, struct screen_ctx *sc, int mapped)
|
|||||||
|
|
||||||
if (win == None)
|
if (win == None)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
if (!XGetWindowAttributes(X_Dpy, win, &wattr))
|
||||||
|
return (NULL);
|
||||||
|
if (sc == NULL)
|
||||||
|
sc = screen_fromroot(wattr.root);
|
||||||
|
|
||||||
cc = xcalloc(1, sizeof(*cc));
|
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.x = -1;
|
||||||
cc->ptr.y = -1;
|
cc->ptr.y = -1;
|
||||||
|
|
||||||
XGetWindowAttributes(X_Dpy, cc->win, &wattr);
|
|
||||||
cc->geom.x = wattr.x;
|
cc->geom.x = wattr.x;
|
||||||
cc->geom.y = wattr.y;
|
cc->geom.y = wattr.y;
|
||||||
cc->geom.w = wattr.width;
|
cc->geom.w = wattr.width;
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*
|
*
|
||||||
* $OpenBSD: xevents.c,v 1.109 2014/01/30 15:41:11 okan Exp $
|
* $OpenBSD: xevents.c,v 1.110 2014/02/02 21:34:05 okan Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -75,17 +75,14 @@ xev_handle_maprequest(XEvent *ee)
|
|||||||
{
|
{
|
||||||
XMapRequestEvent *e = &ee->xmaprequest;
|
XMapRequestEvent *e = &ee->xmaprequest;
|
||||||
struct client_ctx *cc = NULL, *old_cc;
|
struct client_ctx *cc = NULL, *old_cc;
|
||||||
XWindowAttributes xattr;
|
|
||||||
|
|
||||||
if ((old_cc = client_current()))
|
if ((old_cc = client_current()))
|
||||||
client_ptrsave(old_cc);
|
client_ptrsave(old_cc);
|
||||||
|
|
||||||
if ((cc = client_find(e->window)) == NULL) {
|
if ((cc = client_find(e->window)) == NULL)
|
||||||
XGetWindowAttributes(X_Dpy, e->window, &xattr);
|
cc = client_init(e->window, NULL, 1);
|
||||||
cc = client_init(e->window, screen_fromroot(xattr.root), 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((cc->flags & CLIENT_IGNORE) == 0)
|
if ((cc != NULL) && ((cc->flags & CLIENT_IGNORE) == 0))
|
||||||
client_ptrwarp(cc);
|
client_ptrwarp(cc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user