aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/X11/ReconfWM.c
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2014-07-11 10:34:08 -0700
committerUlrich Sibiller <uli42@gmx.de>2016-10-19 21:40:29 +0200
commit0f1fa85fe03a268c2b3b04978f3a533df1bf3414 (patch)
tree63928b8d2d5fa5d13e3c610d19f394828096e041 /nx-X11/lib/X11/ReconfWM.c
parentf20f91ee89607537dfc6bfaec05d18e9830bea13 (diff)
downloadnx-libs-0f1fa85fe03a268c2b3b04978f3a533df1bf3414.tar.gz
nx-libs-0f1fa85fe03a268c2b3b04978f3a533df1bf3414.tar.bz2
nx-libs-0f1fa85fe03a268c2b3b04978f3a533df1bf3414.zip
Use C99 named initializers to fill in events passed to XSendEvent
Forces compiler to zero-fill unset fields in the struct (fixing bug 81236) and allows optimizer to order field initialization to best fit cache layout or other considerations. Before & after output of gcc -S on AMD64 shows insertion of "rep stosq" instructions to rapidly zero-fill structs. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Matthieu Herrb <matthieu@herrb.eu> Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
Diffstat (limited to 'nx-X11/lib/X11/ReconfWM.c')
-rw-r--r--nx-X11/lib/X11/ReconfWM.c37
1 files changed, 20 insertions, 17 deletions
diff --git a/nx-X11/lib/X11/ReconfWM.c b/nx-X11/lib/X11/ReconfWM.c
index 1776f2e15..8dc3534e0 100644
--- a/nx-X11/lib/X11/ReconfWM.c
+++ b/nx-X11/lib/X11/ReconfWM.c
@@ -41,7 +41,6 @@ Status XReconfigureWMWindow (
unsigned int mask,
XWindowChanges *changes)
{
- XConfigureRequestEvent ev;
Window root = RootWindow (dpy, screen);
_XAsyncHandler async;
_XAsyncErrorState async_state;
@@ -120,20 +119,24 @@ Status XReconfigureWMWindow (
/*
* If the request succeeded, then everything is okay; otherwise, send event
*/
- if (!async_state.error_count) return True;
-
- ev.type = ConfigureRequest;
- ev.window = w;
- ev.parent = root;
- ev.value_mask = (mask & AllMaskBits);
- ev.x = changes->x;
- ev.y = changes->y;
- ev.width = changes->width;
- ev.height = changes->height;
- ev.border_width = changes->border_width;
- ev.above = changes->sibling;
- ev.detail = changes->stack_mode;
- return (XSendEvent (dpy, root, False,
- SubstructureRedirectMask|SubstructureNotifyMask,
- (XEvent *)&ev));
+ if (!async_state.error_count)
+ return True;
+ else {
+ XConfigureRequestEvent ev = {
+ .type = ConfigureRequest,
+ .window = w,
+ .parent = root,
+ .value_mask = (mask & AllMaskBits),
+ .x = changes->x,
+ .y = changes->y,
+ .width = changes->width,
+ .height = changes->height,
+ .border_width = changes->border_width,
+ .above = changes->sibling,
+ .detail = changes->stack_mode,
+ };
+ return (XSendEvent (dpy, root, False,
+ SubstructureRedirectMask|SubstructureNotifyMask,
+ (XEvent *)&ev));
+ }
}