[PATCH] libXfixes v5: Pointer barriers

Peter Hutterer peter.hutterer at who-t.net
Mon Mar 7 17:13:52 PST 2011


On Mon, Mar 07, 2011 at 12:06:33PM -0500, Adam Jackson wrote:
> v2: Use int * for device list, consistent with libXi.
> 
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
>  configure.ac                    |    2 +-
>  include/X11/extensions/Xfixes.h |   15 ++++++++++
>  src/Cursor.c                    |   60 +++++++++++++++++++++++++++++++++++++++
>  3 files changed, 76 insertions(+), 1 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index cf9a8d4..fc8c1e1 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -32,7 +32,7 @@ AC_PREREQ([2.60])
>  # that 'revision' number appears in Xfixes.h and has to be manually
>  # synchronized.
>  #
> -AC_INIT(libXfixes, [4.0.5],
> +AC_INIT(libXfixes, [5.0],
>  	[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXfixes])
>  AC_CONFIG_SRCDIR([Makefile.am])
>  AC_CONFIG_HEADERS([config.h])
> diff --git a/include/X11/extensions/Xfixes.h b/include/X11/extensions/Xfixes.h
> index 0c00310..b39716a 100644
> --- a/include/X11/extensions/Xfixes.h
> +++ b/include/X11/extensions/Xfixes.h
> @@ -1,5 +1,6 @@
>  /*
>   * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
> + * Copyright 2010 Red Hat, Inc.

this should probably be 2011 by now

Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

Cheers,
  Peter

> ---

>   *
>   * Permission is hereby granted, free of charge, to any person obtaining a
>   * copy of this software and associated documentation files (the "Software"),
> @@ -249,6 +250,20 @@ XFixesShowCursor (Display *dpy, Window win);
>  
>  #endif /* XFIXES_MAJOR >= 4 */
>  
> +#if XFIXES_MAJOR >= 5
> +
> +typedef XID PointerBarrier;
> +
> +PointerBarrier
> +XFixesCreatePointerBarrier(Display *dpy, Window w, int x1, int y1,
> +			   int x2, int y2, int directions,
> +			   int num_devices, int *devices);
> +
> +void
> +XFixesDestroyPointerBarrier(Display *dpy, PointerBarrier b);
> +
> +#endif /* XFIXES_MAJOR >= 5 */
> +
>  _XFUNCPROTOEND
>  
>  #endif /* _XFIXES_H_ */
> diff --git a/src/Cursor.c b/src/Cursor.c
> index edd179d..dea2292 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 2010 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();
> +}
> -- 
> 1.7.3.5


More information about the xorg-devel mailing list