summaryrefslogtreecommitdiff
path: root/src/Cursor.c
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2010-11-22 14:50:13 -0500
committerAdam Jackson <ajax@redhat.com>2011-03-08 10:58:13 -0500
commit54926675a9bbb732d3317316db4958e22922ea3f (patch)
treef46741d6cb8c0eebcd2d035d8bd8ed1c5e95880f /src/Cursor.c
parentc301e75b0316c00599caa88d95f384d63eb8bec0 (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.c60
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();
+}