Commit 2d776b14 authored by Mike Gabriel's avatar Mike Gabriel

library clean-up: Don't build libNX_Xinerama anymore. Use system's libXinerama…

library clean-up: Don't build libNX_Xinerama anymore. Use system's libXinerama shared library. (Fixes ArcticaProject/nx-libs#49). This commit goes along with a patch from Ulrich Sibiller who managed to move the Xinerama awareness for NX sessions into the Xserver code. This makes Xinerama support for NX in libNX_Xinerama.so obsolete. Fixes ArcticaProject/nx-libs#49
parent e4763fb4
......@@ -154,14 +154,6 @@ install-full:
"$$(string_rep "$$dirname" nx-X11/.build-exports/include "$(DESTDIR)$(INCLUDEDIR)/")"/ || true; \
done; \
# Provide means for Xinerama support in NX/X2Go sessions. This
# This also requires three post-install symlinks created by libnx-xinerama1:
# $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libNX_X11.so.6 -> /usr/<libdir>/libX11.so.6
# $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libNX_Xext.so.6 -> /usr/<libdir>/libXext.so.6
# $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libXinerama.so.1 -> /usr/<libdir>/libNX_Xinerama.so.1
# Only create the owned directory here for nx-x11-common.
$(INSTALL_DIR) $(DESTDIR)$(NXLIBDIR)/X11/Xinerama
$(INSTALL_DIR) $(DESTDIR)/$(ETCDIR_NX)
$(INSTALL_DIR) $(DESTDIR)/$(ETCDIR_X2GO)
$(INSTALL_FILE) etc/keystrokes.cfg $(DESTDIR)/$(ETCDIR_NX)/
......
......@@ -22,12 +22,11 @@ Build-Depends:
libxrandr-dev,
libxfixes-dev,
libxtst-dev,
libxinerama-dev,
autoconf,
pkg-config,
x11proto-core-dev,
expat,
Build-Conflicts:
x11proto-xinerama-dev,
Standards-Version: 3.9.6
Homepage: http://code.x2go.org/gitweb?p=nx-libs.git;a=summary
Vcs-Git: git://code.x2go.org/nx-libs.git
......@@ -548,21 +547,17 @@ Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
${shlibs:Depends},
${misc:Depends},
Breaks: nxlibs (<= 3.5.1),
libnx-x11 (<< 2:3.5.0.29-0x2go2~),
Description: nx-X11 Xinerama extension library
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.
.
libNX_Xinerama provides an X Window System client interface to the XINERAMA
extension to the X protocol.
This package removes the obsoleted libNX_Xinerama.so.1 library.
Xinerama support in NX has been moved into nxagent whereas X-Clients
can now use the libXinerama library shipped with X.Org.
.
The Xinerama (also known as panoramiX) extension allows for multiple screens
attached to a single display to be treated as belonging together, and to give
desktop applications a better idea of the monitor layout.
This package can be safely removed.
Package: libnx-xinerama-dev
Provides: libnx-xinerama1-dev
......@@ -570,24 +565,16 @@ Section: libdevel
Architecture: any
Multi-Arch: same
Depends:
libnx-xinerama1 (= ${binary:Version}),
nx-x11proto-xinerama-dev (= ${binary:Version}),
${misc:Depends},
Breaks: nxlibs (<= 3.5.1),
libnx-x11-dev (<< 2:3.5.0.29-0x2go2~),
Description: nx-X11 Xinerama extension library (development headers)
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.
.
libNX_Xinerama provides an X Window System client interface to the XINERAMA
extension to the X protocol.
This package removes the obsoleted headers for the libNX_Xinerama.so.1
library.
.
The Xinerama (also known as panoramiX) extension allows for multiple screens
attached to a single display to be treated as belonging together, and to give
desktop applications a better idea of the monitor layout.
.
This package contains the development headers for this library.
This package can be safely removed.
Package: nx-x11proto-xinerama-dev
Section: libdevel
......@@ -595,16 +582,15 @@ Architecture: any
Multi-Arch: same
Depends:
${misc:Depends},
Breaks: nxlibs (<= 3.5.1),
libnx-x11-dev (<< 2:3.5.0.29-0x2go2~),
Description: nx-X11 Xinerama extension wire protocol
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.
.
This package provides development headers describing the wire protocol
for the XINERAMA extension, used to use and manage a multiple-screen
display.
This package removes the obsoleted headers for the libNX_Xinerama.so.1
library.
.
This package can be safely removed.
Package: libnx-xinerama1-dbg
Architecture: any
......@@ -624,12 +610,10 @@ Description: nx-X11 Xinerama extension library (debug package)
libNX_Xinerama provides an X Window System client interface to the XINERAMA
extension to the X protocol.
.
The Xinerama (also known as panoramiX) extension allows for multiple
screens attached to a single display to be treated as belonging
together, and to give desktop applications a better idea of the monitor
layout.
This package removes the obsoleted debug symbols for the libNX_Xinerama.so.1
library.
.
This package contains debug symbols for this library.
This package can be safely removed.
Package: libnx-xpm4
Architecture: any
......
usr/lib/*/libNX_Xinerama.so
usr/include/*/nx-X11/extensions/Xinerama.h
usr/include/*/nx-X11/extensions/panoramiXext.h
usr/lib/*/libNX_Xinerama.so.*
libNX_Xinerama.so.1 libnx-xinerama1 #MINVER#
XPanoramiXAllocInfo@Base 3.5.0.29
XPanoramiXGetScreenCount@Base 3.5.0.29
XPanoramiXGetScreenSize@Base 3.5.0.29
XPanoramiXGetState@Base 3.5.0.29
XPanoramiXQueryExtension@Base 3.5.0.29
XPanoramiXQueryVersion@Base 3.5.0.29
XineramaIsActive@Base 3.5.0.29
XineramaQueryExtension@Base 3.5.0.29
XineramaQueryScreens@Base 3.5.0.29
XineramaQueryVersion@Base 3.5.0.29
usr/share/nx/SecurityPolicy
usr/lib/nx/X11/
usr/include/*/nx-X11/extensions/panoramiXproto.h
\ No newline at end of file
#!/bin/sh
# postinst script for nxagent
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure)
### FIXME: this is a work-around while we have not implemented
### multiarch support into the Debian source package of
### nx-libs.
libdir=/usr/lib/#DEB_BUILD_MULTIARCH#
mkdir -p /usr/lib/nx/X11/Xinerama/
# Already existent files are not removed.
# Users will need to explicitly remove them and (re-) configure this package.
if test -e $libdir/libX11.so.6; then
ln -sf $libdir/libX11.so.6 /usr/lib/nx/X11/Xinerama/libNX_X11.so.6
fi
if test -e $libdir/libXext.so.6; then
ln -sf $libdir/libXext.so.6 /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6
fi
if test -e $libdir/libNX_Xinerama.so.1; then
ln -sf $libdir/libNX_Xinerama.so.1 /usr/lib/nx/X11/Xinerama/libXinerama.so.1
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
#!/bin/sh
# prerm script for nxagent
#
# see: dh_installdeb(1)
# summary of how this script can be called:
# * <prerm> `remove'
# * <old-prerm> `upgrade' <new-version>
# * <new-prerm> `failed-upgrade' <old-version>
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
# * <deconfigured's-prerm> `deconfigure' `in-favour'
# <package-being-installed> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
set -e
case "$1" in
remove)
if test -d /usr/lib/nx/X11/Xinerama; then
if test -e /usr/lib/nx/X11/Xinerama/libNX_X11.so.6; then
rm -f /usr/lib/nx/X11/Xinerama/libNX_X11.so.6
fi
if test -e /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6; then
rm -f /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6
fi
if test -e /usr/lib/nx/X11/Xinerama/libXinerama.so.1; then
rm -f /usr/lib/nx/X11/Xinerama/libXinerama.so.1
fi
rmdir --ignore-fail-on-non-empty /usr/lib/nx/X11/Xinerama
fi
;;
deconfigure|upgrade|failed-upgrade)
:
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
......@@ -20,7 +20,6 @@ override_dh_auto_clean:
override_dh_clean:
rm -f nx*/configure
. ./replace.sh; set -x; ls debian/*.install.in | while read file; do rm -f $$(string_rep $$file .install.in .install); done
rm -f debian/nxagent.postinst
rm -fR .preserve/
dh_clean
......@@ -72,16 +71,12 @@ override_dh_auto_install:
override_dh_auto_build:
# let's prep the nxagent.postinst script with the value of the build systems's DEB_BUILD_MULTIARCH variable
sed debian/nxagent.postinst.in -e 's/#DEB_BUILD_MULTIARCH#/$(DEB_BUILD_MULTIARCH)/' > debian/nxagent.postinst
LOCAL_LDFLAGS="$(LDFLAGS)" SHLIBGLOBALSFLAGS="$(LDFLAGS)" SHLIBDIR="$(LIBDIR)" PREFIX=/usr dh_auto_build --parallel
override_dh_strip:
dh_strip -plibnx-x11-6 --dbg-package=libnx-x11-6-dbg
dh_strip -plibnx-xau6 --dbg-package=libnx-xau6-dbg
dh_strip -plibnx-xext6 --dbg-package=libnx-xext6-dbg
dh_strip -plibnx-xinerama1 --dbg-package=libnx-xinerama1-dbg
dh_strip -plibnx-xrender1 --dbg-package=libnx-xrender1-dbg
dh_strip -plibxcomp3 --dbg-package=libxcomp3-dbg
dh_strip -plibxcompshad3 --dbg-package=libxcompshad3-dbg
......
......@@ -226,9 +226,6 @@ XORGRELSTRING = XorgManVersionString
#ifndef BuildXinerama
#define BuildXinerama NO
#endif
#ifndef BuildXineramaLibrary
#define BuildXineramaLibrary (BuildXinerama)
#endif
#ifndef BuildXCSecurity
#define BuildXCSecurity YES
#endif
......@@ -1321,30 +1318,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
XLIBONLY = $(XONLYLIB)
LINTXONLYLIB = $(LINTXONLY)
#if BuildXineramaLibrary
#ifndef SharedLibXinerama
#define SharedLibXinerama HasSharedLibraries
#endif
#ifndef NormalLibXinerama
#define NormalLibXinerama (!SharedLibXinerama || ForceNormalLib)
#endif
#ifndef DebugLibXinerama
#define DebugLibXinerama NO
#endif
#ifndef ProfileLibXinerama
#define ProfileLibXinerama NO
#endif
#else
#undef SharedLibXinerama
#define SharedLibXinerama NO
#undef NormalLibXinerama
#define NormalLibXinerama NO
#undef DebugLibXinerama
#define DebugLibXinerama NO
#undef ProfileLibXinerama
#define ProfileLibXinerama NO
#endif
#if BuildRenderLibrary
#ifndef SharedLibXrender
#define SharedLibXrender HasSharedLibraries
......@@ -1395,16 +1368,6 @@ LINTEXTENSIONLIB = $(LINTEXTENSION)
XLIB = $(EXTENSIONLIB) $(XONLYLIB)
LINTXLIB = $(LINTXONLYLIB)
XINERAMALIBSRC = $(LIBSRC)/Xinerama
#if SharedLibXinerama
#ifndef SharedXineramaRev
#define SharedXineramaRev 1.0
#endif
SharedLibReferences(XINERAMA,NX_Xinerama,$(XINERAMALIBSRC),SOXINERAMAREV,SharedXineramaRev)
#else
ProjectUnsharedLibReferences(XINERAMA,NX_Xinerama,$(XINERAMALIBSRC),XBuildLibDir)
#endif
XRENDERLIBSRC = $(LIBSRC)/Xrender
#if SharedLibXrender
#ifndef SharedXrenderRev
......
......@@ -35,8 +35,8 @@ XVMCHEADERS = XvMC.h XvMClib.h XvMCproto.h vldXvMC.h
#if BuildFontCache
FONTCACHEHEADERS = fontcache.h fontcacheP.h fontcachstr.h
#endif
#if BuildXinerama || BuildXineramaLibrary
XINERAMAHEADERS = Xinerama.h panoramiXext.h panoramiXproto.h
#if BuildXinerama
XINERAMAHEADERS = panoramiXext.h panoramiXproto.h
#endif
#if BuildRandR
RANDRHEADERS = randr.h randrproto.h
......
......@@ -15,10 +15,6 @@ NULL =
XKBLIBDIR = xkbfile
#endif
#if BuildXineramaLibrary
XINERAMADIR=Xinerama
#endif
#if BuildRenderLibrary
RENDERLIBDIR = Xrender
#endif
......
XCOMM $XFree86: xc/lib/Xinerama/Imakefile,v 1.4 2002/10/16 00:37:31 dawes Exp $
#define DoNormalLib NormalLibXinerama
#define DoSharedLib SharedLibXinerama
#define DoDebugLib DebugLibXinerama
#define DoProfileLib ProfileLibXinerama
#define LibName NX_Xinerama
#define SoRev SOXINERAMAREV
#define LibHeaders NO
#include <Threads.tmpl>
#ifdef SharedXineramaReqs
REQUIREDLIBS = SharedXineramaReqs
#endif
#if Malloc0ReturnsNull
ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL
#endif
DEFINES = $(ALLOC_DEFINES)
SRCS = Xinerama.c
OBJS = Xinerama.o
LINTLIBS = $(LINTXLIB)
#define IncludeSharedObjectInNormalLib
#include <Library.tmpl>
DependTarget()
LIBRARY Xinerama
VERSION LIBRARY_VERSION
EXPORTS
XPanoramiXAllocInfo
XPanoramiXGetScreenCount
XPanoramiXGetScreenSize
XPanoramiXGetState
XPanoramiXQueryExtension
XPanoramiXQueryVersion
XineramaIsActive
XineramaQueryExtension
XineramaQueryScreens
XineramaQueryVersion
/* $XFree86$ */
/* $Xorg: XPanoramiX.c,v 1.4 2000/08/17 19:45:51 cpqbld Exp $ */
/*****************************************************************
Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of Digital Equipment Corporation
shall not be used in advertising or otherwise to promote the sale, use or other
dealings in this Software without prior written authorization from Digital
Equipment Corporation.
******************************************************************/
/* $XFree86: xc/lib/Xinerama/Xinerama.c,v 1.2 2001/07/23 17:20:28 dawes Exp $ */
#define NEED_EVENTS
#define NEED_REPLIES
#include <nx-X11/Xlibint.h>
#include <nx-X11/Xutil.h>
#include <nx-X11/extensions/Xext.h>
#include <nx-X11/extensions/extutil.h>
#include <nx-X11/extensions/panoramiXext.h>
#include <nx-X11/extensions/panoramiXproto.h>
#include <nx-X11/extensions/Xinerama.h>
#include <stdio.h>
static XExtensionInfo _panoramiX_ext_info_data;
static XExtensionInfo *panoramiX_ext_info = &_panoramiX_ext_info_data;
static /* const */ char *panoramiX_extension_name = PANORAMIX_PROTOCOL_NAME;
#define PanoramiXCheckExtension(dpy,i,val) \
XextCheckExtension (dpy, i, panoramiX_extension_name, val)
#define PanoramiXSimpleCheckExtension(dpy,i) \
XextSimpleCheckExtension (dpy, i, panoramiX_extension_name)
static int close_display();
static /* const */ XExtensionHooks panoramiX_extension_hooks = {
NULL, /* create_gc */
NULL, /* copy_gc */
NULL, /* flush_gc */
NULL, /* free_gc */
NULL, /* create_font */
NULL, /* free_font */
close_display, /* close_display */
NULL, /* wire_to_event */
NULL, /* event_to_wire */
NULL, /* error */
NULL, /* error_string */
};
static XEXT_GENERATE_FIND_DISPLAY (find_display, panoramiX_ext_info,
panoramiX_extension_name,
&panoramiX_extension_hooks,
0, NULL)
static XEXT_GENERATE_CLOSE_DISPLAY (close_display, panoramiX_ext_info)
/****************************************************************************
* *
* PanoramiX public interfaces *
* *
****************************************************************************/
Bool XPanoramiXQueryExtension (
Display *dpy,
int *event_basep,
int *error_basep
)
{
XExtDisplayInfo *info = find_display (dpy);
if (XextHasExtension(info)) {
*event_basep = info->codes->first_event;
*error_basep = info->codes->first_error;
return True;
} else {
return False;
}
}
Status XPanoramiXQueryVersion(
Display *dpy,
int *major_versionp,
int *minor_versionp
)
{
XExtDisplayInfo *info = find_display (dpy);
xPanoramiXQueryVersionReply rep;
register xPanoramiXQueryVersionReq *req;
PanoramiXCheckExtension (dpy, info, 0);
LockDisplay (dpy);
GetReq (PanoramiXQueryVersion, req);
req->reqType = info->codes->major_opcode;
req->panoramiXReqType = X_PanoramiXQueryVersion;
req->clientMajor = PANORAMIX_MAJOR_VERSION;
req->clientMinor = PANORAMIX_MINOR_VERSION;
if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
UnlockDisplay (dpy);
SyncHandle ();
return 0;
}
*major_versionp = rep.majorVersion;
*minor_versionp = rep.minorVersion;
UnlockDisplay (dpy);
SyncHandle ();
return 1;
}
XPanoramiXInfo *XPanoramiXAllocInfo(void)
{
return (XPanoramiXInfo *) Xmalloc (sizeof (XPanoramiXInfo));
}
Status XPanoramiXGetState (
Display *dpy,
Drawable drawable,
XPanoramiXInfo *panoramiX_info
)
{
XExtDisplayInfo *info = find_display (dpy);
xPanoramiXGetStateReply rep;
register xPanoramiXGetStateReq *req;
PanoramiXCheckExtension (dpy, info, 0);
LockDisplay (dpy);
GetReq (PanoramiXGetState, req);
req->reqType = info->codes->major_opcode;
req->panoramiXReqType = X_PanoramiXGetState;
req->window = drawable;
if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
UnlockDisplay (dpy);
SyncHandle ();
return 0;
}
UnlockDisplay (dpy);
SyncHandle ();
panoramiX_info->window = rep.window;
panoramiX_info->State = rep.state;
return 1;
}
Status XPanoramiXGetScreenCount (
Display *dpy,
Drawable drawable,
XPanoramiXInfo *panoramiX_info
)
{
XExtDisplayInfo *info = find_display (dpy);
xPanoramiXGetScreenCountReply rep;
register xPanoramiXGetScreenCountReq *req;
PanoramiXCheckExtension (dpy, info, 0);
LockDisplay (dpy);
GetReq (PanoramiXGetScreenCount, req);
req->reqType = info->codes->major_opcode;
req->panoramiXReqType = X_PanoramiXGetScreenCount;
req->window = drawable;
if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
UnlockDisplay (dpy);
SyncHandle ();
return 0;
}
UnlockDisplay (dpy);
SyncHandle ();
panoramiX_info->window = rep.window;
panoramiX_info->ScreenCount = rep.ScreenCount;
return 1;
}
Status XPanoramiXGetScreenSize (
Display *dpy,
Drawable drawable,
int screen_num,
XPanoramiXInfo *panoramiX_info
)
{
XExtDisplayInfo *info = find_display (dpy);
xPanoramiXGetScreenSizeReply rep;
register xPanoramiXGetScreenSizeReq *req;
PanoramiXCheckExtension (dpy, info, 0);
LockDisplay (dpy);
GetReq (PanoramiXGetScreenSize, req);
req->reqType = info->codes->major_opcode;
req->panoramiXReqType = X_PanoramiXGetScreenSize;
req->window = drawable;
req->screen = screen_num; /* need to define */
if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
UnlockDisplay (dpy);
SyncHandle ();
return 0;
}
UnlockDisplay (dpy);
SyncHandle ();
panoramiX_info->window = rep.window;
panoramiX_info->screen = rep.screen;
panoramiX_info->width = rep.width;
panoramiX_info->height = rep.height;
return 1;
}
/*******************************************************************\
Alternate interface to make up for shortcomings in the original,
namely, the omission of the screen origin. The new interface is
in the "Xinerama" namespace instead of "PanoramiX".
\*******************************************************************/
Bool XineramaQueryExtension (
Display *dpy,
int *event_base,
int *error_base
)
{
return XPanoramiXQueryExtension(dpy, event_base, error_base);
}
Status XineramaQueryVersion(
Display *dpy,
int *major,
int *minor
)
{
return XPanoramiXQueryVersion(dpy, major, minor);
}
Bool XineramaIsActive(Display *dpy)
{
xXineramaIsActiveReply rep;
xXineramaIsActiveReq *req;
XExtDisplayInfo *info = find_display (dpy);
FILE* fptr;
if((fptr=fopen(getenv("NX_XINERAMA_CONF"),"r"))!=NULL) {
fclose (fptr);
return True;
}
else {
return False;
}
if(!XextHasExtension(info))
return False; /* server doesn't even have the extension */
LockDisplay (dpy);
GetReq (XineramaIsActive, req);
req->reqType = info->codes->major_opcode;
req->panoramiXReqType = X_XineramaIsActive;
if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
UnlockDisplay (dpy);
SyncHandle ();
return False;
}
UnlockDisplay (dpy);
SyncHandle ();
return rep.state;
}
XineramaScreenInfo *
XineramaQueryScreens(
Display *dpy,
int *number
)
{
XExtDisplayInfo *info = find_display (dpy);
xXineramaQueryScreensReply rep;
xXineramaQueryScreensReq *req;
XineramaScreenInfo *scrnInfo = NULL;
int i;
int x,y,w,h;
FILE* fptr;
if((fptr=fopen(getenv("NX_XINERAMA_CONF"),"r"))==NULL) {
PanoramiXCheckExtension (dpy, info, 0);
LockDisplay (dpy);
GetReq (XineramaQueryScreens, req);
req->reqType = info->codes->major_opcode;
req->panoramiXReqType = X_XineramaQueryScreens;
if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) {
UnlockDisplay (dpy);
SyncHandle ();
return NULL;
}
if(rep.number) {
if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * rep.number))) {
xXineramaScreenInfo scratch;
int i;
for(i = 0; i < rep.number; i++) {
_XRead(dpy, (char*)(&scratch), sz_XineramaScreenInfo);
scrnInfo[i].screen_number = i;
scrnInfo[i].x_org = scratch.x_org;
scrnInfo[i].y_org = scratch.y_org;
scrnInfo[i].width = scratch.width;
scrnInfo[i].height = scratch.height;
}
*number = rep.number;
} else {
_XEatData(dpy, rep.length << 2);
}
}
UnlockDisplay (dpy);
SyncHandle ();
} else {
i=0;
while(!feof(fptr)) {
w=h=0;
fscanf(fptr,"%d %d %d %d",&x,&y,&w,&h);
if(w&&h)
i++;
}
rewind(fptr);
*number=i;
if((scrnInfo = Xmalloc(sizeof(XineramaScreenInfo) * i))) {
i=0;
while(!feof(fptr)){
w=h=0;
fscanf(fptr,"%d %d %d %d",&x,&y,&w,&h);
if(w&&h){
scrnInfo[i].screen_number=i;
scrnInfo[i].x_org=x;
scrnInfo[i].y_org=y;
scrnInfo[i].width=w;
scrnInfo[i].height=h;
i++;
}
}
}
fclose(fptr);
}
return scrnInfo;
}
......@@ -413,7 +413,7 @@ NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \
#else
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \
-lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lXfixes -lXfont \
-L../../../nx-X11/exports/lib -lXtst -lXrandr -lXcomposite -lNX_Xinerama -lXdmcp \
-L../../../nx-X11/exports/lib -lXtst -lXrandr -lXcomposite -lXinerama -lXdmcp \
`pkg-config --libs libxml-2.0`
#endif
......
......@@ -79,6 +79,10 @@ is" without express or implied warranty.
#include "X11/include/Xrandr_nxagent.h"
#include <nx-X11/Xlib.h>
#include "X11/include/Xinerama_nxagent.h"
#define GC XlibGC
#define Font XlibFont
#define KeySym XlibKeySym
......
......@@ -39,6 +39,7 @@ BuildRequires: pkgconfig(xcomposite)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(xtst)
BuildRequires: pkgconfig(xinerama)
%else
BuildRequires: libexpat-devel
BuildRequires: libpng-devel
......@@ -53,6 +54,7 @@ BuildRequires: xorg-x11-libXcomposite-devel
BuildRequires: xorg-x11-libXrandr-devel
BuildRequires: xorg-x11-libXfixes-devel
BuildRequires: xorg-x11-libXtst-devel
BuildRequires: xorg-x11-libXinerama-devel
%endif
BuildRequires: xorg-x11-util-devel
%endif
......@@ -67,6 +69,7 @@ BuildRequires: libXcomposite-devel
BuildRequires: libXrandr-devel
BuildRequires: libXfixes-devel
BuildRequires: libXtst-devel
BuildRequires: libXinerama-devel
%endif
# For imake
......@@ -84,20 +87,6 @@ Provides: nx = %{version}-%{release}
Obsoletes: nx%{?_isa} < 3.5.0-19
Provides: nx%{?_isa} = %{version}-%{release}
# for Xinerama in NX to work:
%if 0%{?suse_version}
%if 0%{?suse_version} < 1140
Requires: xorg-x11-libX11%{?_isa}
Requires: xorg-x11-libXext%{?_isa}
%else
Requires: libX11-6%{?_isa}
Requires: libXext6%{?_isa}
%endif
%else
Requires: libX11%{?_isa}
Requires: libXext%{?_isa}
%endif
%if 0%{?el5}
# For compatibility with EPEL5
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
......@@ -244,22 +233,6 @@ The NX_Xext library contains a handful of X11 extensions:
- X11 Double-Buffering, Multi-Buffering, and Stereo extension (Xmbuf)
%package -n libNX_Xinerama1
Group: System Environment/Libraries
Summary: Xinerama extension to the NX Protocol
Requires: %{name}%{?_isa} >= 3.5.0.29
Obsoletes: libNX_Xinerama
%description -n libNX_Xinerama1
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.
Xinerama is an extension to the X Window System which enables
multi-headed X applications and window managers to use two or more
physical displays as one large virtual display.
%package -n libNX_Xrender-devel
Group: Development/Libraries
Summary: Development files for the NX Render Extension library
......@@ -553,11 +526,6 @@ rm -r %{buildroot}%{_includedir}/nx-X11/extensions/XK*.h
rm -r %{buildroot}%{_includedir}/nx-X11/extensions/*Xv*.h
rm -r %{buildroot}%{_includedir}/nx-X11/Xtrans
# Needed for Xinerama support
ln -s -f ../../../../%{_lib}/libX11.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama/libNX_X11.so.6
ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama/libNX_Xext.so.6
ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/Xinerama/libXinerama.so.1
%if 0%{?fdupes:1}
%fdupes %buildroot/%_prefix
%endif
......@@ -566,7 +534,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_Xau6 -p /sbin/ldconfig
%post -n libNX_Xext6 -p /sbin/ldconfig
%post -n libNX_Xinerama1 -p /sbin/ldconfig
%post -n libNX_Xrender1 -p /sbin/ldconfig
%post -n libXcomp3 -p /sbin/ldconfig
%post -n libXcompext3 -p /sbin/ldconfig
......@@ -575,7 +542,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_Xau6 -p /sbin/ldconfig
%postun -n libNX_Xext6 -p /sbin/ldconfig
%postun -n libNX_Xinerama1 -p /sbin/ldconfig
%postun -n libNX_Xrender1 -p /sbin/ldconfig
%postun -n libXcomp3 -p /sbin/ldconfig
%postun -n libXcompext3 -p /sbin/ldconfig
......@@ -654,10 +620,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%defattr(-,root,root)
%{_libdir}/libNX_Xext.so.6*
%files -n libNX_Xinerama1
%defattr(-,root,root)
%{_libdir}/libNX_Xinerama.so.1*
%files -n libNX_Xrender-devel
%defattr(-,root,root)
%{_libdir}/libNX_Xrender.so
......@@ -722,7 +684,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%files devel
%defattr(-,root,root)
%{_libdir}/libNX_Xinerama.so
%{_includedir}/nx-X11/X10.h
%dir %{_includedir}/nx-X11/extensions
%{_includedir}/nx-X11/extensions/Xevie.h
......
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