aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md46
-rw-r--r--debian/control57
-rw-r--r--debian/libnx-xrandr-dev.install.in2
-rw-r--r--debian/libnx-xrandr2.install.in1
-rw-r--r--debian/libnx-xrandr2.symbols23
-rw-r--r--debian/nx-x11proto-randr-dev.install.in2
-rwxr-xr-xdebian/rules1
-rw-r--r--nx-X11/config/cf/X11.tmpl37
-rw-r--r--nx-X11/config/cf/host.def2
-rw-r--r--nx-X11/config/cf/lnxLib.tmpl1
-rw-r--r--nx-X11/include/extensions/Imakefile4
-rw-r--r--nx-X11/include/extensions/randr.h74
-rw-r--r--nx-X11/include/extensions/randrproto.h209
-rw-r--r--nx-X11/lib/Imakefile5
-rw-r--r--nx-X11/lib/Xrandr/Imakefile42
-rw-r--r--nx-X11/lib/Xrandr/Xrandr-def.cpp36
-rw-r--r--nx-X11/lib/Xrandr/Xrandr.c744
-rw-r--r--nx-X11/lib/Xrandr/Xrandr.h151
-rw-r--r--nx-X11/lib/Xrandr/Xrandr.man351
-rw-r--r--nx-X11/lib/Xrandr/Xrandrint.h87
-rw-r--r--nx-X11/lib/Xrandr/test.c21
-rw-r--r--nx-X11/programs/Xserver/Imakefile4
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Events.c2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Imakefile9
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXxrandr.c755
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXxrandr.h168
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXxrandrint.h104
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Screen.c2
-rw-r--r--nx-libs.spec29
-rw-r--r--nxcomp/Agent.h2
-rw-r--r--nxcomp/ClearArea.cpp2
-rw-r--r--nxcomp/Loop.cpp27
-rw-r--r--nxcomp/Misc.h1
-rw-r--r--nxcomp/NX.h8
-rw-r--r--nxcomp/Proxy.cpp2
-rw-r--r--nxcompshad/Makefile.in2
36 files changed, 103 insertions, 2910 deletions
diff --git a/README.md b/README.md
index affcf1ce8..04718fc80 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,4 @@
-NX development by ArticaProject, X2Go and TheQVD
-------------------------------------------------
+# NX development by ArticaProject, X2Go and TheQVD
This source tree started as a re-distribution of those NX packages needed
to setup FreeNX and/or X2Go on a Linux server.
@@ -7,16 +6,16 @@ to setup FreeNX and/or X2Go on a Linux server.
The NX re-distribution (3.5.0.x) has been maintained by the X2Go Project:
http://wiki.x2go.org
-In 2014, TheQVD project run by the Spanish company "The Quindel Group"
+In 2014, [the QVD project](http://theqvd.com) run by the company Qindel
joined the group of people being interested in NX maintenance and
improvement.
-Since 2015, the Arctica Project has joined in the NX development. The
-core devs of X2Go and Arctica have agreed on stopping to redistribute
-NX and instead of that: continue the development of NX 3.x as new
-upstream (starting with NX 3.5.99).
+Since 2015, the Arctica Project has joined in the NX development. The core devs
+of X2Go, Arctica and TheQVD have agreed on stopping to redistribute NX and to
+continue the development of NX 3.x as the new upstream instead. The package
+will see a slight name change to **nx-libs** starting with version 3.5.99.0.
-Our goal is:
+Our intentions for nx-libs are:
* provide _one_ tarball that builds NX projects via a common Makefile
* provide _one_ tarball for distribution packagers
@@ -28,22 +27,41 @@ This source tree is maintained on Github:
https://github.com/ArcticaProject/nx-libs (3.6.x branch)
-Release goals for the post-NoMachine nx-libs release series 3.6.x:
+For the the post-NoMachine era of nx-libs, we will focus on two release
+phases for the upcoming year (06/2015 - 06/2016).
+
+## Release series 3.6.0.x
+
+Scheduled for Q3/2015.
+
+Release goals (phase 1) for nx-libs release series 3.6.0.x:
* CVE security audit (complete)
* remove unused code (+/- complete)
-* no bundled libraries anymore (work in progress)
+* no bundled non-X11 libraries anymore (done)
+* no bundled Mesa library anymore (todo)
* complete imake cleanup (work in progress)
* replace as many liNX_X* libraries by X.org's libX* libraries
(work in progress)
+* support for iOS (nxproxy, complete)
+
+## Release series 3.7.0.x
+
+Scheduled for Q1/2016.
+
+Release goals (phase 2) for nx-libs release series 3.7.0.x (not branched-off, yet):
+
+* provide support for latest X11 extensions
* socket communication for nxproxy -C <-> nxproxy -S connections
(todo)
* event FIFO sockets for attaching external applications
(todo)
+* allow embedding of nxproxy into other windows
+* support for multimedia
-If you have any questions about this NX development or want to file a
-bug, then please contact the Arctica or the X2Go developers via the
-Github issue tracker.
+If you have any questions about this NX development or want to file a bug
+report, please contact the Arctica developers, the X2Go developers or the
+TheQVD developers via the project's Github issue tracker.
-thanks+light+love, 20150313
+thanks+light+love, 20150515
Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
diff --git a/debian/control b/debian/control
index 0f575421f..485c6fe0e 100644
--- a/debian/control
+++ b/debian/control
@@ -18,12 +18,12 @@ Build-Depends:
libxfont-dev,
libxdmcp-dev,
libxdamage-dev,
+ libxrandr-dev,
autoconf,
pkg-config,
x11proto-core-dev,
expat,
Build-Conflicts:
- x11proto-randr-dev,
x11proto-record-dev,
x11proto-xinerama-dev,
Standards-Version: 3.9.6
@@ -714,20 +714,16 @@ 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 RandR extension library
+Description: nx-X11 RandR extension library (dummy package)
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_Xrandr provides an X Window System client interface to the RandR
- extension to the X protocol.
+ This package removes the obsoleted libNX_Xrandr.so.2 library. With
+ recent versions of NX, the system-wide installed libXrandr gets used.
.
- The RandR extension allows for run-time configuration of display attributes
- such as resolution, rotation, and reflection.
+ This package can be safely removed.
Package: libnx-xrandr-dev
Provides: libnx-xrandr2-dev
@@ -735,41 +731,34 @@ Section: libdevel
Architecture: any
Multi-Arch: same
Depends:
- libnx-xrandr2 (= ${binary:Version}),
- nx-x11proto-randr-dev (= ${binary:Version}),
${misc:Depends},
-Breaks: nxlibs (<= 3.5.1),
- libnx-x11-dev (<< 2:3.5.0.29-0x2go2~),
-Description: nx-X11 RandR extension library (development headers)
+Description: nx-X11 RandR extension library (dummy package)
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_Xrandr provides an X Window System client interface to the RandR
- extension to the X protocol.
- .
- The RandR extension allows for run-time configuration of display attributes
- such as resolution, rotation, and reflection.
+ This package removes the obsoleted headers for the libNX_Xrandr.so.2
+ library. With recent versions of NX, the system-wide installed libXrandr
+ gets used.
.
- This package contains the development headers for this library.
+ This package can be safely removed.
Package: nx-x11proto-randr-dev
Section: libdevel
Architecture: any
Multi-Arch: same
Depends:
- libnx-xrandr2 (= ${binary:Version}),
${misc:Depends},
-Breaks: nxlibs (<= 3.5.1),
- libnx-x11-dev (<< 2:3.5.0.29-0x2go2~),
-Description: nx-X11 RandR extension wire protocol
+Description: nx-X11 RandR extension wire protocol (dummy package)
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 RandR extension, used to change display properties such as
- resolution, rotation, reflection, et al, on the fly.
+ This package removes the obsoleted headers for the libNX_Xrandr.so.2
+ library. With recent versions of NX, the system-wide installed libXrandr
+ gets used.
+ .
+ This package can be safely removed.
Package: libnx-xrandr2-dbg
Architecture: any
@@ -777,22 +766,18 @@ Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
- libnx-xrandr2 (= ${binary:Version}),
${misc:Depends},
Section: debug
-Breaks: nx-x11-dbg (<< 2:3.5.0.29-0x2go2~),
-Description: nx-X11 RandR extension library (debug package)
+Description: nx-X11 RandR extension library (dummy package)
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_Xrandr provides an X Window System client interface to the RandR
- extension to the X protocol.
- .
- The RandR extension allows for run-time configuration of display attributes
- such as resolution, rotation, and reflection.
+ This package removes the obsoleted debug symbols for the libNX_Xrandr.so.2
+ library. With recent versions of NX, the system-wide installed libXrandr
+ gets used.
.
- This package contains debug symbols for this library.
+ This package can be safely removed.
Package: libnx-xrender1
Architecture: any
diff --git a/debian/libnx-xrandr-dev.install.in b/debian/libnx-xrandr-dev.install.in
deleted file mode 100644
index 4711b6a18..000000000
--- a/debian/libnx-xrandr-dev.install.in
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib/*/libNX_Xrandr.so
-usr/include/*/nx/X11/extensions/Xrandr.h \ No newline at end of file
diff --git a/debian/libnx-xrandr2.install.in b/debian/libnx-xrandr2.install.in
deleted file mode 100644
index f4d1b039f..000000000
--- a/debian/libnx-xrandr2.install.in
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/*/libNX_Xrandr.so.*
diff --git a/debian/libnx-xrandr2.symbols b/debian/libnx-xrandr2.symbols
deleted file mode 100644
index 7dc2fd1b9..000000000
--- a/debian/libnx-xrandr2.symbols
+++ /dev/null
@@ -1,23 +0,0 @@
-libNX_Xrandr.so.2 libnx-xrandr2 #MINVER#
- XRRConfigCurrentConfiguration@Base 3.5.0.29
- XRRConfigCurrentRate@Base 3.5.0.29
- XRRConfigRates@Base 3.5.0.29
- XRRConfigRotations@Base 3.5.0.29
- XRRConfigSizes@Base 3.5.0.29
- XRRConfigTimes@Base 3.5.0.29
- XRRExtensionInfo@Base 3.5.0.29
- XRRExtensionName@Base 3.5.0.29
- XRRFindDisplay@Base 3.5.0.29
- XRRFreeScreenConfigInfo@Base 3.5.0.29
- XRRGetScreenInfo@Base 3.5.0.29
- XRRQueryExtension@Base 3.5.0.29
- XRRQueryVersion@Base 3.5.0.29
- XRRRates@Base 3.5.0.29
- XRRRootToScreen@Base 3.5.0.29
- XRRRotations@Base 3.5.0.29
- XRRSelectInput@Base 3.5.0.29
- XRRSetScreenConfig@Base 3.5.0.29
- XRRSetScreenConfigAndRate@Base 3.5.0.29
- XRRSizes@Base 3.5.0.29
- XRRTimes@Base 3.5.0.29
- XRRUpdateConfiguration@Base 3.5.0.29
diff --git a/debian/nx-x11proto-randr-dev.install.in b/debian/nx-x11proto-randr-dev.install.in
deleted file mode 100644
index d92801663..000000000
--- a/debian/nx-x11proto-randr-dev.install.in
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/include/*/nx/X11/extensions/randr.h
-usr/include/*/nx/X11/extensions/randrproto.h
diff --git a/debian/rules b/debian/rules
index 16a09fb3f..682c5dab8 100755
--- a/debian/rules
+++ b/debian/rules
@@ -84,7 +84,6 @@ override_dh_strip:
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-xrandr2 --dbg-package=libnx-xrandr2-dbg
dh_strip -plibnx-xrender1 --dbg-package=libnx-xrender1-dbg
dh_strip -plibnx-xtst6 --dbg-package=libnx-xtst6-dbg
dh_strip -plibxcomp3 --dbg-package=libxcomp3-dbg
diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl
index de60cecaa..37f89696d 100644
--- a/nx-X11/config/cf/X11.tmpl
+++ b/nx-X11/config/cf/X11.tmpl
@@ -325,9 +325,6 @@ XORGRELSTRING = XorgManVersionString
#ifndef BuildRandR
#define BuildRandR YES
#endif
-#ifndef BuildRandRLibrary
-#define BuildRandRLibrary !BuildServersOnly
-#endif
#ifndef BuildXfixes
#define BuildXfixes YES
@@ -1529,30 +1526,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
#define ProfileLibXrender NO
#endif
-#if BuildRandRLibrary
-# ifndef SharedLibXrandr
-# define SharedLibXrandr HasSharedLibraries
-# endif
-# ifndef NormalLibXrandr
-# define NormalLibXrandr (!SharedLibXrandr || ForceNormalLib)
-# endif
-# ifndef DebugLibXrandr
-# define DebugLibXrandr NO
-# endif
-# ifndef ProfileLibXrandr
-# define ProfileLibXrandr NO
-# endif
-#else
-# undef SharedLibXrandr
-# define SharedLibXrandr NO
-# undef NormalLibXrandr
-# define NormalLibXrandr NO
-# undef DebugLibXrandr
-# define DebugLibXrandr NO
-# undef ProfileLibXrandr
-# define ProfileLibXrandr NO
-#endif
-
#if BuildXfixesLibrary
#ifndef SharedLibXfixes
#define SharedLibXfixes HasSharedLibraries
@@ -1753,16 +1726,6 @@ SharedLibReferences(XRENDER,NX_Xrender,$(XRENDERLIBSRC),SOXRENDERREV,SharedXrend
ProjectUnsharedLibReferences(XRENDER,NX_Xrender,$(XRENDERLIBSRC),XBuildLibDir)
#endif
- XRANDRLIBSRC = $(LIBSRC)/Xrandr
-#if SharedLibXrandr
-#ifndef SharedXrandrRev
-#define SharedXrandrRev 2.0
-#endif
-SharedLibReferences(XRANDR,NX_Xrandr,$(XRANDRLIBSRC),SOXRANDRREV,SharedXrandrRev)
-#else
-ProjectUnsharedLibReferences(XRANDR,NX_Xrandr,$(XRANDRLIBSRC),XBuildLibDir)
-#endif
-
XFIXESLIBSRC = $(LIBSRC)/Xfixes
#if SharedLibXfixes
#ifndef SharedXfixesRev
diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def
index 0566befdd..02eabbb9f 100644
--- a/nx-X11/config/cf/host.def
+++ b/nx-X11/config/cf/host.def
@@ -127,8 +127,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
#define BuildCompositeLibrary YES
-#define BuildRandRLibrary YES
-
#define BuildDocs NO
#define BuildComposite YES
diff --git a/nx-X11/config/cf/lnxLib.tmpl b/nx-X11/config/cf/lnxLib.tmpl
index 23fdf0fe3..33c89e102 100644
--- a/nx-X11/config/cf/lnxLib.tmpl
+++ b/nx-X11/config/cf/lnxLib.tmpl
@@ -9,7 +9,6 @@ XCOMM $XFree86: xc/config/cf/lnxLib.tmpl,v 3.19 2003/10/15 22:47:48 herrb Exp $
#define SharedXlibi18nReqs $(LDPRELIB) $(XONLYLIB)
#define SharedOldXReqs $(LDPRELIB) $(XONLYLIB)
#define SharedXextReqs $(LDPRELIB) $(XONLYLIB)
-#define SharedXrandrReqs $(LDPRELIB) $(XRENDERLIB) $(XLIB)
#define SharedXrenderReqs $(LDPRELIB) $(XLIB)
#define SharedXtstReqs $(LDPRELIB) $(XLIB)
diff --git a/nx-X11/include/extensions/Imakefile b/nx-X11/include/extensions/Imakefile
index 4f88d2bab..549c77018 100644
--- a/nx-X11/include/extensions/Imakefile
+++ b/nx-X11/include/extensions/Imakefile
@@ -50,9 +50,6 @@ XFIXESHEADERS = xfixeswire.h xfixesproto.h
#if BuildComposite || BuildCompositeLibrary
COMPOSITEHEADERS = composite.h compositeproto.h
#endif
-#if BuildRandR || BuildRandRLibrary
-RANDRHEADERS = randr.h randrproto.h
-#endif
#if BuildXTrap
XTRAPHEADERS = xtrapbits.h xtrapddmi.h xtrapdi.h xtrapemacros.h xtraplib.h \
xtraplibp.h xtrapproto.h
@@ -77,7 +74,6 @@ EXTRAHEADERS = \
$(XF86RUSHHEADERS) \
$(FONTCACHEHEADERS) \
$(RENDERHEADERS) \
- $(RANDRHEADERS) \
$(XFIXESHEADERS) \
$(COMPOSITEHEADERS) \
$(XEVIEHEADERS) \
diff --git a/nx-X11/include/extensions/randr.h b/nx-X11/include/extensions/randr.h
deleted file mode 100644
index 864ddd4fa..000000000
--- a/nx-X11/include/extensions/randr.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $XFree86: xc/include/extensions/randr.h,v 1.4 2001/11/24 07:24:58 keithp Exp $
- *
- * Copyright © 2000, Compaq Computer Corporation,
- * Copyright © 2002, Hewlett Packard, 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 Compaq or HP not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
- * 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.
- *
- * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
- */
-
-#ifndef _RANDR_H_
-#define _RANDR_H_
-
-typedef unsigned short Rotation;
-typedef unsigned short SizeID;
-typedef unsigned short SubpixelOrder;
-
-#define RANDR_NAME "RANDR"
-#define RANDR_MAJOR 1
-#define RANDR_MINOR 1
-
-#define RRNumberErrors 0
-#define RRNumberEvents 1
-
-#define X_RRQueryVersion 0
-/* we skip 1 to make old clients fail pretty immediately */
-#define X_RROldGetScreenInfo 1
-#define X_RR1_0SetScreenConfig 2
-/* V1.0 apps share the same set screen config request id */
-#define X_RRSetScreenConfig 2
-#define X_RROldScreenChangeSelectInput 3
-/* 3 used to be ScreenChangeSelectInput; deprecated */
-#define X_RRSelectInput 4
-#define X_RRGetScreenInfo 5
-
-/* used in XRRSelectInput */
-
-#define RRScreenChangeNotifyMask (1L << 0)
-
-#define RRScreenChangeNotify 0
-
-/* used in the rotation field; rotation and reflection in 0.1 proto. */
-#define RR_Rotate_0 1
-#define RR_Rotate_90 2
-#define RR_Rotate_180 4
-#define RR_Rotate_270 8
-
-/* new in 1.0 protocol, to allow reflection of screen */
-
-#define RR_Reflect_X 16
-#define RR_Reflect_Y 32
-
-#define RRSetConfigSuccess 0
-#define RRSetConfigInvalidConfigTime 1
-#define RRSetConfigInvalidTime 2
-#define RRSetConfigFailed 3
-
-#endif /* _RANDR_H_ */
diff --git a/nx-X11/include/extensions/randrproto.h b/nx-X11/include/extensions/randrproto.h
deleted file mode 100644
index 04d62fc04..000000000
--- a/nx-X11/include/extensions/randrproto.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * $XFree86: xc/include/extensions/randrproto.h,v 1.6 2002/09/29 23:39:43 keithp Exp $
- *
- * Copyright © 2000 Compaq Computer Corporation
- * Copyright © 2002 Hewlett-Packard Company
- *
- * 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 Compaq or HP not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. Compaq and HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
- * 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.
- *
- * Author: Jim Gettys, Hewlett-Packard Company, Inc.
- */
-
-/* note that RANDR 1.0 is incompatible with version 0.0, or 0.1 */
-/* V1.0 removes depth switching from the protocol */
-#ifndef _XRANDRP_H_
-#define _XRANDRP_H_
-
-#include <X11/extensions/randr.h>
-
-#define Window CARD32
-#define Drawable CARD32
-#define Font CARD32
-#define Pixmap CARD32
-#define Cursor CARD32
-#define Colormap CARD32
-#define GContext CARD32
-#define Atom CARD32
-#define Time CARD32
-#define KeyCode CARD8
-#define KeySym CARD32
-
-#define Rotation CARD16
-#define SizeID CARD16
-#define SubpixelOrder CARD16
-
-/*
- * data structures
- */
-
-typedef struct {
- CARD16 widthInPixels B16;
- CARD16 heightInPixels B16;
- CARD16 widthInMillimeters B16;
- CARD16 heightInMillimeters B16;
-} xScreenSizes;
-#define sz_xScreenSizes 8
-
-/*
- * requests and replies
- */
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
-} xRRQueryVersionReq;
-#define sz_xRRQueryVersionReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xRRQueryVersionReply;
-#define sz_xRRQueryVersionReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
-} xRRGetScreenInfoReq;
-#define sz_xRRGetScreenInfoReq 8
-
-/*
- * the xRRScreenInfoReply structure is followed by:
- *
- * the size information
- */
-
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE setOfRotations;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Window root B32;
- Time timestamp B32;
- Time configTimestamp B32;
- CARD16 nSizes B16;
- SizeID sizeID B16;
- Rotation rotation B16;
- CARD16 rate B16;
- CARD16 nrateEnts B16;
- CARD16 pad B16;
-} xRRGetScreenInfoReply;
-#define sz_xRRGetScreenInfoReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Drawable drawable B32;
- Time timestamp B32;
- Time configTimestamp B32;
- SizeID sizeID B16;
- Rotation rotation B16;
-} xRR1_0SetScreenConfigReq;
-#define sz_xRR1_0SetScreenConfigReq 20
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Drawable drawable B32;
- Time timestamp B32;
- Time configTimestamp B32;
- SizeID sizeID B16;
- Rotation rotation B16;
- CARD16 rate B16;
- CARD16 pad B16;
-} xRRSetScreenConfigReq;
-#define sz_xRRSetScreenConfigReq 24
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Time newTimestamp B32;
- Time newConfigTimestamp B32;
- Window root;
- CARD16 subpixelOrder B16;
- CARD16 pad4 B16;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xRRSetScreenConfigReply;
-#define sz_xRRSetScreenConfigReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
- CARD16 enable B16;
- CARD16 pad2 B16;
-} xRRSelectInputReq;
-#define sz_xRRSelectInputReq 12
-
-#define sz_xRRSelectInputReq 12
-
-/*
- * event
- */
-typedef struct {
- CARD8 type; /* always evBase + ScreenChangeNotify */
- CARD8 rotation; /* new rotation */
- CARD16 sequenceNumber B16;
- Time timestamp B32; /* time screen was changed */
- Time configTimestamp B32; /* time config data was changed */
- Window root B32; /* root window */
- Window window B32; /* window requesting notification */
- SizeID sizeID B16; /* new size ID */
- CARD16 subpixelOrder B16; /* subpixel order */
- CARD16 widthInPixels B16; /* new size */
- CARD16 heightInPixels B16;
- CARD16 widthInMillimeters B16;
- CARD16 heightInMillimeters B16;
-} xRRScreenChangeNotifyEvent;
-#define sz_xRRScreenChangeNotifyEvent 32
-
-#undef Window
-#undef Drawable
-#undef Font
-#undef Pixmap
-#undef Cursor
-#undef Colormap
-#undef GContext
-#undef Atom
-#undef Time
-#undef KeyCode
-#undef KeySym
-#undef Rotation
-#undef SizeID
-#undef SubpixelOrder
-
-#endif /* _XRANDRP_H_ */
diff --git a/nx-X11/lib/Imakefile b/nx-X11/lib/Imakefile
index 13dc8ac73..3e58dfecb 100644
--- a/nx-X11/lib/Imakefile
+++ b/nx-X11/lib/Imakefile
@@ -51,10 +51,6 @@ GLXLIBDIR = GL
RENDERLIBDIR = Xrender
#endif
-#if BuildRandRLibrary
-RANDRLIBDIR = Xrandr
-#endif
-
#if BuildXfixesLibrary
XFIXESLIBDIR = Xfixes
#endif
@@ -103,7 +99,6 @@ LINTSUBDIRS = \
$(GLXLIBDIR) \
$(XINERAMADIR) \
$(RENDERLIBDIR) \
- $(RANDRLIBDIR) \
$(XRESLIBDIR) \
$(XFIXESLIBDIR) \
$(COMPOSITELIBDIR) \
diff --git a/nx-X11/lib/Xrandr/Imakefile b/nx-X11/lib/Xrandr/Imakefile
deleted file mode 100644
index 5cf70a516..000000000
--- a/nx-X11/lib/Xrandr/Imakefile
+++ /dev/null
@@ -1,42 +0,0 @@
-XCOMM $XFree86: xc/lib/Xrandr/Imakefile,v 1.1 2001/05/23 03:29:44 keithp Exp $
-XCOMM $XdotOrg: xc/lib/Xrandr/Imakefile,v 1.5 2005/10/24 23:30:21 alanc Exp $
-
-#define DoNormalLib NormalLibXrandr
-#define DoSharedLib SharedLibXrandr
-#define DoDebugLib DebugLibXrandr
-#define DoProfileLib ProfileLibXrandr
-#define LibName NX_Xrandr
-#define SoRev SOXRANDRREV
-#define IncSubdir X11
-#define IncSubSubdir extensions
-
-#include <Threads.tmpl>
-
-#ifdef SharedXrandrReqs
-REQUIREDLIBS = SharedXrandrReqs
-#endif
-
-#if Malloc0ReturnsNull
-ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL
-#endif
-
- DEFINES = $(ALLOC_DEFINES)
- INCLUDES = -I. -I$(XLIBSRC) -I$(EXTINCSRC)
- SRCS = Xrandr.c
- OBJS = Xrandr.o
- LINTLIBS = $(LINTXLIB)
-
-HEADERS = Xrandr.h
-
-#include <Library.tmpl>
-
-MANSUFFIX = $(LIBMANSUFFIX)
-
-#define PreprocessManPages
-InstallManPage(Xrandr,$(LIBMANDIR))
-
-#if ExpandManNames
-InstallManPageAliases(Xrandr,$(LIBMANDIR),XRRQueryExtension XRRQueryVersion XRRGetScreenInfo XRRFreeScreenConfigInfo XRRSetScreenConfig XRRSetScreenConfigAndRate XRRConfigRotations XRRConfigTimes XRRConfigSizes XRRConfigRates XRRConfigCurrentConfiguration XRRConfigCurrentRate XRRRootToScreen XRRScreenConfig XRRConfig XRRSelectInput)
-#endif
-
-DependTarget()
diff --git a/nx-X11/lib/Xrandr/Xrandr-def.cpp b/nx-X11/lib/Xrandr/Xrandr-def.cpp
deleted file mode 100644
index 8b0d8a754..000000000
--- a/nx-X11/lib/Xrandr/Xrandr-def.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-LIBRARY Xrandr
-VERSION LIBRARY_VERSION
-EXPORTS
-#ifndef __UNIXOS2__
-XRRCurrentConfig
-#endif
- XRRFindDisplay
-#ifndef __UNIXOS2__
-XRRFreeScreenInfo
-#endif
- XRRGetScreenInfo
- XRRQueryExtension
- XRRQueryVersion
- XRRRootToScreen
- XRRRotations
-#ifndef __UNIXOS2__
-XRRScreenChangeSelectInput
-#endif
- XRRSetScreenConfig
- XRRSizes
- XRRTimes
-#ifndef __UNIXOS2__
-XRRVisualIDToVisual
-XRRVisualToDepth
-#else
-XRRConfigCurrentConfiguration
-XRRConfigSizes
-XRRConfigRotations
-XRRSelectInput
-XRRFreeScreenConfigInfo
-XRRUpdateConfiguration
-XRRConfigCurrentRate
-XRRConfigRates
-XRRSetScreenConfigAndRate
-#endif /* __UNIXOS2__
-/* $XFree86: xc/lib/Xrandr/Xrandr-def.cpp,v 1.1 2001/08/19 15:22:58 alanh Exp $ */
diff --git a/nx-X11/lib/Xrandr/Xrandr.c b/nx-X11/lib/Xrandr/Xrandr.c
deleted file mode 100644
index 32537b403..000000000
--- a/nx-X11/lib/Xrandr/Xrandr.c
+++ /dev/null
@@ -1,744 +0,0 @@
-/*
- * $XFree86: xc/lib/Xrandr/Xrandr.c,v 1.13tsi Exp $
- *
- * Copyright © 2000 Compaq Computer Corporation, Inc.
- * Copyright © 2002 Hewlett Packard Company, 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 Compaq or HP not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
- * 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.
- *
- * Author: Jim Gettys, HP Labs, HP.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <X11/Xlib.h>
-/* we need to be able to manipulate the Display structure on events */
-#include <X11/Xlibint.h>
-#include <X11/extensions/render.h>
-#include <X11/extensions/Xrender.h>
-#include "Xrandrint.h"
-
-XExtensionInfo XRRExtensionInfo;
-char XRRExtensionName[] = RANDR_NAME;
-
-static Bool XRRWireToEvent(Display *dpy, XEvent *event, xEvent *wire);
-static Status XRREventToWire(Display *dpy, XEvent *event, xEvent *wire);
-
-static XRRScreenConfiguration *_XRRGetScreenInfo (Display *dpy, Window window);
-
-static int
-XRRCloseDisplay (Display *dpy, XExtCodes *codes);
-
-static /* const */ XExtensionHooks rr_extension_hooks = {
- NULL, /* create_gc */
- NULL, /* copy_gc */
- NULL, /* flush_gc */
- NULL, /* free_gc */
- NULL, /* create_font */
- NULL, /* free_font */
- XRRCloseDisplay, /* close_display */
- XRRWireToEvent, /* wire_to_event */
- XRREventToWire, /* event_to_wire */
- NULL, /* error */
- NULL, /* error_string */
-};
-
-static Bool XRRWireToEvent(Display *dpy, XEvent *event, xEvent *wire)
-{
- XExtDisplayInfo *info = XRRFindDisplay(dpy);
- XRRScreenChangeNotifyEvent *aevent;
- xRRScreenChangeNotifyEvent *awire;
-
- RRCheckExtension(dpy, info, False);
-
- switch ((wire->u.u.type & 0x7F) - info->codes->first_event)
- {
- case RRScreenChangeNotify:
- awire = (xRRScreenChangeNotifyEvent *) wire;
- aevent = (XRRScreenChangeNotifyEvent *) event;
- aevent->type = awire->type & 0x7F;
- aevent->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *) wire);
- aevent->send_event = (awire->type & 0x80) != 0;
- aevent->display = dpy;
- aevent->window = awire->window;
- aevent->root = awire->root;
- aevent->timestamp = awire->timestamp;
- aevent->config_timestamp = awire->configTimestamp;
- aevent->size_index = awire->sizeID;
- aevent->subpixel_order = awire->subpixelOrder;
- aevent->rotation = awire->rotation;
- aevent->width = awire->widthInPixels;
- aevent->height = awire->heightInPixels;
- aevent->mwidth = awire->widthInMillimeters;
- aevent->mheight = awire->heightInMillimeters;
- return True;
- }
-
- return False;
-}
-
-static Status XRREventToWire(Display *dpy, XEvent *event, xEvent *wire)
-{
- XExtDisplayInfo *info = XRRFindDisplay(dpy);
- XRRScreenChangeNotifyEvent *aevent;
- xRRScreenChangeNotifyEvent *awire;
-
- RRCheckExtension(dpy, info, False);
-
- switch ((event->type & 0x7F) - info->codes->first_event)
- {
- case RRScreenChangeNotify:
- awire = (xRRScreenChangeNotifyEvent *) wire;
- aevent = (XRRScreenChangeNotifyEvent *) event;
- awire->type = aevent->type | (aevent->send_event ? 0x80 : 0);
- awire->rotation = (CARD8) aevent->rotation;
- awire->sequenceNumber = aevent->serial & 0xFFFF;
- awire->timestamp = aevent->timestamp;
- awire->configTimestamp = aevent->config_timestamp;
- awire->root = aevent->root;
- awire->window = aevent->window;
- awire->sizeID = aevent->size_index;
- awire->subpixelOrder = aevent->subpixel_order;
- awire->widthInPixels = aevent->width;
- awire->heightInPixels = aevent->height;
- awire->widthInMillimeters = aevent->mwidth;
- awire->heightInMillimeters = aevent->mheight;
- return True;
- }
- return False;
-}
-
-XExtDisplayInfo *
-XRRFindDisplay (Display *dpy)
-{
- XExtDisplayInfo *dpyinfo;
- XRandRInfo *xrri;
- int i, numscreens;
-
- dpyinfo = XextFindDisplay (&XRRExtensionInfo, dpy);
- if (!dpyinfo) {
- dpyinfo = XextAddDisplay (&XRRExtensionInfo, dpy,
- XRRExtensionName,
- &rr_extension_hooks,
- RRNumberEvents, 0);
- numscreens = ScreenCount(dpy);
- xrri = Xmalloc (sizeof(XRandRInfo) +
- sizeof(char *) * numscreens);
- xrri->config = (XRRScreenConfiguration **)(xrri + 1);
- for(i = 0; i < numscreens; i++)
- xrri->config[i] = NULL;
- xrri->major_version = -1;
- dpyinfo->data = (char *) xrri;
- }
- return dpyinfo;
-}
-
-static int
-XRRCloseDisplay (Display *dpy, XExtCodes *codes)
-{
- int i;
- XRRScreenConfiguration **configs;
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- XRandRInfo *xrri;
-
- LockDisplay(dpy);
- /*
- * free cached data
- */
- if (XextHasExtension(info)) {
- xrri = (XRandRInfo *) info->data;
- if (xrri) {
- configs = xrri->config;
-
- for (i = 0; i < ScreenCount(dpy); i++) {
- if (configs[i] != NULL) XFree (configs[i]);
- }
- XFree (xrri);
- }
- }
- UnlockDisplay(dpy);
- return XextRemoveDisplay (&XRRExtensionInfo, dpy);
-}
-
-
-Rotation XRRConfigRotations(XRRScreenConfiguration *config, Rotation *current_rotation)
-{
- *current_rotation = config->current_rotation;
- return config->rotations;
-}
-
-XRRScreenSize *XRRConfigSizes(XRRScreenConfiguration *config, int *nsizes)
-{
- *nsizes = config->nsizes;
- return config->sizes;
-}
-
-short *XRRConfigRates (XRRScreenConfiguration *config, int sizeID, int *nrates)
-{
- short *r = config->rates;
- int nents = config->nrates;
-
- /* Skip over the intervening rate lists */
- while (sizeID > 0 && nents > 0)
- {
- int i = (*r + 1);
- r += i;
- nents -= i;
- sizeID--;
- }
- if (!nents)
- {
- *nrates = 0;
- return 0;
- }
- *nrates = (int) *r;
- return r + 1;
-}
-
-Time XRRConfigTimes (XRRScreenConfiguration *config, Time *config_timestamp)
-{
- *config_timestamp = config->config_timestamp;
- return config->timestamp;
-}
-
-
-SizeID XRRConfigCurrentConfiguration (XRRScreenConfiguration *config,
- Rotation *rotation)
-{
- *rotation = (Rotation) config->current_rotation;
- return (SizeID) config->current_size;
-}
-
-short XRRConfigCurrentRate (XRRScreenConfiguration *config)
-{
- return config->current_rate;
-}
-
-/*
- * Go get the screen configuration data and salt it away for future use;
- * returns NULL if extension not supported
- */
-static XRRScreenConfiguration *_XRRValidateCache (Display *dpy, int screen)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- XRRScreenConfiguration **configs;
- XRandRInfo *xrri;
-
- if (XextHasExtension(info)) {
- xrri = (XRandRInfo *) info->data;
- configs = xrri->config;
-
- if (configs[screen] == NULL)
- configs[screen] = _XRRGetScreenInfo (dpy, RootWindow(dpy, screen));
- return configs[screen];
- } else {
- return NULL;
- }
-}
-
-/* given a screen, return the information from the (possibly) cached data */
-Rotation XRRRotations(Display *dpy, int screen, Rotation *current_rotation)
-{
- XRRScreenConfiguration *config;
- Rotation cr;
- LockDisplay(dpy);
- if ((config = _XRRValidateCache(dpy, screen))) {
- *current_rotation = config->current_rotation;
- cr = config->rotations;
- UnlockDisplay(dpy);
- return cr;
- }
- else {
- UnlockDisplay(dpy);
- *current_rotation = RR_Rotate_0;
- return 0; /* no rotations supported */
- }
-}
-
-/* given a screen, return the information from the (possibly) cached data */
-XRRScreenSize *XRRSizes(Display *dpy, int screen, int *nsizes)
-{
- XRRScreenConfiguration *config;
- XRRScreenSize *sizes;
-
- LockDisplay(dpy);
- if ((config = _XRRValidateCache(dpy, screen))) {
- *nsizes = config->nsizes;
- sizes = config->sizes;
- UnlockDisplay(dpy);
- return sizes;
- }
- else {
- UnlockDisplay(dpy);
- *nsizes = 0;
- return NULL;
- }
-}
-
-short *XRRRates (Display *dpy, int screen, int sizeID, int *nrates)
-{
- XRRScreenConfiguration *config;
- short *rates;
-
- LockDisplay(dpy);
- if ((config = _XRRValidateCache(dpy, screen))) {
- rates = XRRConfigRates (config, sizeID, nrates);
- UnlockDisplay(dpy);
- return rates;
- }
- else {
- UnlockDisplay(dpy);
- *nrates = 0;
- return NULL;
- }
-}
-
-/* given a screen, return the information from the (possibly) cached data */
-Time XRRTimes (Display *dpy, int screen, Time *config_timestamp)
-{
- XRRScreenConfiguration *config;
- Time ts;
-
- LockDisplay(dpy);
- if ((config = _XRRValidateCache(dpy, screen))) {
- *config_timestamp = config->config_timestamp;
- ts = config->timestamp;
- UnlockDisplay(dpy);
- return ts;
- } else {
- UnlockDisplay(dpy);
- return CurrentTime;
- }
-}
-
-int XRRRootToScreen(Display *dpy, Window root)
-{
- int snum;
- for (snum = 0; snum < ScreenCount(dpy); snum++) {
- if (RootWindow(dpy, snum) == root) return snum;
- }
- return -1;
-}
-
-
-Bool XRRQueryExtension (Display *dpy, int *event_basep, int *error_basep)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
-
- if (XextHasExtension(info)) {
- *event_basep = info->codes->first_event;
- *error_basep = info->codes->first_error;
- return True;
- } else {
- return False;
- }
-}
-
-static Bool
-_XRRHasRates (int major, int minor)
-{
- return major > 1 || (major == 1 && minor >= 1);
-}
-
-Status XRRQueryVersion (Display *dpy,
- int *major_versionp,
- int *minor_versionp)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- xRRQueryVersionReply rep;
- xRRQueryVersionReq *req;
- XRandRInfo *xrri;
-
- RRCheckExtension (dpy, info, 0);
-
- xrri = (XRandRInfo *) info->data;
-
- /*
- * only get the version information from the server if we don't have it already
- */
- if (xrri->major_version == -1) {
- LockDisplay (dpy);
- GetReq (RRQueryVersion, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRQueryVersion;
- req->majorVersion = RANDR_MAJOR;
- req->minorVersion = RANDR_MINOR;
- if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
- UnlockDisplay (dpy);
- SyncHandle ();
- return 0;
- }
- xrri->major_version = rep.majorVersion;
- xrri->minor_version = rep.minorVersion;
- xrri->has_rates = _XRRHasRates (xrri->major_version, xrri->minor_version);
- }
- *major_versionp = xrri->major_version;
- *minor_versionp = xrri->minor_version;
- UnlockDisplay (dpy);
- SyncHandle ();
- return 1;
-}
-
-typedef struct _randrVersionState {
- unsigned long version_seq;
- Bool error;
- int major_version;
- int minor_version;
-} _XRRVersionState;
-
-static Bool
-_XRRVersionHandler (Display *dpy,
- xReply *rep,
- char *buf,
- int len,
- XPointer data)
-{
- xRRQueryVersionReply replbuf;
- xRRQueryVersionReply *repl;
- _XRRVersionState *state = (_XRRVersionState *) data;
-
- if (dpy->last_request_read != state->version_seq)
- return False;
- if (rep->generic.type == X_Error)
- {
- state->error = True;
- return False;
- }
- repl = (xRRQueryVersionReply *)
- _XGetAsyncReply(dpy, (char *)&replbuf, rep, buf, len,
- (SIZEOF(xRRQueryVersionReply) - SIZEOF(xReply)) >> 2,
- True);
- state->major_version = repl->majorVersion;
- state->minor_version = repl->minorVersion;
- return True;
-}
-/* need a version that does not hold the display lock */
-static XRRScreenConfiguration *_XRRGetScreenInfo (Display *dpy, Window window)
-{
- XExtDisplayInfo *info = XRRFindDisplay(dpy);
- xRRGetScreenInfoReply rep;
- xRRGetScreenInfoReq *req;
- _XAsyncHandler async;
- _XRRVersionState async_state;
- int nbytes, nbytesRead, rbytes;
- int i;
- xScreenSizes size;
- struct _XRRScreenConfiguration *scp;
- XRRScreenSize *ssp;
- short *rates;
- xRRQueryVersionReq *vreq;
- XRandRInfo *xrri;
- Bool getting_version = False;
-
- RRCheckExtension (dpy, info, 0);
-
- xrri = (XRandRInfo *) info->data;
-
- if (xrri->major_version == -1)
- {
- /* hide a version query in the request */
- GetReq (RRQueryVersion, vreq);
- vreq->reqType = info->codes->major_opcode;
- vreq->randrReqType = X_RRQueryVersion;
- vreq->majorVersion = RANDR_MAJOR;
- vreq->minorVersion = RANDR_MINOR;
-
- async_state.version_seq = dpy->request;
- async_state.error = False;
- async.next = dpy->async_handlers;
- async.handler = _XRRVersionHandler;
- async.data = (XPointer) &async_state;
- dpy->async_handlers = &async;
-
- getting_version = True;
- }
-
- GetReq (RRGetScreenInfo, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRGetScreenInfo;
- req->window = window;
-
- if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
- {
- if (getting_version)
- DeqAsyncHandler (dpy, &async);
- SyncHandle ();
- return NULL;
- }
- if (getting_version)
- {
- DeqAsyncHandler (dpy, &async);
- if (async_state.error)
- {
- SyncHandle();
- }
- xrri->major_version = async_state.major_version;
- xrri->minor_version = async_state.minor_version;
- xrri->has_rates = _XRRHasRates (xrri->minor_version, xrri->major_version);
- }
-
- /*
- * Make the reply compatible with v1.1
- */
- if (!xrri->has_rates)
- {
- rep.rate = 0;
- rep.nrateEnts = 0;
- }
-
- nbytes = (long) rep.length << 2;
-
- nbytesRead = (long) (rep.nSizes * SIZEOF (xScreenSizes) +
- ((rep.nrateEnts + 1)& ~1) * 2 /* SIZEOF (CARD16) */);
-
- /*
- * first we must compute how much space to allocate for
- * randr library's use; we'll allocate the structures in a single
- * allocation, on cleanlyness grounds.
- */
-
- rbytes = sizeof (XRRScreenConfiguration) +
- (rep.nSizes * sizeof (XRRScreenSize) +
- rep.nrateEnts * sizeof (int));
-
- scp = (struct _XRRScreenConfiguration *) Xmalloc(rbytes);
- if (scp == NULL) {
- _XEatData (dpy, (unsigned long) nbytes);
- SyncHandle ();
- return NULL;
- }
-
-
- ssp = (XRRScreenSize *)(scp + 1);
- rates = (short *) (ssp + rep.nSizes);
-
- /* set up the screen configuration structure */
- scp->screen =
- ScreenOfDisplay (dpy, XRRRootToScreen(dpy, rep.root));
-
- scp->sizes = ssp;
- scp->rates = rates;
- scp->rotations = rep.setOfRotations;
- scp->current_size = rep.sizeID;
- scp->current_rate = rep.rate;
- scp->current_rotation = rep.rotation;
- scp->timestamp = rep.timestamp;
- scp->config_timestamp = rep.configTimestamp;
- scp->nsizes = rep.nSizes;
- scp->nrates = rep.nrateEnts;
-
- /*
- * Time to unpack the data from the server.
- */
-
- /*
- * First the size information
- */
- for (i = 0; i < rep.nSizes; i++) {
- _XReadPad (dpy, (char *) &size, SIZEOF (xScreenSizes));
-
- ssp[i].width = size.widthInPixels;
- ssp[i].height = size.heightInPixels;
- ssp[i].mwidth = size.widthInMillimeters;
- ssp[i].mheight = size.heightInMillimeters;
- }
- /*
- * And the rates
- */
- _XRead16Pad (dpy, rates, 2 /* SIZEOF (CARD16) */ * rep.nrateEnts);
-
- /*
- * Skip any extra data
- */
- if (nbytes > nbytesRead)
- _XEatData (dpy, (unsigned long) (nbytes - nbytesRead));
-
- return (XRRScreenConfiguration *)(scp);
-}
-
-XRRScreenConfiguration *XRRGetScreenInfo (Display *dpy, Window window)
-{
- XRRScreenConfiguration *config;
- XRRFindDisplay(dpy);
- LockDisplay (dpy);
- config = _XRRGetScreenInfo(dpy, window);
- UnlockDisplay (dpy);
- SyncHandle ();
- return config;
-}
-
-
-void XRRFreeScreenConfigInfo (XRRScreenConfiguration *config)
-{
- Xfree (config);
-}
-
-
-/*
- * in protocol version 0.1, routine added to allow selecting for new events.
- */
-
-void XRRSelectInput (Display *dpy, Window window, int mask)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- xRRSelectInputReq *req;
-
- RRSimpleCheckExtension (dpy, info);
-
- LockDisplay (dpy);
- GetReq (RRSelectInput, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRSelectInput;
- req->window = window;
- req->enable = 0;
- if (mask) req->enable = mask;
- UnlockDisplay (dpy);
- SyncHandle ();
- return;
-}
-
-Status XRRSetScreenConfigAndRate (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation,
- short rate,
- Time timestamp)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- xRRSetScreenConfigReply rep;
- XRandRInfo *xrri;
- int major, minor;
-
- RRCheckExtension (dpy, info, 0);
-
- /* Make sure has_rates is set */
- if (!XRRQueryVersion (dpy, &major, &minor))
- return 0;
-
- LockDisplay (dpy);
- xrri = (XRandRInfo *) info->data;
- if (xrri->has_rates)
- {
- xRRSetScreenConfigReq *req;
- GetReq (RRSetScreenConfig, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRSetScreenConfig;
- req->drawable = draw;
- req->sizeID = size_index;
- req->rotation = rotation;
- req->timestamp = timestamp;
- req->configTimestamp = config->config_timestamp;
- req->rate = rate;
- }
- else
- {
- xRR1_0SetScreenConfigReq *req;
- GetReq (RR1_0SetScreenConfig, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRSetScreenConfig;
- req->drawable = draw;
- req->sizeID = size_index;
- req->rotation = rotation;
- req->timestamp = timestamp;
- req->configTimestamp = config->config_timestamp;
- }
-
- (void) _XReply (dpy, (xReply *) &rep, 0, xTrue);
-
- if (rep.status == RRSetConfigSuccess) {
- /* if we succeed, set our view of reality to what we set it to */
- config->config_timestamp = rep.newConfigTimestamp;
- config->timestamp = rep.newTimestamp;
- config->screen = ScreenOfDisplay (dpy, XRRRootToScreen(dpy, rep.root));
- config->current_size = size_index;
- config->current_rotation = rotation;
- }
- UnlockDisplay (dpy);
- SyncHandle ();
- return(rep.status);
-}
-
-Status XRRSetScreenConfig (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation, Time timestamp)
-{
- return XRRSetScreenConfigAndRate (dpy, config, draw, size_index,
- rotation, 0, timestamp);
-}
-
-int XRRUpdateConfiguration(XEvent *event)
-{
- XRRScreenChangeNotifyEvent *scevent;
- XConfigureEvent *rcevent;
- Display *dpy = event->xany.display;
- XExtDisplayInfo *info;
- XRandRInfo *xrri;
- int snum;
-
- /* first, see if it is a vanilla configure notify event */
- if (event->type == ConfigureNotify) {
- rcevent = (XConfigureEvent *) event;
- snum = XRRRootToScreen(dpy, rcevent->window);
- dpy->screens[snum].width = rcevent->width;
- dpy->screens[snum].height = rcevent->height;
- return 1;
- }
-
- info = XRRFindDisplay(dpy);
- RRCheckExtension (dpy, info, 0);
-
- switch (event->type - info->codes->first_event) {
- case RRScreenChangeNotify:
- scevent = (XRRScreenChangeNotifyEvent *) event;
- snum = XRRRootToScreen(dpy,
- ((XRRScreenChangeNotifyEvent *) event)->root);
- if (scevent->rotation & (RR_Rotate_90 | RR_Rotate_270)) {
- dpy->screens[snum].width = scevent->height;
- dpy->screens[snum].height = scevent->width;
- dpy->screens[snum].mwidth = scevent->mheight;
- dpy->screens[snum].mheight = scevent->mwidth;
- } else {
- dpy->screens[snum].width = scevent->width;
- dpy->screens[snum].height = scevent->height;
- dpy->screens[snum].mwidth = scevent->mwidth;
- dpy->screens[snum].mheight = scevent->mheight;
- }
- XRenderSetSubpixelOrder (dpy, snum, scevent->subpixel_order);
- break;
- default:
- return 0;
- }
- xrri = (XRandRInfo *) info->data;
- /*
- * so the next time someone wants some data, it will be fetched;
- * it might be better to force the round trip immediately, but
- * I dislike pounding the server simultaneously when not necessary
- */
- if (xrri->config[snum] != NULL) {
- XFree (xrri->config[snum]);
- xrri->config[snum] = NULL;
- }
- return 1;
-}
diff --git a/nx-X11/lib/Xrandr/Xrandr.h b/nx-X11/lib/Xrandr/Xrandr.h
deleted file mode 100644
index 6a4d7fe98..000000000
--- a/nx-X11/lib/Xrandr/Xrandr.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $
- *
- * Copyright © 2000 Compaq Computer Corporation, Inc.
- * Copyright © 2002 Hewlett-Packard Company, 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 Compaq not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
- * 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.
- *
- * Author: Jim Gettys, HP Labs, HP.
- */
-
-#ifndef _XRANDR_H_
-#define _XRANDR_H_
-
-#include <X11/extensions/randr.h>
-
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-
-typedef struct {
- int width, height;
- int mwidth, mheight;
-} XRRScreenSize;
-
-/*
- * Events.
- */
-
-typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- Window root; /* Root window for changed screen */
- Time timestamp; /* when the screen change occurred */
- Time config_timestamp; /* when the last configuration change */
- SizeID size_index;
- SubpixelOrder subpixel_order;
- Rotation rotation;
- int width;
- int height;
- int mwidth;
- int mheight;
-} XRRScreenChangeNotifyEvent;
-
-
-/* internal representation is private to the library */
-typedef struct _XRRScreenConfiguration XRRScreenConfiguration;
-
-Bool XRRQueryExtension (Display *dpy, int *event_basep, int *error_basep);
-Status XRRQueryVersion (Display *dpy,
- int *major_versionp,
- int *minor_versionp);
-
-XRRScreenConfiguration *XRRGetScreenInfo (Display *dpy,
- Drawable draw);
-
-void XRRFreeScreenConfigInfo (XRRScreenConfiguration *config);
-
-/*
- * Note that screen configuration changes are only permitted if the client can
- * prove it has up to date configuration information. We are trying to
- * insist that it become possible for screens to change dynamically, so
- * we want to ensure the client knows what it is talking about when requesting
- * changes.
- */
-Status XRRSetScreenConfig (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation,
- Time timestamp);
-
-/* added in v1.1, sorry for the lame name */
-Status XRRSetScreenConfigAndRate (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation,
- short rate,
- Time timestamp);
-
-
-Rotation XRRConfigRotations(XRRScreenConfiguration *config, Rotation *current_rotation);
-
-Time XRRConfigTimes (XRRScreenConfiguration *config, Time *config_timestamp);
-
-XRRScreenSize *XRRConfigSizes(XRRScreenConfiguration *config, int *nsizes);
-
-short *XRRConfigRates (XRRScreenConfiguration *config, int sizeID, int *nrates);
-
-SizeID XRRConfigCurrentConfiguration (XRRScreenConfiguration *config,
- Rotation *rotation);
-
-short XRRConfigCurrentRate (XRRScreenConfiguration *config);
-
-int XRRRootToScreen(Display *dpy, Window root);
-
-/*
- * returns the screen configuration for the specified screen; does a lazy
- * evalution to delay getting the information, and caches the result.
- * These routines should be used in preference to XRRGetScreenInfo
- * to avoid unneeded round trips to the X server. These are new
- * in protocol version 0.1.
- */
-
-
-XRRScreenConfiguration *XRRScreenConfig(Display *dpy, int screen);
-XRRScreenConfiguration *XRRConfig(Screen *screen);
-void XRRSelectInput(Display *dpy, Window window, int mask);
-
-/*
- * the following are always safe to call, even if RandR is not implemented
- * on a screen
- */
-
-
-Rotation XRRRotations(Display *dpy, int screen, Rotation *current_rotation);
-XRRScreenSize *XRRSizes(Display *dpy, int screen, int *nsizes);
-short *XRRRates (Display *dpy, int screen, int sizeID, int *nrates);
-Time XRRTimes (Display *dpy, int screen, Time *config_timestamp);
-
-
-/*
- * intended to take RRScreenChangeNotify, or
- * ConfigureNotify (on the root window)
- * returns 1 if it is an event type it understands, 0 if not
- */
-int XRRUpdateConfiguration(XEvent *event);
-
-_XFUNCPROTOEND
-
-#endif /* _XRANDR_H_ */
diff --git a/nx-X11/lib/Xrandr/Xrandr.man b/nx-X11/lib/Xrandr/Xrandr.man
deleted file mode 100644
index f61d93044..000000000
--- a/nx-X11/lib/Xrandr/Xrandr.man
+++ /dev/null
@@ -1,351 +0,0 @@
-.\"
-.\" $XFree86: xc/lib/Xrandr/Xrandr.man,v 1.7 2003/08/04 10:32:21 eich Exp $
-.\" $XdotOrg: xc/lib/Xrandr/Xrandr.man,v 1.4 2005/10/13 02:56:42 alanc Exp $
-.\"
-.\" Copyright 2002 Hewlett-Packard Company.\"
-.\" 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 Hewlett-Packard Company not be used in
-.\" advertising or publicity pertaining to distribution of the software without
-.\" specific, written prior permission. Hewlett Packard Company makes no
-.\" representations about the suitability of this software for any purpose. It
-.\" is provided "as is" without express or implied warranty.
-.\"
-.\" Hewlett-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 XRANDR __libmansuffix__ __vendorversion__
-
-.SH NAME
- Xrandr \- X Resize, Rotate and Reflection extension.
-.SH SYNTAX
-\&#include <X11/extensions/Xrandr.h>
-.nf
-.sp
-Bool XRRQueryExtension \^(\^Display *\fIdpy\fP,
- int *\fIevent_basep\fP, int *\fIerror_basep\fP\^);
-.sp
-Status XRRQueryVersion \^(\^Display *\fIdpy\fP,
- int *\fImajor_versionp\fP,
- int *\fIminor_versionp\fP\^);
-.sp
-XRRScreenConfiguration *XRRGetScreenInfo \^(\^Display *dpy,
- Drawable \fIdraw\fP\^);
-.sp
-void XRRFreeScreenConfigInfo \^(\^
- \fIXRRScreenConfiguration *config\fP\^);
-.sp
-Status XRRSetScreenConfig \^(\^Display *\fIdpy\fP,
- XRRScreenConfiguration *\fIconfig\fP,
- Drawable \fIdraw\fP,
- int \fIsize_index\fP,
- Rotation \fIrotation\fP,
- Time \fItimestamp\fP\^);
-.sp
-Status XRRSetScreenConfigAndRate \^(\^Display *\fIdpy\fP,
- XRRScreenConfiguration *\fIconfig\fP,
- Drawable \fIdraw\fP,
- int \fIsize_index\fP,
- Rotation \fIrotation\fP,
- short \fIrate\fP,
- Time \fItimestamp\fP\^);
-.sp
-Rotation XRRConfigRotations\^(\^
- XRRScreenConfiguration *\fIconfig\fP,
- Rotation *\fIcurrent_rotation\fP\^);
-.sp
-Time XRRConfigTimes \^(\^
- XRRScreenConfiguration *\fIconfig\fP,
- Time *\fIconfig_timestamp\fP\^);
-.sp
-XRRScreenSize *XRRConfigSizes\^(\^
- XRRScreenConfiguration *\fIconfig\fP,
- int *\fInsizes\fP\^);
-.sp
-short *XRRConfigRates \^(\^
- XRRScreenConfiguration *\fIconfig\fP,
- int \fIsize_index\fP,
- int *\fInrates\fP\^);
-.sp
-SizeID XRRConfigCurrentConfiguration \^(\^
- XRRScreenConfiguration *\fIconfig\fP,
- Rotation *\fIrotation\fP\^);
-.sp
-short XRRConfigCurrentRate \^(\^
- XRRScreenConfiguration *\fIconfig\fP\^);
-.sp
-int XRRRootToScreen\^(\^
- Display *\fIdpy\fP,
- Window \fIroot\fP\^);
-.sp
-XRRScreenConfiguration *XRRScreenConfig\^(\^
- Display *\fIdpy\fP, int \fIscreen\fP\^);
-.sp
-XRRScreenConfiguration *XRRConfig\^(\^Screen *\fIscreen\fP\^);
-.sp
-void XRRSelectInput\^(\^Display *\fIdpy\fP, Window \fIwindow\fP, int \fImask\fP\^);
-.sp
-/\(**
- * intended to take RRScreenChangeNotify, or
- * ConfigureNotify \^(\^\fIon the root window\fP\^)
- * returns 1 if it is an event type it understands, 0 if not
- */
-int XRRUpdateConfiguration\^(\^XEvent *\fIevent\fP^);
-.sp
-/\(**
- * the following are always safe to call, even if RandR is
- * not implemented on a screen
- */
-.br
-Rotation XRRRotations\^(\^
- Display *\fIdpy\fP, int \fIscreen\fP,
- Rotation *\fIcurrent_rotation\fP\^);
-.sp
-XRRScreenSize *XRRSizes\^(\^Display *\fIdpy\fP,
- int \fIscreen\fP, int *\fInsizes\fP\^);
-.sp
-short *XRRRates \^(\^Display *\fIdpy\fP, int \fIscreen\fP,
- int \fIsize_index\fP, int *\fInrates\fP\^);
-.sp
-Time XRRTimes \^(\^Display *\fIdpy\fP, int \fIscreen\fP, Time *\fIconfig_timestamp\fP\^);
-.fi
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIscreen\fP 1i
-Specifies which screen.
-.IP \fIdraw\fP 1i
-Specifies the screen.
-.IP \fIrotation\fP 1i
-Specifies the rotations or reflections possible of the screen.
-.IP \fIcurrent_rotation\fP 1i
-Specifies the current rotations and reflection of the screen.
-.IP \fItimestamp\fP 1i
-Specifies the server timestamp.
-.IP \fIconfig_timestamp\fP 1i
-Specifies the timestamp when the screen was last (re)configured.
-.IP \fIconfig\fP 1i
-Specifies the screen configuration being used.
-.IP \fIsizes\fP 1i
-Specifies the array of sizes supported.
-.IP \fIrate\fP 1i
-Specifies the refresh rate in Hz.
-
-.SH DATATYPES
-
-.PP
-.B Rotations/Reflections
-.PP
-Can be any of:
-.nf
-\&#define RR_Rotate_0 1
-\&#define RR_Rotate_90 2
-\&#define RR_Rotate_180 4
-\&#define RR_Rotate_270 8
-
-/\(** new in 1.0 protocol, to allow reflection of screen */
-/\(** reflection is applied after rotation */
-
-\&#define RR_Reflect_X 16
-\&#define RR_Reflect_Y 32
-
-
-typedef struct {
- int width, height;
- int mwidth, mheight;
-} XRRScreenSize;
-
-typedef struct {
- int type; /\(** event base */
- unsigned long serial; /\(** # of last request processed by server */
- Bool send_event; /\(** true if this came from a SendEvent request */
- Display *display; /\(** Display the event was read from */
- Window window; /\(** window which selected for this event */
- Window root; /\(** Root window for changed screen */
- Time timestamp; /\(** when the screen change occurred */
- Time config_timestamp; /\(** when the last configuration change */
- SizeID size_index;
- SubpixelOrder subpixel_order;
- Rotation rotation;
- int width;
- int height;
- int mwidth;
- int mheight;
-} XRRScreenChangeNotifyEvent;
-.sp
-.fi
-.B XRRScreenSize
-structure contains a possible root size in pixels and in millimeters.
-.B XRRScreenChangeNotifyEvent
-Is sent to a client that has requested notification whenever the screen
-configuration is changed.
-
-.B XRRScreenConfiguration
-This is an opaque data type containing the configuration information
-for a screen.
-
-.B Timestamps
-.PP
-Time stamps are included and must be used to ensure the client is playing
-with a full deck: the screen may change properties
-on the fly and this ensures its knowledge of the configuration is up to date.
-This is to help issues when screens may become hot-pluggable in the future.
-
-.SH DESCRIPTION
-.B Xrandr
-is a simple library designed to interface the X Resize and Rotate
-Extension. This allows clients to change the size and rotation of the
-root window of a screen, along with the ability to reflect the screen
-about either axis (if supported by the implementation). Rotation and
-reflection may be implemented by software and may result in slower
-performance if rotation and reflection are implemented in this fashion
-(as are all implementations as of October 2002).
-.PP
-The Xrandr library does some minimal caching to avoid roundtrips to
-provide clients frequently used information. See "The X Resize and
-Rotate Extension" for a detailed description; also note that depth
-switching, as described in the document is not implemented, and may
-(or may not) ever be implemented, as display memory is growing rapidly,
-and toolkits are already beginning to support migration, mitigating the
-need for depth switching. If it is implemented in the future, we
-expect to do so via an upward compatible extension to the
-current library/protocol; functionality described here should continue
-to work.
-.PP
-Rotation and reflection and how they interact can be confusing. In
-Randr, the coordinate system is rotated in a counter-clockwise
-direction relative to the normal orientation. Reflection is along the
-window system coordinate system, not the physical screen X and Y axis,
-so that rotation and reflection do not interact. The other way to
-consider reflection is to is specified in the "normal" orientation,
-before rotation, if you find the other way confusing.
-.PP
-The
-.B XRRScreenChangeNotify
-event is sent to clients that ask to be informed whenever the root window
-configuration changes. Configuration changes may include resolution,
-physical size, subpixel order (see XRender(3)), and rotation. Note
-that changes to any or all of these could occur due to external events
-(user control in the X server, a different monitor/flat panel display
-being hot-plugged) and is not only the result of a protocol/library
-request to the X server.
-.PP
-Additionally, to eliminate a potential race condition,
-this event may be generated
-immediately upon selecting for notification if the screen has changed
-since the client of Xrandr connected to the X server, to enable
-reliable screen resolution changing when a user may log in and
-change the configuration while one or many clients are starting up.
-.PP
-.B Xlib notification
-.PP
-Clients must call back into Xlib using
-.B XRRUpdateConfiguration
-when screen configuration change notify events are generated
-(or root window configuration changes occur, to update Xlib's
-view of the resolution, size, rotation, reflection or subpixel order.
-Generally, toolkits will perform this operation on behalf of applications;
-we did not want to change display structure data behind the back of toolkits,
-as in multithreaded clients, various race conditions might occur.
-Toolkits should provide clients some mechanism for notification of
-screen change, of course.
-
-.SH FUNCTIONS
-There are two classes of interfaces: those which can be safely called
-even if RandR is not implemented on a screen (to make common idioms not
-dependent on the server having support), and those which will return
-errors if the extension is not present.
-.PP
-.B XRRRotations
-returns both the possible set of rotations/reflections supported
-(as a bitmask) as the value of the function, along with the current
-rotation/reflection of the screen.
-.PP
-.B XRRSizes
-returns the size and a pointer to the current sizes supported by
-the specified screen. The first size specified is the default size
-of the server. If RandR is not supported, it returns 0 for
-the number of sizes.
-.PP
-.B XRRRates
-returns a pointer to a the rates supported by the specified size.
-If RandR is not supported, it returns 0 for the number of rates.
-.PP
-.B XRRTimes
-returns the time last reported by the server along with the
-timestamp the last configuration changed.
-If the configuration has changed since the client last updated
-its view of the server time, requests to change the configuration
-will fail until the client has an up to date timestamp.
-.PP
-.B XRRRootToScreen
-returns the screen number given a root window (for example, from
-an \fBXRRScreenChangeNotifyEvent\fI.
-.PP
-The rest of the functions will fail if applied to screens not
-implementing the RandR extension.
-.B XRRSetScreenConfig
-sets the screen size and rotation and reflection to the desired
-values on the screen specified by \fIdraw\fP, or returns a
-.B BadValue
-error.
-\fIsize_index\fP specifies which size configuration is to be used,
-\fIrotation\fP specifies which rotation or reflection is to
-be used (or a
-.B BadValue
-error is returned).
-The \fItimestamp\fP is used by the server to make sure the client
-has up to date configuration information. Status is returned
-to indicate success or failure; a client must refresh its configuration
-information if it fails and try the call again (by calling
-\fBXRRGetScreenInfo\fP).
-.PP
-.B XRRSetScreenConfigAndRate
-like
-.B XRRSetScreenConfig
-but also set the refresh rate. If specified rate is not supported a
-.B BadValue
-error is returned.
-.PP
-.B XRRConfigRotations,
-.B XRRConfigSizes,
-.B XRRConfigCurrentConfiguration,
-.B XRRConfigTimes,
-.B XRRConfigRates,
-and
-.B XRRConfigCurrentRate
-are used to get specific configuration information out of a screen
-configuration.
-.PP
-.B XRRGetScreenInfo
-Returns a screen configuration for later use; the information is
-private to the library.
-Call
-.B XRRFreeScreenConfigInfo
-to free this information when you are finished with it.
-It forces a round trip to the server.
-
-Other functions include:
-.B XRRQueryExtension
-which returns the event and error base codes,
-.B XRRQueryVersion
-, which returns the current version of the extension (this information
-is cached by the library).
-.SH RESTRICTIONS
-.B Xrandr
-will remain upward compatible after the current 1.0 release.
-.SH AUTHOR
-Jim Gettys, and Keith Packard, HP.
-
diff --git a/nx-X11/lib/Xrandr/Xrandrint.h b/nx-X11/lib/Xrandr/Xrandrint.h
deleted file mode 100644
index 78a8fcf11..000000000
--- a/nx-X11/lib/Xrandr/Xrandrint.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $XFree86: xc/lib/Xrandr/Xrandrint.h,v 1.2 2001/06/07 15:33:43 keithp Exp $
- *
- *
- * Copyright © 2000, Compaq Computer Corporation,
- * Copyright © 2002, Hewlett Packard, 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 Compaq or HP not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
- * 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.
- *
- * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
- */
-
-#ifndef _XRANDRINT_H_
-#define _XRANDRINT_H_
-
-#define NEED_EVENTS
-#define NEED_REPLIES
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
-#include "Xrandr.h"
-#include <X11/extensions/randr.h>
-#include <X11/extensions/randrproto.h>
-
-extern XExtensionInfo XrandrExtensionInfo;
-extern char XrandrExtensionName[];
-
-#define RRCheckExtension(dpy,i,val) \
- XextCheckExtension (dpy, i, XRRExtensionName, val)
-#define RRSimpleCheckExtension(dpy,i) \
- XextSimpleCheckExtension (dpy, i, XRRExtensionName)
-
-XExtDisplayInfo *XRRFindDisplay (Display *dpy);
-
-
-/* deliberately opaque internal data structure; can be extended,
- but not reordered */
-struct _XRRScreenConfiguration {
- Screen *screen; /* the root window in GetScreenInfo */
- XRRScreenSize *sizes;
- Rotation rotations;
- Rotation current_rotation;
- int nsizes;
- int current_size;
- short current_rate;
- Time timestamp;
- Time config_timestamp;
- int subpixel_order; /* introduced in randr v0.1 */
- short *rates; /* introduced in randr v1.1 */
- int nrates;
-};
-
-/*
- * if a configure notify on the root is recieved, or
- * an XRRScreenChangeNotify is recieved,
- * XRRUpdateConfiguration should be called to update the X library's
- * view of the screen configuration; it will also invalidate the cache
- * provided by XRRScreenConfig and XRRConfig, and force a round trip
- * when next used. Returns invalid status if not an event type
- * the library routine understand.
- */
-
-/* we cache one screen configuration/screen */
-
-typedef struct _XRandRInfo {
- XRRScreenConfiguration **config;
- int major_version, minor_version; /* major_version = -1 means we don't know */
- Bool has_rates; /* Server supports refresh rates */
-} XRandRInfo;
-
-#endif /* _XRANDRINT_H_ */
diff --git a/nx-X11/lib/Xrandr/test.c b/nx-X11/lib/Xrandr/test.c
deleted file mode 100644
index 01e67eba0..000000000
--- a/nx-X11/lib/Xrandr/test.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* $XFree86$ */
-
-#include <stdio.h>
-#include <X11/Xlib.h>
-#include "Xrandr.h"
-
-main (int argc, char **argv)
-
-{
- char *display_name = ":0";
- Display *display;
- int major, minor, status;
-
- if ((display = XOpenDisplay (display_name)) == NULL) {
- fprintf(stderr, "Can't open display!\n");
- }
- status = XRRQueryVersion (display, &major, &minor);
- fprintf(stderr, "status = %d, major = %d, minor = %d\n,
- status, major, minor");
-
-}
diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile
index eb65fba19..9f730cb97 100644
--- a/nx-X11/programs/Xserver/Imakefile
+++ b/nx-X11/programs/Xserver/Imakefile
@@ -427,7 +427,7 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTSYSLIBS):: $(NXAGENTDIRS)
#if defined(SunArchitecture)
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \
-lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lNX_Xrender -lNX_Xfixes -lXfont \
- -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xrandr -lNX_Xcomposite -lXdmcp \
+ -L../../../nx-X11/exports/lib -lNX_Xtst -lXrandr -lNX_Xcomposite -lXdmcp \
`pkg-config --libs libxml-2.0`
#elif defined(cygwinArchitecture)
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \
@@ -437,7 +437,7 @@ NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \
#else
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \
-lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lNX_Xfixes -lXfont \
- -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xrandr -lNX_Xcomposite -lNX_Xinerama -lXdmcp \
+ -L../../../nx-X11/exports/lib -lNX_Xtst -lXrandr -lNX_Xcomposite -lNX_Xinerama -lXdmcp \
`pkg-config --libs libxml-2.0`
#endif
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c
index d0efa71e6..be5dd9032 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Events.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c
@@ -93,7 +93,7 @@
#include <X11/cursorfont.h>
#include "Shadow.h"
-#include "Xrandr.h"
+#include <X11/extensions/Xrandr.h>
#include "NXlib.h"
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Imakefile b/nx-X11/programs/Xserver/hw/nxagent/Imakefile
index 4d409dc41..794864cf3 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile
+++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile
@@ -24,7 +24,6 @@ SRCS = NXwindow.c \
NXmiexpose.c \
NXresource.c \
NXmiwindow.c \
- NXxrandr.c \
NXdamage.c \
NXmitrap.c \
Args.c \
@@ -87,7 +86,6 @@ OBJS = NXwindow.o \
NXmiexpose.o \
NXresource.o \
NXmiwindow.o \
- NXxrandr.o \
NXdamage.o \
NXmitrap.o \
Args.o \
@@ -134,7 +132,6 @@ OBJS = NXwindow.o \
$(OBJS1)
VFBINCLUDES = -I../../fb -I../../mfb -I../../render
-LIBXRANDRINCLUDES= -I../../../../lib/Xrandr
INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \
-I../../../../extras/Mesa/include \
@@ -143,7 +140,7 @@ INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../
-I../../miext/damage -I../../miext/cw \
-I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \
-I$(EXTINCSRC) -I$(XINCLUDESRC) \
- $(VFBINCLUDES) $(LIBXRANDRINCLUDES) \
+ $(VFBINCLUDES) \
`pkg-config --cflags-only-I libxml-2.0`
#ifdef SunArchitecture
INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \
@@ -154,7 +151,7 @@ INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../
-I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \
-I../../miext/damage -I../../miext/cw \
-I$(EXTINCSRC) -I$(XINCLUDESRC) \
- $(VFBINCLUDES) $(LIBXRANDRINCLUDES) \
+ $(VFBINCLUDES) \
`pkg-config --cflags-only-I libxml-2.0`
#else
#ifdef cygwinArchitecture
@@ -165,7 +162,7 @@ INCLUDES = -I. -I$(XBUILDINCDIR) \
-I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \
-I../../../../extras/Mesa/include \
-I$(EXTINCSRC) -I$(XINCLUDESRC) \
- $(VFBINCLUDES) $(LIBXRANDRINCLUDES) \
+ $(VFBINCLUDES) \
`pkg-config --cflags-only-I libxml-2.0`
#endif
#endif
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXxrandr.c b/nx-X11/programs/Xserver/hw/nxagent/NXxrandr.c
deleted file mode 100644
index 37b2c74fd..000000000
--- a/nx-X11/programs/Xserver/hw/nxagent/NXxrandr.c
+++ /dev/null
@@ -1,755 +0,0 @@
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NXAGENT, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-/*
- * $XFree86: xc/lib/Xrandr/Xrandr.c,v 1.13tsi Exp $
- *
- * Copyright © 2000 Compaq Computer Corporation, Inc.
- * Copyright © 2002 Hewlett Packard Company, 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 Compaq or HP not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
- * 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.
- *
- * Author: Jim Gettys, HP Labs, HP.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <X11/Xlib.h>
-/* we need to be able to manipulate the Display structure on events */
-#include <X11/Xlibint.h>
-#include <X11/extensions/render.h>
-#include <X11/extensions/Xrender.h>
-
-#include "NXxrandrint.h"
-
-XExtensionInfo XRRExtensionInfo;
-char XRRExtensionName[] = RANDR_NAME;
-
-static Bool XRRWireToEvent(Display *dpy, XEvent *event, xEvent *wire);
-static Status XRREventToWire(Display *dpy, XEvent *event, xEvent *wire);
-
-static XRRScreenConfiguration *_XRRGetScreenInfo (Display *dpy, Window window);
-
-static int
-XRRCloseDisplay (Display *dpy, XExtCodes *codes);
-
-static /* const */ XExtensionHooks rr_extension_hooks = {
- NULL, /* create_gc */
- NULL, /* copy_gc */
- NULL, /* flush_gc */
- NULL, /* free_gc */
- NULL, /* create_font */
- NULL, /* free_font */
- XRRCloseDisplay, /* close_display */
- XRRWireToEvent, /* wire_to_event */
- XRREventToWire, /* event_to_wire */
- NULL, /* error */
- NULL, /* error_string */
-};
-
-static Bool XRRWireToEvent(Display *dpy, XEvent *event, xEvent *wire)
-{
- XExtDisplayInfo *info = XRRFindDisplay(dpy);
- XRRScreenChangeNotifyEvent *aevent;
- xRRScreenChangeNotifyEvent *awire;
-
- RRCheckExtension(dpy, info, False);
-
- switch ((wire->u.u.type & 0x7F) - info->codes->first_event)
- {
- case RRScreenChangeNotify:
- awire = (xRRScreenChangeNotifyEvent *) wire;
- aevent = (XRRScreenChangeNotifyEvent *) event;
- aevent->type = awire->type & 0x7F;
- aevent->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *) wire);
- aevent->send_event = (awire->type & 0x80) != 0;
- aevent->display = dpy;
- aevent->window = awire->window;
- aevent->root = awire->root;
- aevent->timestamp = awire->timestamp;
- aevent->config_timestamp = awire->configTimestamp;
- aevent->size_index = awire->sizeID;
- aevent->subpixel_order = awire->subpixelOrder;
- aevent->rotation = awire->rotation;
- aevent->width = awire->widthInPixels;
- aevent->height = awire->heightInPixels;
- aevent->mwidth = awire->widthInMillimeters;
- aevent->mheight = awire->heightInMillimeters;
- return True;
- }
-
- return False;
-}
-
-static Status XRREventToWire(Display *dpy, XEvent *event, xEvent *wire)
-{
- XExtDisplayInfo *info = XRRFindDisplay(dpy);
- XRRScreenChangeNotifyEvent *aevent;
- xRRScreenChangeNotifyEvent *awire;
-
- RRCheckExtension(dpy, info, False);
-
- switch ((event->type & 0x7F) - info->codes->first_event)
- {
- case RRScreenChangeNotify:
- awire = (xRRScreenChangeNotifyEvent *) wire;
- aevent = (XRRScreenChangeNotifyEvent *) event;
- awire->type = aevent->type | (aevent->send_event ? 0x80 : 0);
- awire->rotation = (CARD8) aevent->rotation;
- awire->sequenceNumber = aevent->serial & 0xFFFF;
- awire->timestamp = aevent->timestamp;
- awire->configTimestamp = aevent->config_timestamp;
- awire->root = aevent->root;
- awire->window = aevent->window;
- awire->sizeID = aevent->size_index;
- awire->subpixelOrder = aevent->subpixel_order;
- awire->widthInPixels = aevent->width;
- awire->heightInPixels = aevent->height;
- awire->widthInMillimeters = aevent->mwidth;
- awire->heightInMillimeters = aevent->mheight;
- return True;
- }
- return False;
-}
-
-XExtDisplayInfo *
-XRRFindDisplay (Display *dpy)
-{
- XExtDisplayInfo *dpyinfo;
- XRandRInfo *xrri;
- int i, numscreens;
-
- dpyinfo = XextFindDisplay (&XRRExtensionInfo, dpy);
- if (!dpyinfo) {
- dpyinfo = XextAddDisplay (&XRRExtensionInfo, dpy,
- XRRExtensionName,
- &rr_extension_hooks,
- RRNumberEvents, 0);
- numscreens = ScreenCount(dpy);
- xrri = Xmalloc (sizeof(XRandRInfo) +
- sizeof(char *) * numscreens);
- xrri->config = (XRRScreenConfiguration **)(xrri + 1);
- for(i = 0; i < numscreens; i++)
- xrri->config[i] = NULL;
- xrri->major_version = -1;
- dpyinfo->data = (char *) xrri;
- }
- return dpyinfo;
-}
-
-static int
-XRRCloseDisplay (Display *dpy, XExtCodes *codes)
-{
- int i;
- XRRScreenConfiguration **configs;
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- XRandRInfo *xrri;
-
- LockDisplay(dpy);
- /*
- * free cached data
- */
- if (XextHasExtension(info)) {
- xrri = (XRandRInfo *) info->data;
- if (xrri) {
- configs = xrri->config;
-
- for (i = 0; i < ScreenCount(dpy); i++) {
- if (configs[i] != NULL) XFree (configs[i]);
- }
- XFree (xrri);
- }
- }
- UnlockDisplay(dpy);
- return XextRemoveDisplay (&XRRExtensionInfo, dpy);
-}
-
-
-Rotation XRRConfigRotations(XRRScreenConfiguration *config, Rotation *current_rotation)
-{
- *current_rotation = config->current_rotation;
- return config->rotations;
-}
-
-XRRScreenSize *XRRConfigSizes(XRRScreenConfiguration *config, int *nsizes)
-{
- *nsizes = config->nsizes;
- return config->sizes;
-}
-
-short *XRRConfigRates (XRRScreenConfiguration *config, int sizeID, int *nrates)
-{
- short *r = config->rates;
- int nents = config->nrates;
-
- /* Skip over the intervening rate lists */
- while (sizeID > 0 && nents > 0)
- {
- int i = (*r + 1);
- r += i;
- nents -= i;
- sizeID--;
- }
- if (!nents)
- {
- *nrates = 0;
- return 0;
- }
- *nrates = (int) *r;
- return r + 1;
-}
-
-Time XRRConfigTimes (XRRScreenConfiguration *config, Time *config_timestamp)
-{
- *config_timestamp = config->config_timestamp;
- return config->timestamp;
-}
-
-
-SizeID XRRConfigCurrentConfiguration (XRRScreenConfiguration *config,
- Rotation *rotation)
-{
- *rotation = (Rotation) config->current_rotation;
- return (SizeID) config->current_size;
-}
-
-short XRRConfigCurrentRate (XRRScreenConfiguration *config)
-{
- return config->current_rate;
-}
-
-/*
- * Go get the screen configuration data and salt it away for future use;
- * returns NULL if extension not supported
- */
-static XRRScreenConfiguration *_XRRValidateCache (Display *dpy, int screen)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- XRRScreenConfiguration **configs;
- XRandRInfo *xrri;
-
- if (XextHasExtension(info)) {
- xrri = (XRandRInfo *) info->data;
- configs = xrri->config;
-
- if (configs[screen] == NULL)
- configs[screen] = _XRRGetScreenInfo (dpy, RootWindow(dpy, screen));
- return configs[screen];
- } else {
- return NULL;
- }
-}
-
-/* given a screen, return the information from the (possibly) cached data */
-Rotation XRRRotations(Display *dpy, int screen, Rotation *current_rotation)
-{
- XRRScreenConfiguration *config;
- Rotation cr;
- LockDisplay(dpy);
- if ((config = _XRRValidateCache(dpy, screen))) {
- *current_rotation = config->current_rotation;
- cr = config->rotations;
- UnlockDisplay(dpy);
- return cr;
- }
- else {
- UnlockDisplay(dpy);
- *current_rotation = RR_Rotate_0;
- return 0; /* no rotations supported */
- }
-}
-
-/* given a screen, return the information from the (possibly) cached data */
-XRRScreenSize *XRRSizes(Display *dpy, int screen, int *nsizes)
-{
- XRRScreenConfiguration *config;
- XRRScreenSize *sizes;
-
- LockDisplay(dpy);
- if ((config = _XRRValidateCache(dpy, screen))) {
- *nsizes = config->nsizes;
- sizes = config->sizes;
- UnlockDisplay(dpy);
- return sizes;
- }
- else {
- UnlockDisplay(dpy);
- *nsizes = 0;
- return NULL;
- }
-}
-
-short *XRRRates (Display *dpy, int screen, int sizeID, int *nrates)
-{
- XRRScreenConfiguration *config;
- short *rates;
-
- LockDisplay(dpy);
- if ((config = _XRRValidateCache(dpy, screen))) {
- rates = XRRConfigRates (config, sizeID, nrates);
- UnlockDisplay(dpy);
- return rates;
- }
- else {
- UnlockDisplay(dpy);
- *nrates = 0;
- return NULL;
- }
-}
-
-/* given a screen, return the information from the (possibly) cached data */
-Time XRRTimes (Display *dpy, int screen, Time *config_timestamp)
-{
- XRRScreenConfiguration *config;
- Time ts;
-
- LockDisplay(dpy);
- if ((config = _XRRValidateCache(dpy, screen))) {
- *config_timestamp = config->config_timestamp;
- ts = config->timestamp;
- UnlockDisplay(dpy);
- return ts;
- } else {
- UnlockDisplay(dpy);
- return CurrentTime;
- }
-}
-
-int XRRRootToScreen(Display *dpy, Window root)
-{
- int snum;
- for (snum = 0; snum < ScreenCount(dpy); snum++) {
- if (RootWindow(dpy, snum) == root) return snum;
- }
- return -1;
-}
-
-
-Bool XRRQueryExtension (Display *dpy, int *event_basep, int *error_basep)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
-
- if (XextHasExtension(info)) {
- *event_basep = info->codes->first_event;
- *error_basep = info->codes->first_error;
- return True;
- } else {
- return False;
- }
-}
-
-static Bool
-_XRRHasRates (int major, int minor)
-{
- return major > 1 || (major == 1 && minor >= 1);
-}
-
-Status XRRQueryVersion (Display *dpy,
- int *major_versionp,
- int *minor_versionp)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- xRRQueryVersionReply rep;
- xRRQueryVersionReq *req;
- XRandRInfo *xrri;
-
- RRCheckExtension (dpy, info, 0);
-
- xrri = (XRandRInfo *) info->data;
-
- /*
- * only get the version information from the server if we don't have it already
- */
- if (xrri->major_version == -1) {
- LockDisplay (dpy);
- GetReq (RRQueryVersion, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRQueryVersion;
- req->majorVersion = RANDR_MAJOR;
- req->minorVersion = RANDR_MINOR;
- if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
- UnlockDisplay (dpy);
- SyncHandle ();
- return 0;
- }
- xrri->major_version = rep.majorVersion;
- xrri->minor_version = rep.minorVersion;
- xrri->has_rates = _XRRHasRates (xrri->major_version, xrri->minor_version);
- }
- *major_versionp = xrri->major_version;
- *minor_versionp = xrri->minor_version;
- UnlockDisplay (dpy);
- SyncHandle ();
- return 1;
-}
-
-typedef struct _randrVersionState {
- unsigned long version_seq;
- Bool error;
- int major_version;
- int minor_version;
-} _XRRVersionState;
-
-static Bool
-_XRRVersionHandler (Display *dpy,
- xReply *rep,
- char *buf,
- int len,
- XPointer data)
-{
- xRRQueryVersionReply replbuf;
- xRRQueryVersionReply *repl;
- _XRRVersionState *state = (_XRRVersionState *) data;
-
- if (dpy->last_request_read != state->version_seq)
- return False;
- if (rep->generic.type == X_Error)
- {
- state->error = True;
- return False;
- }
- repl = (xRRQueryVersionReply *)
- _XGetAsyncReply(dpy, (char *)&replbuf, rep, buf, len,
- (SIZEOF(xRRQueryVersionReply) - SIZEOF(xReply)) >> 2,
- True);
- state->major_version = repl->majorVersion;
- state->minor_version = repl->minorVersion;
- return True;
-}
-/* need a version that does not hold the display lock */
-static XRRScreenConfiguration *_XRRGetScreenInfo (Display *dpy, Window window)
-{
- XExtDisplayInfo *info = XRRFindDisplay(dpy);
- xRRGetScreenInfoReply rep;
- xRRGetScreenInfoReq *req;
- _XAsyncHandler async;
- _XRRVersionState async_state;
- int nbytes, nbytesRead, rbytes;
- int i;
- xScreenSizes size;
- struct _XRRScreenConfiguration *scp;
- XRRScreenSize *ssp;
- short *rates;
- xRRQueryVersionReq *vreq;
- XRandRInfo *xrri;
- Bool getting_version = False;
-
- RRCheckExtension (dpy, info, 0);
-
- xrri = (XRandRInfo *) info->data;
-
- if (xrri->major_version == -1)
- {
- /* hide a version query in the request */
- GetReq (RRQueryVersion, vreq);
- vreq->reqType = info->codes->major_opcode;
- vreq->randrReqType = X_RRQueryVersion;
- vreq->majorVersion = RANDR_MAJOR;
- vreq->minorVersion = RANDR_MINOR;
-
- async_state.version_seq = dpy->request;
- async_state.error = False;
- async.next = dpy->async_handlers;
- async.handler = _XRRVersionHandler;
- async.data = (XPointer) &async_state;
- dpy->async_handlers = &async;
-
- getting_version = True;
- }
-
- GetReq (RRGetScreenInfo, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRGetScreenInfo;
- req->window = window;
-
- if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
- {
- if (getting_version)
- DeqAsyncHandler (dpy, &async);
- SyncHandle ();
- return NULL;
- }
- if (getting_version)
- {
- DeqAsyncHandler (dpy, &async);
- if (async_state.error)
- {
- SyncHandle();
- }
- xrri->major_version = async_state.major_version;
- xrri->minor_version = async_state.minor_version;
- xrri->has_rates = _XRRHasRates (xrri->minor_version, xrri->major_version);
- }
-
- /*
- * Make the reply compatible with v1.1
- */
- if (!xrri->has_rates)
- {
- rep.rate = 0;
- rep.nrateEnts = 0;
- }
-
- nbytes = (long) rep.length << 2;
-
- nbytesRead = (long) (rep.nSizes * SIZEOF (xScreenSizes) +
- ((rep.nrateEnts + 1)& ~1) * 2 /* SIZEOF (CARD16) */);
-
- /*
- * first we must compute how much space to allocate for
- * randr library's use; we'll allocate the structures in a single
- * allocation, on cleanlyness grounds.
- */
-
- rbytes = sizeof (XRRScreenConfiguration) +
- (rep.nSizes * sizeof (XRRScreenSize) +
- rep.nrateEnts * sizeof (int));
-
- scp = (struct _XRRScreenConfiguration *) Xmalloc(rbytes);
- if (scp == NULL) {
- _XEatData (dpy, (unsigned long) nbytes);
- SyncHandle ();
- return NULL;
- }
-
-
- ssp = (XRRScreenSize *)(scp + 1);
- rates = (short *) (ssp + rep.nSizes);
-
- /* set up the screen configuration structure */
- scp->screen =
- ScreenOfDisplay (dpy, XRRRootToScreen(dpy, rep.root));
-
- scp->sizes = ssp;
- scp->rates = rates;
- scp->rotations = rep.setOfRotations;
- scp->current_size = rep.sizeID;
- scp->current_rate = rep.rate;
- scp->current_rotation = rep.rotation;
- scp->timestamp = rep.timestamp;
- scp->config_timestamp = rep.configTimestamp;
- scp->nsizes = rep.nSizes;
- scp->nrates = rep.nrateEnts;
-
- /*
- * Time to unpack the data from the server.
- */
-
- /*
- * First the size information
- */
- for (i = 0; i < rep.nSizes; i++) {
- _XReadPad (dpy, (char *) &size, SIZEOF (xScreenSizes));
-
- ssp[i].width = size.widthInPixels;
- ssp[i].height = size.heightInPixels;
- ssp[i].mwidth = size.widthInMillimeters;
- ssp[i].mheight = size.heightInMillimeters;
- }
- /*
- * And the rates
- */
- _XRead16Pad (dpy, rates, 2 /* SIZEOF (CARD16) */ * rep.nrateEnts);
-
- /*
- * Skip any extra data
- */
- if (nbytes > nbytesRead)
- _XEatData (dpy, (unsigned long) (nbytes - nbytesRead));
-
- return (XRRScreenConfiguration *)(scp);
-}
-
-XRRScreenConfiguration *XRRGetScreenInfo (Display *dpy, Window window)
-{
- XRRScreenConfiguration *config;
- XRRFindDisplay(dpy);
- LockDisplay (dpy);
- config = _XRRGetScreenInfo(dpy, window);
- UnlockDisplay (dpy);
- SyncHandle ();
- return config;
-}
-
-
-void XRRFreeScreenConfigInfo (XRRScreenConfiguration *config)
-{
- Xfree (config);
-}
-
-
-/*
- * in protocol version 0.1, routine added to allow selecting for new events.
- */
-
-void XRRSelectInput (Display *dpy, Window window, int mask)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- xRRSelectInputReq *req;
-
- RRSimpleCheckExtension (dpy, info);
-
- LockDisplay (dpy);
- GetReq (RRSelectInput, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRSelectInput;
- req->window = window;
- req->enable = 0;
- if (mask) req->enable = mask;
- UnlockDisplay (dpy);
- SyncHandle ();
- return;
-}
-
-Status XRRSetScreenConfigAndRate (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation,
- short rate,
- Time timestamp)
-{
- XExtDisplayInfo *info = XRRFindDisplay (dpy);
- xRRSetScreenConfigReply rep;
- XRandRInfo *xrri;
- int major, minor;
-
- RRCheckExtension (dpy, info, 0);
-
- /* Make sure has_rates is set */
- if (!XRRQueryVersion (dpy, &major, &minor))
- return 0;
-
- LockDisplay (dpy);
- xrri = (XRandRInfo *) info->data;
- if (xrri->has_rates)
- {
- xRRSetScreenConfigReq *req;
- GetReq (RRSetScreenConfig, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRSetScreenConfig;
- req->drawable = draw;
- req->sizeID = size_index;
- req->rotation = rotation;
- req->timestamp = timestamp;
- req->configTimestamp = config->config_timestamp;
- req->rate = rate;
- }
- else
- {
- xRR1_0SetScreenConfigReq *req;
- GetReq (RR1_0SetScreenConfig, req);
- req->reqType = info->codes->major_opcode;
- req->randrReqType = X_RRSetScreenConfig;
- req->drawable = draw;
- req->sizeID = size_index;
- req->rotation = rotation;
- req->timestamp = timestamp;
- req->configTimestamp = config->config_timestamp;
- }
-
- (void) _XReply (dpy, (xReply *) &rep, 0, xTrue);
-
- if (rep.status == RRSetConfigSuccess) {
- /* if we succeed, set our view of reality to what we set it to */
- config->config_timestamp = rep.newConfigTimestamp;
- config->timestamp = rep.newTimestamp;
- config->screen = ScreenOfDisplay (dpy, XRRRootToScreen(dpy, rep.root));
- config->current_size = size_index;
- config->current_rotation = rotation;
- }
- UnlockDisplay (dpy);
- SyncHandle ();
- return(rep.status);
-}
-
-Status XRRSetScreenConfig (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation, Time timestamp)
-{
- return XRRSetScreenConfigAndRate (dpy, config, draw, size_index,
- rotation, 0, timestamp);
-}
-
-int XRRUpdateConfiguration(XEvent *event)
-{
- XRRScreenChangeNotifyEvent *scevent;
- XConfigureEvent *rcevent;
- Display *dpy = event->xany.display;
- XExtDisplayInfo *info;
- XRandRInfo *xrri;
- int snum;
-
- /* first, see if it is a vanilla configure notify event */
- if (event->type == ConfigureNotify) {
- rcevent = (XConfigureEvent *) event;
- snum = XRRRootToScreen(dpy, rcevent->window);
- dpy->screens[snum].width = rcevent->width;
- dpy->screens[snum].height = rcevent->height;
- return 1;
- }
-
- info = XRRFindDisplay(dpy);
- RRCheckExtension (dpy, info, 0);
-
- switch (event->type - info->codes->first_event) {
- case RRScreenChangeNotify:
- scevent = (XRRScreenChangeNotifyEvent *) event;
- snum = XRRRootToScreen(dpy,
- ((XRRScreenChangeNotifyEvent *) event)->root);
- dpy->screens[snum].width = scevent->width;
- dpy->screens[snum].height = scevent->height;
- dpy->screens[snum].mwidth = scevent->mwidth;
- dpy->screens[snum].mheight = scevent->mheight;
- XRenderSetSubpixelOrder (dpy, snum, scevent->subpixel_order);
- break;
- default:
- return 0;
- }
- xrri = (XRandRInfo *) info->data;
- /*
- * so the next time someone wants some data, it will be fetched;
- * it might be better to force the round trip immediately, but
- * I dislike pounding the server simultaneously when not necessary
- */
- if (xrri->config[snum] != NULL) {
- XFree (xrri->config[snum]);
- xrri->config[snum] = NULL;
- }
- return 1;
-}
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXxrandr.h b/nx-X11/programs/Xserver/hw/nxagent/NXxrandr.h
deleted file mode 100644
index 160dc6517..000000000
--- a/nx-X11/programs/Xserver/hw/nxagent/NXxrandr.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NXAGENT, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-/*
- * $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $
- *
- * Copyright © 2000 Compaq Computer Corporation, Inc.
- * Copyright © 2002 Hewlett-Packard Company, 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 Compaq not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
- * 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.
- *
- * Author: Jim Gettys, HP Labs, HP.
- */
-
-#ifndef _XRANDR_H_
-#define _XRANDR_H_
-
-#include <X11/extensions/randr.h>
-
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-
-typedef struct {
- int width, height;
- int mwidth, mheight;
-} XRRScreenSize;
-
-/*
- * Events.
- */
-
-typedef struct {
- int type; /* event base */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window which selected for this event */
- Window root; /* Root window for changed screen */
- Time timestamp; /* when the screen change occurred */
- Time config_timestamp; /* when the last configuration change */
- SizeID size_index;
- SubpixelOrder subpixel_order;
- Rotation rotation;
- int width;
- int height;
- int mwidth;
- int mheight;
-} XRRScreenChangeNotifyEvent;
-
-
-/* internal representation is private to the library */
-typedef struct _XRRScreenConfiguration XRRScreenConfiguration;
-
-Bool XRRQueryExtension (Display *dpy, int *event_basep, int *error_basep);
-Status XRRQueryVersion (Display *dpy,
- int *major_versionp,
- int *minor_versionp);
-
-XRRScreenConfiguration *XRRGetScreenInfo (Display *dpy,
- Drawable draw);
-
-void XRRFreeScreenConfigInfo (XRRScreenConfiguration *config);
-
-/*
- * Note that screen configuration changes are only permitted if the client can
- * prove it has up to date configuration information. We are trying to
- * insist that it become possible for screens to change dynamically, so
- * we want to ensure the client knows what it is talking about when requesting
- * changes.
- */
-Status XRRSetScreenConfig (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation,
- Time timestamp);
-
-/* added in v1.1, sorry for the lame name */
-Status XRRSetScreenConfigAndRate (Display *dpy,
- XRRScreenConfiguration *config,
- Drawable draw,
- int size_index,
- Rotation rotation,
- short rate,
- Time timestamp);
-
-
-Rotation XRRConfigRotations(XRRScreenConfiguration *config, Rotation *current_rotation);
-
-Time XRRConfigTimes (XRRScreenConfiguration *config, Time *config_timestamp);
-
-XRRScreenSize *XRRConfigSizes(XRRScreenConfiguration *config, int *nsizes);
-
-short *XRRConfigRates (XRRScreenConfiguration *config, int sizeID, int *nrates);
-
-SizeID XRRConfigCurrentConfiguration (XRRScreenConfiguration *config,
- Rotation *rotation);
-
-short XRRConfigCurrentRate (XRRScreenConfiguration *config);
-
-int XRRRootToScreen(Display *dpy, Window root);
-
-/*
- * returns the screen configuration for the specified screen; does a lazy
- * evalution to delay getting the information, and caches the result.
- * These routines should be used in preference to XRRGetScreenInfo
- * to avoid unneeded round trips to the X server. These are new
- * in protocol version 0.1.
- */
-
-
-XRRScreenConfiguration *XRRScreenConfig(Display *dpy, int screen);
-XRRScreenConfiguration *XRRConfig(Screen *screen);
-void XRRSelectInput(Display *dpy, Window window, int mask);
-
-/*
- * the following are always safe to call, even if RandR is not implemented
- * on a screen
- */
-
-
-Rotation XRRRotations(Display *dpy, int screen, Rotation *current_rotation);
-XRRScreenSize *XRRSizes(Display *dpy, int screen, int *nsizes);
-short *XRRRates (Display *dpy, int screen, int sizeID, int *nrates);
-Time XRRTimes (Display *dpy, int screen, Time *config_timestamp);
-
-
-/*
- * intended to take RRScreenChangeNotify, or
- * ConfigureNotify (on the root window)
- * returns 1 if it is an event type it understands, 0 if not
- */
-int XRRUpdateConfiguration(XEvent *event);
-
-_XFUNCPROTOEND
-
-#endif /* _XRANDR_H_ */
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXxrandrint.h b/nx-X11/programs/Xserver/hw/nxagent/NXxrandrint.h
deleted file mode 100644
index 97ae77e29..000000000
--- a/nx-X11/programs/Xserver/hw/nxagent/NXxrandrint.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */
-/* */
-/* NXAGENT, NX protocol compression and NX extensions to this software */
-/* are copyright of NoMachine. Redistribution and use of the present */
-/* software is allowed according to terms specified in the file LICENSE */
-/* which comes in the source distribution. */
-/* */
-/* Check http://www.nomachine.com/licensing.html for applicability. */
-/* */
-/* NX and NoMachine are trademarks of Medialogic S.p.A. */
-/* */
-/* All rights reserved. */
-/* */
-/**************************************************************************/
-
-/*
- * $XFree86: xc/lib/Xrandr/Xrandrint.h,v 1.2 2001/06/07 15:33:43 keithp Exp $
- *
- *
- * Copyright © 2000, Compaq Computer Corporation,
- * Copyright © 2002, Hewlett Packard, 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 Compaq or HP not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. HP makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
- * 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.
- *
- * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
- */
-
-#ifndef _XRANDRINT_H_
-#define _XRANDRINT_H_
-
-#define NEED_EVENTS
-#define NEED_REPLIES
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
-#include <X11/extensions/randr.h>
-#include <X11/extensions/randrproto.h>
-#include "NXxrandr.h"
-
-extern XExtensionInfo XrandrExtensionInfo;
-extern char XrandrExtensionName[];
-
-#define RRCheckExtension(dpy,i,val) \
- XextCheckExtension (dpy, i, XRRExtensionName, val)
-#define RRSimpleCheckExtension(dpy,i) \
- XextSimpleCheckExtension (dpy, i, XRRExtensionName)
-
-XExtDisplayInfo *XRRFindDisplay (Display *dpy);
-
-
-/* deliberately opaque internal data structure; can be extended,
- but not reordered */
-struct _XRRScreenConfiguration {
- Screen *screen; /* the root window in GetScreenInfo */
- XRRScreenSize *sizes;
- Rotation rotations;
- Rotation current_rotation;
- int nsizes;
- int current_size;
- short current_rate;
- Time timestamp;
- Time config_timestamp;
- int subpixel_order; /* introduced in randr v0.1 */
- short *rates; /* introduced in randr v1.1 */
- int nrates;
-};
-
-/*
- * if a configure notify on the root is recieved, or
- * an XRRScreenChangeNotify is recieved,
- * XRRUpdateConfiguration should be called to update the X library's
- * view of the screen configuration; it will also invalidate the cache
- * provided by XRRScreenConfig and XRRConfig, and force a round trip
- * when next used. Returns invalid status if not an event type
- * the library routine understand.
- */
-
-/* we cache one screen configuration/screen */
-
-typedef struct _XRandRInfo {
- XRRScreenConfiguration **config;
- int major_version, minor_version; /* major_version = -1 means we don't know */
- Bool has_rates; /* Server supports refresh rates */
-} XRandRInfo;
-
-#endif /* _XRANDRINT_H_ */
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
index d0608a900..37296e80f 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
@@ -77,7 +77,7 @@ is" without express or implied warranty.
#include "Shadow.h"
#include "Utils.h"
-#include "Xrandr.h"
+#include <X11/extensions/Xrandr.h>
#define GC XlibGC
#define Font XlibFont
diff --git a/nx-libs.spec b/nx-libs.spec
index 9e8a16e4e..327e59e24 100644
--- a/nx-libs.spec
+++ b/nx-libs.spec
@@ -35,6 +35,7 @@ BuildRequires: pkgconfig(xpm)
BuildRequires: pkgconfig(xfont)
BuildRequires: pkgconfig(xdmcp)
BuildRequires: pkgconfig(xdamage)
+BuildRequires: pkgconfig(xrandr)
%else
BuildRequires: libexpat-devel
BuildRequires: libpng-devel
@@ -45,6 +46,7 @@ BuildRequires: xorg-x11-libXpm-devel
BuildRequires: xorg-x11-libXfont-devel
BuildRequires: xorg-x11-libXdmcp-devel
BuildRequires: xorg-x11-libXdamage-devel
+BuildRequires: xorg-x11-libXrandr-devel
%endif
BuildRequires: xorg-x11-util-devel
%endif
@@ -56,6 +58,7 @@ BuildRequires: libxml2-devel
BuildRequires: libXfont-devel
BuildRequires: libXdmcp-devel
BuildRequires: libXdamage-devel
+BuildRequires: libXrandr-devel
%endif
# For imake
@@ -301,22 +304,6 @@ multi-headed X applications and window managers to use two or more
physical displays as one large virtual display.
-%package -n libNX_Xrandr2
-Group: System Environment/Libraries
-Summary: NX Resize, Rotate and Reflection extension library
-Requires: %{name}%{?_isa} >= 3.5.0.29
-Obsoletes: libNX_Xrandr
-
-%description -n libNX_Xrandr2
-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 X Resize, Rotate and Reflect Extension (RandR) allows clients to
-dynamically change X screens, so as to resize, to change the
-orientation and layout of the root window of a screen.
-
-
%package -n libNX_Xrender-devel
Group: Development/Libraries
Summary: Development files for the NX Render Extension library
@@ -647,7 +634,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%post -n libNX_Xext6 -p /sbin/ldconfig
%post -n libNX_Xfixes3 -p /sbin/ldconfig
%post -n libNX_Xinerama1 -p /sbin/ldconfig
-%post -n libNX_Xrandr2 -p /sbin/ldconfig
%post -n libNX_Xrender1 -p /sbin/ldconfig
%post -n libNX_Xtst6 -p /sbin/ldconfig
%post -n libXcomp3 -p /sbin/ldconfig
@@ -660,7 +646,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%postun -n libNX_Xext6 -p /sbin/ldconfig
%postun -n libNX_Xfixes3 -p /sbin/ldconfig
%postun -n libNX_Xinerama1 -p /sbin/ldconfig
-%postun -n libNX_Xrandr2 -p /sbin/ldconfig
%postun -n libNX_Xrender1 -p /sbin/ldconfig
%postun -n libNX_Xtst6 -p /sbin/ldconfig
%postun -n libXcomp3 -p /sbin/ldconfig
@@ -762,10 +747,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%defattr(-,root,root)
%{_libdir}/libNX_Xinerama.so.1*
-%files -n libNX_Xrandr2
-%defattr(-,root,root)
-%{_libdir}/libNX_Xrandr.so.2*
-
%files -n libNX_Xrender-devel
%defattr(-,root,root)
%{_libdir}/libNX_Xrender.so
@@ -833,7 +814,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%defattr(-,root,root)
%{_libdir}/libNX_Xcomposite.so
%{_libdir}/libNX_Xinerama.so
-%{_libdir}/libNX_Xrandr.so
%{_libdir}/libNX_Xtst.so
%{_includedir}/nx/X11/X10.h
%dir %{_includedir}/nx/X11/extensions
@@ -842,7 +822,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%{_includedir}/nx/X11/extensions/Xcomposite.h
%{_includedir}/nx/X11/extensions/Xevie.h
%{_includedir}/nx/X11/extensions/Xinerama.h
-%{_includedir}/nx/X11/extensions/Xrandr.h
%{_includedir}/nx/X11/extensions/lbxbuf.h
%{_includedir}/nx/X11/extensions/lbxbufstr.h
%{_includedir}/nx/X11/extensions/lbxdeltastr.h
@@ -890,8 +869,6 @@ ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/X
%{_includedir}/nx/X11/extensions/composite.h
%{_includedir}/nx/X11/extensions/compositeproto.h
%{_includedir}/nx/X11/extensions/panoramiXproto.h
-%{_includedir}/nx/X11/extensions/randr.h
-%{_includedir}/nx/X11/extensions/randrproto.h
%{_includedir}/nx/X11/extensions/recordstr.h
%{_includedir}/nx/X11/extensions/render.h
%{_includedir}/nx/X11/extensions/renderproto.h
diff --git a/nxcomp/Agent.h b/nxcomp/Agent.h
index ded344d84..2c5badf53 100644
--- a/nxcomp/Agent.h
+++ b/nxcomp/Agent.h
@@ -217,7 +217,7 @@ class Agent
#if defined(TEST) || defined(INFO)
*logofs << "Agent: proxyCanRead() is "
- << ((int) FD_ISSET(proxy -> getFd(), &readWorkSet)
+ << ((int) FD_ISSET(proxy -> getFd(), &readWorkSet))
<< ".\n" << logofs_flush;
#endif
diff --git a/nxcomp/ClearArea.cpp b/nxcomp/ClearArea.cpp
index 223a3b3e1..83b728158 100644
--- a/nxcomp/ClearArea.cpp
+++ b/nxcomp/ClearArea.cpp
@@ -92,7 +92,7 @@ void ClearAreaStore::dumpIdentity(const Message *message) const
ClearAreaMessage *clearArea = (ClearAreaMessage *) message;
- *logofs << name() << ": Identity exposures " << clearArea -> (unsigned int) exposures
+ *logofs << name() << ": Identity exposures " << (unsigned int) clearArea -> exposures
<< ", window " << clearArea -> window << ", x " << clearArea -> x
<< ", y " << clearArea -> y << ", width " << clearArea -> width
<< ", height " << clearArea -> height << ", size " << clearArea -> size_
diff --git a/nxcomp/Loop.cpp b/nxcomp/Loop.cpp
index 7bc154f36..f25aed353 100644
--- a/nxcomp/Loop.cpp
+++ b/nxcomp/Loop.cpp
@@ -1311,6 +1311,11 @@ void NXTransCleanup()
HandleCleanup();
}
+void NXTransCleanupForReconnect()
+{
+ HandleCleanupForReconnect();
+}
+
//
// Check the parameters for subsequent
// initialization of the NX transport.
@@ -4873,6 +4878,28 @@ int StartKeeper()
return 1;
}
+void HandleCleanupForReconnect()
+{
+ #ifdef TEST
+ *logofs << "Loop: Going to clean up system resources for Reconnect "
+ << "in process '" << getpid() << "'.\n"
+ << logofs_flush;
+ #endif
+ handleTerminatedInLoop();
+ DisableSignals();
+ if (control)
+ CleanupChildren();
+ CleanupListeners();
+ CleanupSockets();
+ CleanupKeeper();
+ CleanupStreams();
+ CleanupLocal();
+ CleanupGlobal();
+ RestoreSignals();
+ ServerCache::lastInitReply.set(0,NULL);
+ ServerCache::lastKeymap.set(0,NULL);
+ ServerCache::getKeyboardMappingLastMap.set(0,NULL);
+}
void HandleCleanup(int code)
{
#ifdef TEST
diff --git a/nxcomp/Misc.h b/nxcomp/Misc.h
index 21a503082..0cc396933 100644
--- a/nxcomp/Misc.h
+++ b/nxcomp/Misc.h
@@ -140,6 +140,7 @@ void HandleShutdown() __attribute__((noreturn));
extern "C"
{
void HandleCleanup(int code = 0) __attribute__((noreturn));
+ void HandleCleanupForReconnect();
}
//
diff --git a/nxcomp/NX.h b/nxcomp/NX.h
index 2dbf68662..0e4734e5f 100644
--- a/nxcomp/NX.h
+++ b/nxcomp/NX.h
@@ -442,6 +442,14 @@ extern int NXTransParseEnvironment(const char *env, int force);
extern void NXTransCleanup(void) __attribute__((noreturn));
+/*
+ * Cleans up the global and local state
+ * (the same way as NXTransCleanup does)
+ * but does not exit the process
+ * Needed for IOS platform
+ */
+extern void NXTransCleanupForReconnect(void);
+
extern const char* NXVersion();
extern int NXMajorVersion();
extern int NXMinorVersion();
diff --git a/nxcomp/Proxy.cpp b/nxcomp/Proxy.cpp
index 9b38661b4..4eb99cf45 100644
--- a/nxcomp/Proxy.cpp
+++ b/nxcomp/Proxy.cpp
@@ -5176,7 +5176,7 @@ char *Proxy::handleSaveAllStores(const char *savePath) const
*(cacheDumpName + DEFAULT_STRING_LENGTH - 1) = '\0';
- mode_t fileMode = umask(0077);
+ fileMode = umask(0077);
cacheDump = new ofstream(cacheDumpName, ios::out);
diff --git a/nxcompshad/Makefile.in b/nxcompshad/Makefile.in
index 1480e5ea8..3e5c33a22 100644
--- a/nxcompshad/Makefile.in
+++ b/nxcompshad/Makefile.in
@@ -148,7 +148,7 @@ all: depend $(LIBARCHIVE) $(LIBDLL)
else
-EXTRALIBS = -lNX_Xext -lNX_Xtst -lNX_Xrandr -lXdamage
+EXTRALIBS = -lNX_Xext -lNX_Xtst -lXrandr -lXdamage
all: depend $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE)