Commit 6217812c authored by Mike Gabriel's avatar Mike Gabriel

library clean-up: Don't build libNX_Xfixes anymore. Use system's libXfixes shared library.

parent 27e06a5e
...@@ -20,6 +20,7 @@ Build-Depends: ...@@ -20,6 +20,7 @@ Build-Depends:
libxdamage-dev, libxdamage-dev,
libxcomposite-dev, libxcomposite-dev,
libxrandr-dev, libxrandr-dev,
libxfixes-dev,
autoconf, autoconf,
pkg-config, pkg-config,
x11proto-core-dev, x11proto-core-dev,
...@@ -477,19 +478,16 @@ Multi-Arch: same ...@@ -477,19 +478,16 @@ Multi-Arch: same
Pre-Depends: Pre-Depends:
${misc:Pre-Depends}, ${misc:Pre-Depends},
Depends: Depends:
${shlibs:Depends},
${misc:Depends}, ${misc:Depends},
Breaks: nxlibs (<= 3.5.1), Description: nx-X11 miscellaneous 'fixes' extension library (dummy package)
libnx-x11 (<< 2:3.5.0.29-0x2go2~),
Description: nx-X11 miscellaneous 'fixes' extension library
NX is a software suite which implements very efficient NX is a software suite which implements very efficient
compression of the X11 protocol. This increases performance when compression of the X11 protocol. This increases performance when
using X applications over a network, especially a slow one. using X applications over a network, especially a slow one.
. .
libNX_Xfixes provides an X Window System client interface to the This package removes the obsoleted libNX_Xfixes.so.3 library. With
'XFIXES' extension to the X protocol. recent versions of NX, the system-wide installed libXfixes gets used.
. .
It provides support for Region types, and some cursor functions. This package can be safely removed.
Package: libnx-xfixes-dev Package: libnx-xfixes-dev
Provides: libnx-xfixes3-dev Provides: libnx-xfixes3-dev
...@@ -497,22 +495,17 @@ Section: libdevel ...@@ -497,22 +495,17 @@ Section: libdevel
Architecture: any Architecture: any
Multi-Arch: same Multi-Arch: same
Depends: Depends:
libnx-xfixes3 (= ${binary:Version}),
nx-x11proto-xfixes-dev (= ${binary:Version}),
${misc:Depends}, ${misc:Depends},
Breaks: nxlibs (<= 3.5.1), Description: nx-X11 miscellaneous 'fixes' extension library (dummy package)
libnx-x11-dev (<< 2:3.5.0.29-0x2go2~),
Description: nx-X11 miscellaneous 'fixes' extension library (development headers)
NX is a software suite which implements very efficient NX is a software suite which implements very efficient
compression of the X11 protocol. This increases performance when compression of the X11 protocol. This increases performance when
using X applications over a network, especially a slow one. using X applications over a network, especially a slow one.
. .
libNX_Xfixes provides an X Window System client interface to the This package removes the obsoleted headers for the libNX_Xfixes.so.3
'XFIXES' extension to the X protocol. library. With recent versions of NX, the system-wide installed
. libXfixes gets used.
It provides support for Region types, and some cursor functions.
. .
This package contains the development headers for this library. This package can be safely removed.
Package: nx-x11proto-xfixes-dev Package: nx-x11proto-xfixes-dev
Section: libdevel Section: libdevel
...@@ -536,21 +529,18 @@ Multi-Arch: same ...@@ -536,21 +529,18 @@ Multi-Arch: same
Pre-Depends: Pre-Depends:
${misc:Pre-Depends}, ${misc:Pre-Depends},
Depends: Depends:
libnx-xfixes3 (= ${binary:Version}),
${misc:Depends}, ${misc:Depends},
Section: debug Section: debug
Breaks: nx-x11-dbg (<< 2:3.5.0.29-0x2go2~), Description: nx-X11 miscellaneous 'fixes' extension library (dummy package)
Description: nx-X11 miscellaneous 'fixes' extension library (debug package)
NX is a software suite which implements very efficient NX is a software suite which implements very efficient
compression of the X11 protocol. This increases performance when compression of the X11 protocol. This increases performance when
using X applications over a network, especially a slow one. using X applications over a network, especially a slow one.
. .
libNX_Xfixes provides an X Window System client interface to the This package removes the obsoleted debug symbols for the libNX_Xfixes.so.3
'XFIXES' extension to the X protocol. library. With recent versions of NX, the system-wide installed libXfixes
. gets used.
It provides support for Region types, and some cursor functions.
. .
This package contains debug symbols for this library. This package can be safely removed.
Package: libnx-xinerama1 Package: libnx-xinerama1
Architecture: any Architecture: any
......
usr/lib/*/libNX_Xfixes.so
usr/include/*/nx-X11/extensions/Xfixes.h
libNX_Xfixes.so.3 libnx-xfixes3 #MINVER#
XFixesChangeCursor@Base 3.5.0.29
XFixesChangeCursorByName@Base 3.5.0.29
XFixesChangeSaveSet@Base 3.5.0.29
XFixesCopyRegion@Base 3.5.0.29
XFixesCreateRegion@Base 3.5.0.29
XFixesCreateRegionFromBitmap@Base 3.5.0.29
XFixesCreateRegionFromGC@Base 3.5.0.29
XFixesCreateRegionFromPicture@Base 3.5.0.29
XFixesCreateRegionFromWindow@Base 3.5.0.29
XFixesDestroyRegion@Base 3.5.0.29
XFixesExpandRegion@Base 3.5.0.29
XFixesExtensionInfo@Base 3.5.0.29
XFixesExtensionName@Base 3.5.0.29
XFixesFetchRegion@Base 3.5.0.29
XFixesFetchRegionAndBounds@Base 3.5.0.29
XFixesFindDisplay@Base 3.5.0.29
XFixesGetCursorImage@Base 3.5.0.29
XFixesGetCursorName@Base 3.5.0.29
XFixesIntersectRegion@Base 3.5.0.29
XFixesInvertRegion@Base 3.5.0.29
XFixesQueryExtension@Base 3.5.0.29
XFixesQueryVersion@Base 3.5.0.29
XFixesRegionExtents@Base 3.5.0.29
XFixesSelectCursorInput@Base 3.5.0.29
XFixesSelectSelectionInput@Base 3.5.0.29
XFixesSetCursorName@Base 3.5.0.29
XFixesSetGCClipRegion@Base 3.5.0.29
XFixesSetPictureClipRegion@Base 3.5.0.29
XFixesSetRegion@Base 3.5.0.29
XFixesSetWindowShapeRegion@Base 3.5.0.29
XFixesSubtractRegion@Base 3.5.0.29
XFixesTranslateRegion@Base 3.5.0.29
XFixesUnionRegion@Base 3.5.0.29
XFixesVersion@Base 3.5.0.29
...@@ -81,7 +81,6 @@ override_dh_strip: ...@@ -81,7 +81,6 @@ override_dh_strip:
dh_strip -plibnx-x11-6 --dbg-package=libnx-x11-6-dbg dh_strip -plibnx-x11-6 --dbg-package=libnx-x11-6-dbg
dh_strip -plibnx-xau6 --dbg-package=libnx-xau6-dbg dh_strip -plibnx-xau6 --dbg-package=libnx-xau6-dbg
dh_strip -plibnx-xext6 --dbg-package=libnx-xext6-dbg dh_strip -plibnx-xext6 --dbg-package=libnx-xext6-dbg
dh_strip -plibnx-xfixes3 --dbg-package=libnx-xfixes3-dbg
dh_strip -plibnx-xinerama1 --dbg-package=libnx-xinerama1-dbg dh_strip -plibnx-xinerama1 --dbg-package=libnx-xinerama1-dbg
dh_strip -plibnx-xrender1 --dbg-package=libnx-xrender1-dbg dh_strip -plibnx-xrender1 --dbg-package=libnx-xrender1-dbg
dh_strip -plibnx-xtst6 --dbg-package=libnx-xtst6-dbg dh_strip -plibnx-xtst6 --dbg-package=libnx-xtst6-dbg
......
...@@ -295,9 +295,6 @@ XORGRELSTRING = XorgManVersionString ...@@ -295,9 +295,6 @@ XORGRELSTRING = XorgManVersionString
#ifndef BuildXfixes #ifndef BuildXfixes
#define BuildXfixes YES #define BuildXfixes YES
#endif #endif
#ifndef BuildXfixesLibrary
#define BuildXfixesLibrary !BuildServersOnly
#endif
#ifndef BuildDamage #ifndef BuildDamage
#define BuildDamage BuildXfixes #define BuildDamage BuildXfixes
...@@ -1372,30 +1369,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir) ...@@ -1372,30 +1369,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
#define ProfileLibXrender NO #define ProfileLibXrender NO
#endif #endif
#if BuildXfixesLibrary
#ifndef SharedLibXfixes
#define SharedLibXfixes HasSharedLibraries
#endif
#ifndef NormalLibXfixes
#define NormalLibXfixes (!SharedLibXfixes || ForceNormalLib)
#endif
#ifndef DebugLibXfixes
#define DebugLibXfixes NO
#endif
#ifndef ProfileLibXfixes
#define ProfileLibXfixes NO
#endif
#else
#undef SharedLibXfixes
#define SharedLibXfixes NO
#undef NormalLibXfixes
#define NormalLibXfixes NO
#undef DebugLibXfixes
#define DebugLibXfixes NO
#undef ProfileLibXfixes
#define ProfileLibXfixes NO
#endif
#ifndef SharedLibXext #ifndef SharedLibXext
#define SharedLibXext HasSharedLibraries #define SharedLibXext HasSharedLibraries
#endif #endif
...@@ -1442,16 +1415,6 @@ SharedLibReferences(XRENDER,NX_Xrender,$(XRENDERLIBSRC),SOXRENDERREV,SharedXrend ...@@ -1442,16 +1415,6 @@ SharedLibReferences(XRENDER,NX_Xrender,$(XRENDERLIBSRC),SOXRENDERREV,SharedXrend
ProjectUnsharedLibReferences(XRENDER,NX_Xrender,$(XRENDERLIBSRC),XBuildLibDir) ProjectUnsharedLibReferences(XRENDER,NX_Xrender,$(XRENDERLIBSRC),XBuildLibDir)
#endif #endif
XFIXESLIBSRC = $(LIBSRC)/Xfixes
#if SharedLibXfixes
#ifndef SharedXfixesRev
#define SharedXfixesRev 3.0
#endif
SharedLibReferences(XFIXES,NX_Xfixes,$(XFIXESLIBSRC),SOXFIXESREV,SharedXfixesRev)
#else
ProjectUnsharedLibReferences(XFIXES,NX_Xfixes,$(XFIXESLIBSRC),XBuildLibDir)
#endif
#ifndef SharedLibXau #ifndef SharedLibXau
#define SharedLibXau YES #define SharedLibXau YES
#endif #endif
......
...@@ -123,8 +123,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ ...@@ -123,8 +123,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
#define BuildLibraries YES #define BuildLibraries YES
#endif #endif
#define BuildXfixesLibrary YES
#define BuildDocs NO #define BuildDocs NO
#define BuildComposite YES #define BuildComposite YES
......
...@@ -41,7 +41,7 @@ XINERAMAHEADERS = Xinerama.h panoramiXext.h panoramiXproto.h ...@@ -41,7 +41,7 @@ XINERAMAHEADERS = Xinerama.h panoramiXext.h panoramiXproto.h
#if BuildRender #if BuildRender
RENDERHEADERS = render.h renderproto.h RENDERHEADERS = render.h renderproto.h
#endif #endif
#if BuildXfixes || BuildXfixesLibrary #if BuildXfixes
XFIXESHEADERS = xfixeswire.h xfixesproto.h XFIXESHEADERS = xfixeswire.h xfixesproto.h
#endif #endif
#if BuildComposite #if BuildComposite
......
...@@ -23,10 +23,6 @@ XINERAMADIR=Xinerama ...@@ -23,10 +23,6 @@ XINERAMADIR=Xinerama
RENDERLIBDIR = Xrender RENDERLIBDIR = Xrender
#endif #endif
#if BuildXfixesLibrary
XFIXESLIBDIR = Xfixes
#endif
#if BuildXauLib #if BuildXauLib
XAULIBDIR = Xau XAULIBDIR = Xau
#endif #endif
...@@ -54,7 +50,6 @@ LINTSUBDIRS = \ ...@@ -54,7 +50,6 @@ LINTSUBDIRS = \
$(XKBLIBDIR) \ $(XKBLIBDIR) \
$(XINERAMADIR) \ $(XINERAMADIR) \
$(RENDERLIBDIR) \ $(RENDERLIBDIR) \
$(XFIXESLIBDIR) \
$(NULL) $(NULL)
SUBDIRS = xtrans $(LINTSUBDIRS) SUBDIRS = xtrans $(LINTSUBDIRS)
......
/*
* $XFree86: xc/lib/Xfixes/Cursor.c,v 1.1 2002/11/30 06:21:44 keithp Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "Xfixesint.h"
void
XFixesSelectCursorInput (Display *dpy,
Window win,
unsigned long eventMask)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
xXFixesSelectCursorInputReq *req;
XFixesSimpleCheckExtension (dpy, info);
LockDisplay (dpy);
GetReq (XFixesSelectCursorInput, req);
req->reqType = info->codes->major_opcode;
req->xfixesReqType = X_XFixesSelectCursorInput;
req->window = win;
req->eventMask = eventMask;
UnlockDisplay (dpy);
SyncHandle ();
}
XFixesCursorImage *
XFixesGetCursorImage (Display *dpy)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
xXFixesGetCursorImageAndNameReq *req;
xXFixesGetCursorImageAndNameReply rep;
int npixels;
int nbytes_name;
int nbytes, nread, rlength;
XFixesCursorImage *image;
char *name;
XFixesCheckExtension (dpy, info, 0);
LockDisplay (dpy);
GetReq (XFixesGetCursorImageAndName, req);
req->reqType = info->codes->major_opcode;
if (info->major_version >= 2)
req->xfixesReqType = X_XFixesGetCursorImageAndName;
else
req->xfixesReqType = X_XFixesGetCursorImage;
if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
{
UnlockDisplay (dpy);
SyncHandle ();
return 0;
}
if (info->major_version < 2)
{
rep.cursorName = None;
rep.nbytes = 0;
}
npixels = rep.width * rep.height;
nbytes_name = rep.nbytes;
/* reply data length */
nbytes = (long) rep.length << 2;
/* bytes of actual data in the reply */
nread = (npixels << 2) + nbytes_name;
/* size of data returned to application */
rlength = (sizeof (XFixesCursorImage) +
npixels * sizeof (unsigned long) +
nbytes_name + 1);
image = (XFixesCursorImage *) Xmalloc (rlength);
if (!image)
{
_XEatData (dpy, nbytes);
UnlockDisplay (dpy);
SyncHandle ();
return 0;
}
image->x = rep.x;
image->y = rep.y;
image->width = rep.width;
image->height = rep.height;
image->xhot = rep.xhot;
image->yhot = rep.yhot;
image->cursor_serial = rep.cursorSerial;
image->pixels = (unsigned long *) (image + 1);
image->atom = rep.cursorName;
name = (char *) (image->pixels + npixels);
image->name = name;
_XRead32 (dpy, image->pixels, npixels << 2);
_XRead (dpy, name, nbytes_name);
name[nbytes_name] = '\0'; /* null-terminate */
/* skip any padding */
if(nbytes > nread)
{
_XEatData (dpy, (unsigned long) (nbytes - nread));
}
UnlockDisplay (dpy);
SyncHandle ();
return image;
}
void
XFixesSetCursorName (Display *dpy, Cursor cursor, const char *name)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
xXFixesSetCursorNameReq *req;
int nbytes = strlen (name);
XFixesSimpleCheckExtension (dpy, info);
if (info->major_version < 2)
return;
LockDisplay (dpy);
GetReq (XFixesSetCursorName, req);
req->reqType = info->codes->major_opcode;
req->xfixesReqType = X_XFixesSetCursorName;
req->cursor = cursor;
req->nbytes = nbytes;
req->length += (nbytes + 3) >> 2;
Data (dpy, name, nbytes);
UnlockDisplay (dpy);
SyncHandle ();
}
const char *
XFixesGetCursorName (Display *dpy, Cursor cursor, Atom *atom)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
xXFixesGetCursorNameReq *req;
xXFixesGetCursorNameReply rep;
char *name;
XFixesCheckExtension (dpy, info, 0);
if (info->major_version < 2)
return 0;
LockDisplay (dpy);
GetReq (XFixesGetCursorName, req);
req->reqType = info->codes->major_opcode;
req->xfixesReqType = X_XFixesGetCursorName;
req->cursor = cursor;
if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
{
UnlockDisplay (dpy);
SyncHandle ();
return 0;
}
*atom = rep.atom;
if ((name = (char *) Xmalloc(rep.nbytes+1))) {
_XReadPad(dpy, name, (long)rep.nbytes);
name[rep.nbytes] = '\0';
} else {
_XEatData(dpy, (unsigned long) (rep.nbytes + 3) & ~3);
name = (char *) NULL;
}
UnlockDisplay(dpy);
SyncHandle();
return(name);
}
void
XFixesChangeCursor (Display *dpy, Cursor source, Cursor destination)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
xXFixesChangeCursorReq *req;
XFixesSimpleCheckExtension (dpy, info);
if (info->major_version < 2)
return;
LockDisplay (dpy);
GetReq (XFixesChangeCursor, req);
req->reqType = info->codes->major_opcode;
req->xfixesReqType = X_XFixesChangeCursor;
req->source = source;
req->destination = destination;
UnlockDisplay(dpy);
SyncHandle();
}
void
XFixesChangeCursorByName (Display *dpy, Cursor source, const char *name)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
xXFixesChangeCursorByNameReq *req;
int nbytes = strlen (name);
XFixesSimpleCheckExtension (dpy, info);
if (info->major_version < 2)
return;
LockDisplay (dpy);
GetReq (XFixesChangeCursorByName, req);
req->reqType = info->codes->major_opcode;
req->xfixesReqType = X_XFixesChangeCursorByName;
req->source = source;
req->nbytes = nbytes;
req->length += (nbytes + 3) >> 2;
Data (dpy, name, nbytes);
UnlockDisplay(dpy);
SyncHandle();
}
XCOMM $XdotOrg: xc/lib/Xfixes/Imakefile,v 1.1 2004/07/31 05:50:39 anholt Exp $
#ifndef NormalLibXfixes
#define NormalLibXfixes YES
SOXFIXESREV=3.0.0
#endif
#ifndef SharedLibXfixes
#define SharedLibXfixes YES
#endif
#define DoNormalLib NormalLibXfixes
#define DoSharedLib SharedLibXfixes
#define DoDebugLib DebugLibXfixes
#define DoProfileLib ProfileLibXfixes
#define LibName NX_Xfixes
#define SoRev SOXFIXESREV
#define IncSubdir nx-X11
#define IncSubSubdir extensions
#include <Threads.tmpl>
#ifdef SharedXfixesReqs
REQUIREDLIBS = SharedXfixesReqs
#endif
XFIXES_VERSION=3.0.0
X_LIBS=-L$(SHLIBDIR) $(XONLYLIB)
X_CFLAGS=-I$(INCROOT) $(THREADS_DEFINES)
RPATH_CFLAG = HardCodeLibdirFlag
SRCS = Cursor.c \
Region.c \
SaveSet.c \
Selection.c \
Xfixes.c
OBJS = Cursor.o \
Region.o \
SaveSet.o \
Selection.o \
Xfixes.o
HEADERS = Xfixes.h
SUBSTVARS=prefix="$(PROJECTROOT)" \
exec_prefix="$(BINDIR)" \
libdir="$(USRLIBDIR)" \
hardcode_libdir_flag_spec="$(RPATH_CFLAG)" \
includedir="$(INCROOT)" \
X_LIBS="$(X_LIBS)" \
X_CFLAGS="$(X_CFLAGS)" \
VERSION="$(XFIXES_VERSION)"
#include <Library.tmpl>
MANSUFFIX=$(LIBMANSUFFIX)
InstallManPage(Xfixes,$(LIBMANDIR))
DependTarget()
/*
* $XFree86: xc/lib/Xfixes/SaveSet.c,v 1.1 2002/11/30 18:41:33 keithp Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "Xfixesint.h"
void
XFixesChangeSaveSet (Display *dpy, Window win, int mode, int target, int map)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
xXFixesChangeSaveSetReq *req;
XFixesSimpleCheckExtension (dpy, info);
LockDisplay (dpy);
GetReq (XFixesChangeSaveSet, req);
req->reqType = info->codes->major_opcode;
req->xfixesReqType = X_XFixesChangeSaveSet;
req->mode = mode;
req->target = target;
req->map = map;
req->window = win;
UnlockDisplay (dpy);
SyncHandle ();
}
/*
* $XFree86: xc/lib/Xfixes/Selection.c,v 1.1 2002/11/30 06:21:45 keithp Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "Xfixesint.h"
void
XFixesSelectSelectionInput (Display *dpy,
Window win,
Atom selection,
unsigned long eventMask)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
xXFixesSelectSelectionInputReq *req;
XFixesSimpleCheckExtension (dpy, info);
LockDisplay (dpy);
GetReq (XFixesSelectSelectionInput, req);
req->reqType = info->codes->major_opcode;
req->xfixesReqType = X_XFixesSelectSelectionInput;
req->window = win;
req->selection = selection;
req->eventMask = eventMask;
UnlockDisplay (dpy);
SyncHandle ();
}
LIBRARY Xfixes
VERSION LIBRARY_VERSION
EXPORTS
XFixesQueryExtension
XFixesQueryVersion
XFixesChangeSaveSet
XFixesSelectSelectionInput
XFixesSelectCursorInput
XFixesGetCursorImage
/* $XFree86: xc/lib/Xfixes/Xfixes-def.cpp,v 1.1 2002/11/30 06:21:45 keithp Exp $ */
/*
* $XFree86: xc/lib/Xfixes/Xfixes.c,v 1.1 2002/11/30 06:21:45 keithp Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "Xfixesint.h"
XFixesExtInfo XFixesExtensionInfo;
char XFixesExtensionName[] = XFIXES_NAME;
static int
XFixesCloseDisplay (Display *dpy, XExtCodes *codes);
static Bool
XFixesWireToEvent(Display *dpy, XEvent *event, xEvent *wire);
static Status
XFixesEventToWire(Display *dpy, XEvent *event, xEvent *wire);
/*
* XFixesExtAddDisplay - add a display to this extension. (Replaces
* XextAddDisplay)
*/
static XFixesExtDisplayInfo *
XFixesExtAddDisplay (XFixesExtInfo *extinfo,
Display *dpy,
char *ext_name)
{
XFixesExtDisplayInfo *info;
int ev;
info = (XFixesExtDisplayInfo *) Xmalloc (sizeof (XFixesExtDisplayInfo));
if (!info) return NULL;
info->display = dpy;
info->codes = XInitExtension (dpy, ext_name);
/*
* if the server has the extension, then we can initialize the
* appropriate function vectors
*/
if (info->codes) {
xXFixesQueryVersionReply rep;
xXFixesQueryVersionReq *req;
XESetCloseDisplay (dpy, info->codes->extension,
XFixesCloseDisplay);
for (ev = info->codes->first_event;
ev < info->codes->first_event + XFixesNumberEvents;
ev++)
{
XESetWireToEvent (dpy, ev, XFixesWireToEvent);
XESetEventToWire (dpy, ev, XFixesEventToWire);
}
/*
* Get the version info
*/
LockDisplay (dpy);
GetReq (XFixesQueryVersion, req);
req->reqType = info->codes->major_opcode;
req->xfixesReqType = X_XFixesQueryVersion;
req->majorVersion = XFIXES_MAJOR;
req->minorVersion = XFIXES_MINOR;
if (!_XReply (dpy, (xReply *) &rep, 0, xTrue))
{
UnlockDisplay (dpy);
SyncHandle ();
return 0;
}
info->major_version = rep.majorVersion;
info->minor_version = rep.minorVersion;
UnlockDisplay (dpy);
} else {
/* The server doesn't have this extension.
* Use a private Xlib-internal extension to hang the close_display
* hook on so that the "cache" (extinfo->cur) is properly cleaned.
* (XBUG 7955)
*/
XExtCodes *codes = XAddExtension(dpy);
if (!codes) {
XFree(info);
return NULL;
}
XESetCloseDisplay (dpy, codes->extension, XFixesCloseDisplay);
}
/*
* now, chain it onto the list
*/
_XLockMutex(_Xglobal_lock);
info->next = extinfo->head;
extinfo->head = info;
extinfo->cur = info;
extinfo->ndisplays++;
_XUnlockMutex(_Xglobal_lock);
return info;
}
/*
* XFixesExtRemoveDisplay - remove the indicated display from the
* extension object. (Replaces XextRemoveDisplay.)
*/
static int
XFixesExtRemoveDisplay (XFixesExtInfo *extinfo, Display *dpy)
{
XFixesExtDisplayInfo *info, *prev;
/*
* locate this display and its back link so that it can be removed
*/
_XLockMutex(_Xglobal_lock);
prev = NULL;
for (info = extinfo->head; info; info = info->next) {
if (info->display == dpy) break;
prev = info;
}
if (!info) {
_XUnlockMutex(_Xglobal_lock);
return 0; /* hmm, actually an error */
}
/*
* remove the display from the list; handles going to zero
*/
if (prev)
prev->next = info->next;
else
extinfo->head = info->next;
extinfo->ndisplays--;
if (info == extinfo->cur) extinfo->cur = NULL; /* flush cache */
_XUnlockMutex(_Xglobal_lock);
Xfree ((char *) info);
return 1;
}
/*
* XFixesExtFindDisplay - look for a display in this extension; keeps a
* cache of the most-recently used for efficiency. (Replaces
* XextFindDisplay.)
*/
static XFixesExtDisplayInfo *
XFixesExtFindDisplay (XFixesExtInfo *extinfo,
Display *dpy)
{
XFixesExtDisplayInfo *info;
/*
* see if this was the most recently accessed display
*/
if ((info = extinfo->cur) && info->display == dpy)
return info;
/*
* look for display in list
*/
_XLockMutex(_Xglobal_lock);
for (info = extinfo->head; info; info = info->next) {
if (info->display == dpy) {
extinfo->cur = info; /* cache most recently used */
_XUnlockMutex(_Xglobal_lock);
return info;
}
}
_XUnlockMutex(_Xglobal_lock);
return NULL;
}
XFixesExtDisplayInfo *
XFixesFindDisplay (Display *dpy)
{
XFixesExtDisplayInfo *info;
info = XFixesExtFindDisplay (&XFixesExtensionInfo, dpy);
if (!info)
info = XFixesExtAddDisplay (&XFixesExtensionInfo, dpy,
XFixesExtensionName);
return info;
}
static int
XFixesCloseDisplay (Display *dpy, XExtCodes *codes)
{
return XFixesExtRemoveDisplay (&XFixesExtensionInfo, dpy);
}
static Bool
XFixesWireToEvent(Display *dpy, XEvent *event, xEvent *wire)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay(dpy);
XFixesCheckExtension(dpy, info, False);
switch ((wire->u.u.type & 0x7F) - info->codes->first_event)
{
case XFixesSelectionNotify: {
XFixesSelectionNotifyEvent *aevent;
xXFixesSelectionNotifyEvent *awire;
awire = (xXFixesSelectionNotifyEvent *) wire;
aevent = (XFixesSelectionNotifyEvent *) event;
aevent->type = awire->type & 0x7F;
aevent->subtype = awire->subtype;
aevent->serial = _XSetLastRequestRead(dpy,
(xGenericReply *) wire);
aevent->send_event = (awire->type & 0x80) != 0;
aevent->display = dpy;
aevent->window = awire->window;
aevent->owner = awire->owner;
aevent->selection = awire->selection;
aevent->timestamp = awire->timestamp;
aevent->selection_timestamp = awire->selectionTimestamp;
return True;
}
case XFixesCursorNotify: {
XFixesCursorNotifyEvent *aevent;
xXFixesCursorNotifyEvent *awire;
awire = (xXFixesCursorNotifyEvent *) wire;
aevent = (XFixesCursorNotifyEvent *) event;
aevent->type = awire->type & 0x7F;
aevent->subtype = awire->subtype;
aevent->serial = _XSetLastRequestRead(dpy,
(xGenericReply *) wire);
aevent->send_event = (awire->type & 0x80) != 0;
aevent->display = dpy;
aevent->window = awire->window;
aevent->cursor_serial = awire->cursorSerial;
aevent->timestamp = awire->timestamp;
aevent->cursor_name = awire->name;
return True;
}
}
return False;
}
static Status
XFixesEventToWire(Display *dpy, XEvent *event, xEvent *wire)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay(dpy);
XFixesCheckExtension(dpy, info, False);
switch ((event->type & 0x7F) - info->codes->first_event)
{
case XFixesSelectionNotify: {
XFixesSelectionNotifyEvent *aevent;
xXFixesSelectionNotifyEvent *awire;
awire = (xXFixesSelectionNotifyEvent *) wire;
aevent = (XFixesSelectionNotifyEvent *) event;
awire->type = aevent->type | (aevent->send_event ? 0x80 : 0);
awire->subtype = aevent->subtype;
awire->window = aevent->window;
awire->owner = aevent->owner;
awire->selection = aevent->selection;
awire->timestamp = aevent->timestamp;
awire->selectionTimestamp = aevent->selection_timestamp;
return True;
}
case XFixesCursorNotify: {
XFixesCursorNotifyEvent *aevent;
xXFixesCursorNotifyEvent *awire;
awire = (xXFixesCursorNotifyEvent *) wire;
aevent = (XFixesCursorNotifyEvent *) event;
awire->type = aevent->type | (aevent->send_event ? 0x80 : 0);
awire->subtype = aevent->subtype;
awire->window = aevent->window;
awire->timestamp = aevent->timestamp;
awire->cursorSerial = aevent->cursor_serial;
awire->name = aevent->cursor_name;
}
}
return False;
}
Bool
XFixesQueryExtension (Display *dpy, int *event_basep, int *error_basep)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
if (XFixesHasExtension(info))
{
*event_basep = info->codes->first_event;
*error_basep = info->codes->first_error;
return True;
}
else
return False;
}
Status
XFixesQueryVersion (Display *dpy,
int *major_versionp,
int *minor_versionp)
{
XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy);
XFixesCheckExtension (dpy, info, 0);
*major_versionp = info->major_version;
*minor_versionp = info->minor_version;
UnlockDisplay (dpy);
SyncHandle ();
return 1;
}
int
XFixesVersion (void)
{
return XFIXES_VERSION;
}
/*
* $XFree86: xc/lib/Xfixes/Xfixes.h,v 1.1 2002/11/30 06:21:45 keithp Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _XFIXES_H_
#define _XFIXES_H_
#include <nx-X11/extensions/xfixeswire.h>
#include <nx-X11/Xfuncproto.h>
/*
* This revision number also appears in configure.ac, they have
* to be manually synchronized
*/
#define XFIXES_REVISION 1
#define XFIXES_VERSION ((XFIXES_MAJOR * 10000) + (XFIXES_MINOR * 100) + (XFIXES_REVISION))
typedef struct {
int type; /* event base */
unsigned long serial;
Bool send_event;
Display *display;
Window window;
int subtype;
Window owner;
Atom selection;
Time timestamp;
Time selection_timestamp;
} XFixesSelectionNotifyEvent;
typedef struct {
int type; /* event base */
unsigned long serial;
Bool send_event;
Display *display;
Window window;
int subtype;
unsigned long cursor_serial;
Time timestamp;
Atom cursor_name;
} XFixesCursorNotifyEvent;
typedef struct {
short x, y;
unsigned short width, height;
unsigned short xhot, yhot;
unsigned long cursor_serial;
unsigned long *pixels;
#if XFIXES_MAJOR >= 2
Atom atom; /* Version >= 2 only */
const char *name; /* Version >= 2 only */
#endif
} XFixesCursorImage;
#if XFIXES_MAJOR >= 2
/* Version 2 types */
typedef XID XserverRegion;
typedef struct {
short x, y;
unsigned short width, height;
unsigned short xhot, yhot;
unsigned long cursor_serial;
unsigned long *pixels;
Atom atom;
const char *name;
} XFixesCursorImageAndName;
#endif
_XFUNCPROTOBEGIN
Bool XFixesQueryExtension (Display *dpy, int *event_basep, int *error_basep);
Status XFixesQueryVersion (Display *dpy,
int *major_versionp,
int *minor_versionp);
int XFixesVersion (void);
void
XFixesChangeSaveSet (Display *dpy,
Window win,
int mode,
int target,
int map);
void
XFixesSelectSelectionInput (Display *dpy,
Window win,
Atom selection,
unsigned long eventMask);
void
XFixesSelectCursorInput (Display *dpy,
Window win,
unsigned long eventMask);
XFixesCursorImage *
XFixesGetCursorImage (Display *dpy);
#if XFIXES_MAJOR >= 2
/* Version 2 functions */
XserverRegion
XFixesCreateRegion (Display *dpy, XRectangle *rectangles, int nrectangles);
XserverRegion
XFixesCreateRegionFromBitmap (Display *dpy, Pixmap bitmap);
XserverRegion
XFixesCreateRegionFromWindow (Display *dpy, Window window, int kind);
XserverRegion
XFixesCreateRegionFromGC (Display *dpy, GC gc);
XserverRegion
XFixesCreateRegionFromPicture (Display *dpy, XID picture);
void
XFixesDestroyRegion (Display *dpy, XserverRegion region);
void
XFixesSetRegion (Display *dpy, XserverRegion region,
XRectangle *rectangles, int nrectangles);
void
XFixesCopyRegion (Display *dpy, XserverRegion dst, XserverRegion src);
void
XFixesUnionRegion (Display *dpy, XserverRegion dst,
XserverRegion src1, XserverRegion src2);
void
XFixesIntersectRegion (Display *dpy, XserverRegion dst,
XserverRegion src1, XserverRegion src2);
void
XFixesSubtractRegion (Display *dpy, XserverRegion dst,
XserverRegion src1, XserverRegion src2);
void
XFixesInvertRegion (Display *dpy, XserverRegion dst,
XRectangle *rect, XserverRegion src);
void
XFixesTranslateRegion (Display *dpy, XserverRegion region, int dx, int dy);
void
XFixesRegionExtents (Display *dpy, XserverRegion dst, XserverRegion src);
XRectangle *
XFixesFetchRegion (Display *dpy, XserverRegion region, int *nrectanglesRet);
XRectangle *
XFixesFetchRegionAndBounds (Display *dpy, XserverRegion region,
int *nrectanglesRet,
XRectangle *bounds);
void
XFixesSetGCClipRegion (Display *dpy, GC gc,
int clip_x_origin, int clip_y_origin,
XserverRegion region);
void
XFixesSetWindowShapeRegion (Display *dpy, Window win, int shape_kind,
int x_off, int y_off, XserverRegion region);
void
XFixesSetPictureClipRegion (Display *dpy, XID picture,
int clip_x_origin, int clip_y_origin,
XserverRegion region);
void
XFixesSetCursorName (Display *dpy, Cursor cursor, const char *name);
const char *
XFixesGetCursorName (Display *dpy, Cursor cursor, Atom *atom);
void
XFixesChangeCursor (Display *dpy, Cursor source, Cursor destination);
void
XFixesChangeCursorByName (Display *dpy, Cursor source, const char *name);
#endif /* XFIXES_MAJOR >= 2 */
#if XFIXES_MAJOR >= 3
void
XFixesExpandRegion (Display *dpy, XserverRegion dst, XserverRegion src,
unsigned left, unsigned right,
unsigned top, unsigned bottom);
#endif /* XFIXES_MAJOR >= 3 */
_XFUNCPROTOEND
#endif /* _XFIXES_H_ */
.\"
.\" $XFree86: xc/lib/Xfixes/Xfixes.man,v 1.1 2002/11/30 06:21:45 keithp Exp $
.\"
.\" Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
.\"
.\" Permission to use, copy, modify, distribute, and sell this software and its
.\" documentation for any purpose is hereby granted without fee, provided that
.\" the above copyright notice appear in all copies and that both that
.\" copyright notice and this permission notice appear in supporting
.\" documentation, and that the name of Keith Packard not be used in
.\" advertising or publicity pertaining to distribution of the software without
.\" specific, written prior permission. Keith Packard makes no
.\" representations about the suitability of this software for any purpose. It
.\" is provided "as is" without express or implied warranty.
.\"
.\" KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
.\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
.\" EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
.\" CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
.\" DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
.\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
.de TQ
.br
.ns
.TP \\$1
..
.TH XFIXES 3 "Version 1.0" "XFree86"
.SH NAME
XFixes \- Augmented versions of core protocol requests
.SH SYNTAX
\&#include <nx-X11/extensions/Xfixes.h>
.nf
.sp
Bool XFixesQueryExtension \^(\^Display *\fIdpy\fP,
int *\fIevent_basep\fP, int *\fIerror_basep\fP\^);
.sp
Status XFixesQueryVersion \^(\^Display *\fIdpy\fP,
int *\fImajor_versionp\fP,
int *\fIminor_versionp\fP\^);
.sp
void XFixesChangeSaveSet \^(\^Display *dpy,
Window \fIwindow\fP,
int \fImode\fP,
int \fItarget\fP,
int \fImap\fP);
.fi
.SH ARGUMENTS
.IP \fIdisplay\fP 1i
Specifies the connection to the X server.
.IP \fIwindow\fP 1i
Specifies which window.
.IP \fImode\fP 1i
Specifies the save set operation (SetModeInsert/SetModeDelete).
.IP \fItarget\fP 1i
Specifies the target when executing the save set
(SaveSetNearest/SaveSetRoot). In SaveSetNearest mode, the save set member
window will be reparented to the nearest window not owned by the save set
client. In SaveSetRoot mode, the save set member window will be reparented
to the root window.
.IP \fImap\fP 1i
Specifies the map mode (SaveSetMap/SaveSetUnmap) which selects whether the
save setmember window will be mapped or unmapped during save set processing.
.SH DESCRIPTION
.B Xfixes
is a simple library designed to interface the X Fixes
Extension. This extension provides application with work arounds for
various limitations in the core protocol.
.SH RESTRICTIONS
.B Xfixes
will remain upward compatible after the current 1.0 release.
.SH AUTHORS
Keith Packard, member of the XFree86 Project, Inc. and
HP, Owen Taylor, member of the Gnome Foundation and Redhat, Inc.
/*
* $XFree86: xc/lib/Xfixes/Xfixesint.h,v 1.1 2002/11/30 06:21:45 keithp Exp $
*
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _XFIXESINT_H_
#define _XFIXESINT_H_
#define NEED_EVENTS
#define NEED_REPLIES
#include <stdio.h>
#include <nx-X11/Xlib.h>
#include <nx-X11/Xlibint.h>
#include <nx-X11/Xutil.h>
#include "Xfixes.h"
#include <nx-X11/extensions/xfixesproto.h>
extern char XFixesExtensionName[];
typedef struct _XFixesExtDisplayInfo {
struct _XFixesExtDisplayInfo *next; /* keep a linked list */
Display *display; /* which display this is */
XExtCodes *codes; /* the extension protocol codes */
int major_version; /* -1 means we don't know */
int minor_version; /* -1 means we don't know */
} XFixesExtDisplayInfo;
/* replaces XExtensionInfo */
typedef struct _XFixesExtInfo {
XFixesExtDisplayInfo *head; /* start of the list */
XFixesExtDisplayInfo *cur; /* most recently used */
int ndisplays; /* number of displays */
} XFixesExtInfo;
extern XFixesExtInfo XFixesExtensionInfo;
extern char XFixesExtensionName[];
XFixesExtDisplayInfo *
XFixesFindDisplay (Display *dpy);
#define XFixesHasExtension(i) ((i) && ((i)->codes))
#define XFixesCheckExtension(dpy,i,val) \
if (!XFixesHasExtension(i)) { return val; }
#define XFixesSimpleCheckExtension(dpy,i) \
if (!XFixesHasExtension(i)) { return; }
#endif /* _XFIXESINT_H_ */
...@@ -402,17 +402,17 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTSYSLIBS):: $(NXAGENTDIRS) ...@@ -402,17 +402,17 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTSYSLIBS):: $(NXAGENTDIRS)
#if defined(SunArchitecture) #if defined(SunArchitecture)
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \
-lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lNX_Xrender -lNX_Xfixes -lXfont \ -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lNX_Xrender -lXfixes -lXfont \
-L../../../nx-X11/exports/lib -lNX_Xtst -lXrandr -lXcomposite -lXdmcp \ -L../../../nx-X11/exports/lib -lNX_Xtst -lXrandr -lXcomposite -lXdmcp \
`pkg-config --libs libxml-2.0` `pkg-config --libs libxml-2.0`
#elif defined(cygwinArchitecture) #elif defined(cygwinArchitecture)
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \ NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \
-lXcomp -lXcompext -lNX_Xrender -lX11 -lNX_Xext -lXcomposite -lNX_Xfixes -lXfont \ -lXcomp -lXcompext -lNX_Xrender -lX11 -lNX_Xext -lXcomposite -lXfixes -lXfont \
-L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lNX_Xtst -lXdmcp \ -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lNX_Xtst -lXdmcp \
`pkg-config --libs libxml-2.0` `pkg-config --libs libxml-2.0`
#else #else
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \
-lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lNX_Xfixes -lXfont \ -lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lXfixes -lXfont \
-L../../../nx-X11/exports/lib -lNX_Xtst -lXrandr -lXcomposite -lNX_Xinerama -lXdmcp \ -L../../../nx-X11/exports/lib -lNX_Xtst -lXrandr -lXcomposite -lNX_Xinerama -lXdmcp \
`pkg-config --libs libxml-2.0` `pkg-config --libs libxml-2.0`
#endif #endif
......
...@@ -37,6 +37,7 @@ BuildRequires: pkgconfig(xdmcp) ...@@ -37,6 +37,7 @@ BuildRequires: pkgconfig(xdmcp)
BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xdamage)
BuildRequires: pkgconfig(xcomposite) BuildRequires: pkgconfig(xcomposite)
BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(xfixes)
%else %else
BuildRequires: libexpat-devel BuildRequires: libexpat-devel
BuildRequires: libpng-devel BuildRequires: libpng-devel
...@@ -49,6 +50,7 @@ BuildRequires: xorg-x11-libXdmcp-devel ...@@ -49,6 +50,7 @@ BuildRequires: xorg-x11-libXdmcp-devel
BuildRequires: xorg-x11-libXdamage-devel BuildRequires: xorg-x11-libXdamage-devel
BuildRequires: xorg-x11-libXcomposite-devel BuildRequires: xorg-x11-libXcomposite-devel
BuildRequires: xorg-x11-libXrandr-devel BuildRequires: xorg-x11-libXrandr-devel
BuildRequires: xorg-x11-libXfixes-devel
%endif %endif
BuildRequires: xorg-x11-util-devel BuildRequires: xorg-x11-util-devel
%endif %endif
...@@ -61,6 +63,7 @@ BuildRequires: libXfont-devel ...@@ -61,6 +63,7 @@ BuildRequires: libXfont-devel
BuildRequires: libXdmcp-devel BuildRequires: libXdmcp-devel
BuildRequires: libXcomposite-devel BuildRequires: libXcomposite-devel
BuildRequires: libXrandr-devel BuildRequires: libXrandr-devel
BuildRequires: libXfixes-devel
%endif %endif
# For imake # For imake
...@@ -238,40 +241,6 @@ The NX_Xext library contains a handful of X11 extensions: ...@@ -238,40 +241,6 @@ The NX_Xext library contains a handful of X11 extensions:
- X11 Double-Buffering, Multi-Buffering, and Stereo extension (Xmbuf) - X11 Double-Buffering, Multi-Buffering, and Stereo extension (Xmbuf)
%package -n libNX_Xfixes-devel
Group: Development/Libraries
Summary: Development files for the NX Xfixes extension library
Requires: libNX_Xfixes3%{?_isa} = %{version}-%{release}
Requires: libNX_X11-devel%{?_isa} = %{version}-%{release}
Requires: nx-proto-devel%{?_isa} = %{version}-%{release}
%description -n libNX_Xfixes-devel
NX is a software suite which implements very efficient compression of
the X11 protocol. This increases performance when using X
applications over a network, especially a slow one.
The nx-X11 Fixes extension provides applications with work-arounds for
various limitations in the core protocol.
This package contains all necessary include files and libraries
needed to develop applications that require these.
%package -n libNX_Xfixes3
Group: System Environment/Libraries
Summary: NX miscellaneous "fixes" extension library
Requires: %{name}%{?_isa} >= 3.5.0.29
Obsoletes: libNX_Xfixes
%description -n libNX_Xfixes3
NX is a software suite which implements very efficient compression of
the X11 protocol. This increases performance when using X
applications over a network, especially a slow one.
The nx_X11 Fixes extension provides applications with work-arounds for
various limitations in the core protocol.
%package -n libNX_Xinerama1 %package -n libNX_Xinerama1
Group: System Environment/Libraries Group: System Environment/Libraries
Summary: Xinerama extension to the NX Protocol Summary: Xinerama extension to the NX Protocol
...@@ -437,7 +406,6 @@ Summary: Include files and libraries for NX development ...@@ -437,7 +406,6 @@ Summary: Include files and libraries for NX development
Requires: libNX_X11-devel%{?_isa} = %{version}-%{release} Requires: libNX_X11-devel%{?_isa} = %{version}-%{release}
Requires: libNX_Xau-devel%{?_isa} = %{version}-%{release} Requires: libNX_Xau-devel%{?_isa} = %{version}-%{release}
Requires: libNX_Xext-devel%{?_isa} = %{version}-%{release} Requires: libNX_Xext-devel%{?_isa} = %{version}-%{release}
Requires: libNX_Xfixes-devel%{?_isa} = %{version}-%{release}
Requires: libNX_Xrender-devel%{?_isa} = %{version}-%{release} Requires: libNX_Xrender-devel%{?_isa} = %{version}-%{release}
Requires: nx-proto-devel%{?_isa} = %{version}-%{release} Requires: nx-proto-devel%{?_isa} = %{version}-%{release}
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
...@@ -619,7 +587,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X ...@@ -619,7 +587,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%post -n libNX_X11-6 -p /sbin/ldconfig %post -n libNX_X11-6 -p /sbin/ldconfig
%post -n libNX_Xau6 -p /sbin/ldconfig %post -n libNX_Xau6 -p /sbin/ldconfig
%post -n libNX_Xext6 -p /sbin/ldconfig %post -n libNX_Xext6 -p /sbin/ldconfig
%post -n libNX_Xfixes3 -p /sbin/ldconfig
%post -n libNX_Xinerama1 -p /sbin/ldconfig %post -n libNX_Xinerama1 -p /sbin/ldconfig
%post -n libNX_Xrender1 -p /sbin/ldconfig %post -n libNX_Xrender1 -p /sbin/ldconfig
%post -n libNX_Xtst6 -p /sbin/ldconfig %post -n libNX_Xtst6 -p /sbin/ldconfig
...@@ -630,7 +597,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X ...@@ -630,7 +597,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%postun -n libNX_X11-6 -p /sbin/ldconfig %postun -n libNX_X11-6 -p /sbin/ldconfig
%postun -n libNX_Xau6 -p /sbin/ldconfig %postun -n libNX_Xau6 -p /sbin/ldconfig
%postun -n libNX_Xext6 -p /sbin/ldconfig %postun -n libNX_Xext6 -p /sbin/ldconfig
%postun -n libNX_Xfixes3 -p /sbin/ldconfig
%postun -n libNX_Xinerama1 -p /sbin/ldconfig %postun -n libNX_Xinerama1 -p /sbin/ldconfig
%postun -n libNX_Xrender1 -p /sbin/ldconfig %postun -n libNX_Xrender1 -p /sbin/ldconfig
%postun -n libNX_Xtst6 -p /sbin/ldconfig %postun -n libNX_Xtst6 -p /sbin/ldconfig
...@@ -712,15 +678,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X ...@@ -712,15 +678,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libNX_Xext.so.6* %{_libdir}/libNX_Xext.so.6*
%files -n libNX_Xfixes-devel
%defattr(-,root,root)
%{_libdir}/libNX_Xfixes.so
%{_includedir}/nx-X11/extensions/Xfixes.h
%files -n libNX_Xfixes3
%defattr(-,root,root)
%{_libdir}/libNX_Xfixes.so.3*
%files -n libNX_Xinerama1 %files -n libNX_Xinerama1
%defattr(-,root,root) %defattr(-,root,root)
%{_libdir}/libNX_Xinerama.so.1* %{_libdir}/libNX_Xinerama.so.1*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment