diff options
author | Adam Jackson <ajax@redhat.com> | 2010-11-22 14:50:13 -0500 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2011-03-08 10:58:13 -0500 |
commit | 54926675a9bbb732d3317316db4958e22922ea3f (patch) | |
tree | f46741d6cb8c0eebcd2d035d8bd8ed1c5e95880f /src/Cursor.c | |
parent | c301e75b0316c00599caa88d95f384d63eb8bec0 (diff) |
libXfixes v5: Pointer barrierslibXfixes-5.0
v2: Use int * for device list, consistent with libXi.
v3: Update copyright year.
Reviewed-by: Julien Cristau <jcristau@debian.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
Diffstat (limited to 'src/Cursor.c')
-rw-r--r-- | src/Cursor.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/Cursor.c b/src/Cursor.c index edd179d..0d656f7 100644 --- a/src/Cursor.c +++ b/src/Cursor.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Red Hat, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -274,3 +275,62 @@ XFixesShowCursor (Display *dpy, Window win) UnlockDisplay (dpy); SyncHandle (); } + +PointerBarrier +XFixesCreatePointerBarrier(Display *dpy, Window w, int x1, int y1, + int x2, int y2, int directions, + int num_devices, int *devices) +{ + XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy); + xXFixesCreatePointerBarrierReq *req; + PointerBarrier barrier; + int extra = 0; + + XFixesCheckExtension (dpy, info, 0); + if (info->major_version < 5) + return 0; + + if (num_devices) + extra = (((2 * num_devices) + 3) / 4) * 4; + + LockDisplay (dpy); + GetReqExtra (XFixesCreatePointerBarrier, extra, req); + req->reqType = info->codes->major_opcode; + req->xfixesReqType = X_XFixesCreatePointerBarrier; + barrier = req->barrier = XAllocID (dpy); + req->window = w; + req->x1 = x1; + req->y1 = y1; + req->x2 = x2; + req->y2 = y2; + req->directions = directions; + if ((req->num_devices = num_devices)) { + int i; + CARD16 *devs = (CARD16 *)(req + 1); + for (i = 0; i < num_devices; i++) + devs[i] = (CARD16)(devices[i]); + } + + UnlockDisplay (dpy); + SyncHandle(); + return barrier; +} + +void +XFixesDestroyPointerBarrier(Display *dpy, PointerBarrier b) +{ + XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy); + xXFixesDestroyPointerBarrierReq *req; + + XFixesSimpleCheckExtension (dpy, info); + if (info->major_version < 5) + return; + + LockDisplay (dpy); + GetReq (XFixesDestroyPointerBarrier, req); + req->reqType = info->codes->major_opcode; + req->xfixesReqType = X_XFixesDestroyPointerBarrier; + req->barrier = b; + UnlockDisplay (dpy); + SyncHandle(); +} |