summaryrefslogtreecommitdiffstats
path: root/unix/xserver15.patch
blob: 7d8c94be86a69b2b006f256b0d380534d9be473a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
diff -up xserver/configure.ac.vnc xserver/configure.ac
--- xserver/configure.ac.vnc	2011-05-11 11:02:51.229669941 +0200
+++ xserver/configure.ac	2011-05-11 11:03:07.754072695 +0200
@@ -31,7 +31,7 @@ RELEASE_DATE="5 November 2008"
 REMEMBER_REMEMBER="The Fifth of November"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([dist-bzip2 foreign])
-AM_MAINTAINER_MODE
+m4_pattern_allow([AC_DEFINE])
 
 dnl this gets generated by autoheader, and thus contains all the defines.  we
 dnl don't ever actually use it, internally.
@@ -54,6 +54,7 @@ dnl kdrive-config.h covers the kdrive DD
 AC_CONFIG_HEADERS(include/kdrive-config.h)
 
 AC_PROG_CC
+AC_PROG_CXX
 AM_PROG_AS
 AC_PROG_INSTALL
 AC_PROG_LN_S
@@ -1010,7 +1011,7 @@ AC_DEFINE(SHAPE, 1, [Support SHAPE exten
 
 AC_DEFINE(XKB, 1, [Build XKB])
 AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
-AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
+AC_DEFINE(XKB_DFLT_DISABLED, 1, [Disable XKB per default])
 REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
 XKB_LIB='$(top_builddir)/xkb/libxkb.la'
 XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
@@ -1220,6 +1221,9 @@ if test "x$XVFB" = xyes; then
 	AC_SUBST([XVFB_SYS_LIBS])
 fi
 
+dnl Xvnc DDX
+AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XEXT_INC $FB_INC $MI_INC $RENDER_INC $RANDR_INC"])
+AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB"])
 
 dnl Xnest DDX
 
@@ -1314,6 +1318,8 @@ xorg_bus_ppcpci=no
 xorg_bus_sparcpci=no
 xorg_bus_sparc=no
 
+AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+
 if test "x$XORG" = xyes -o "x$XGL" = xyes; then
 	XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
 	XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
@@ -1521,7 +1527,6 @@ if test "x$XORG" = xyes -o "x$XGL" = xye
 	AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
 	AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
 	AC_DEFINE(XFree86LOADER, 1, [Building loadable XFree86 server])
-	AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
 	AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
 	AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
 	AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
@@ -2184,6 +2189,7 @@ hw/dmx/input/Makefile
 hw/dmx/glxProxy/Makefile
 hw/dmx/Makefile
 hw/vfb/Makefile
+hw/vnc/Makefile
 hw/xgl/Makefile
 hw/xgl/egl/Makefile
 hw/xgl/egl/module/Makefile
diff -up xserver/hw/Makefile.am.vnc xserver/hw/Makefile.am
--- xserver/hw/Makefile.am.vnc	2011-05-11 11:02:51.809648976 +0200
+++ xserver/hw/Makefile.am	2011-05-11 11:03:07.754072695 +0200
@@ -43,7 +43,8 @@ SUBDIRS =			\
 	$(DMX_SUBDIRS)		\
 	$(KDRIVE_SUBDIRS)	\
 	$(XQUARTZ_SUBDIRS)	\
-	$(XPRINT_SUBDIRS)
+	$(XPRINT_SUBDIRS)	\
+	vnc
 
 DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xgl xprint
 
diff -up xserver/mi/miinitext.c.vnc xserver/mi/miinitext.c
--- xserver/mi/miinitext.c.vnc	2011-05-11 11:02:53.156600294 +0200
+++ xserver/mi/miinitext.c	2011-05-11 11:03:31.079229673 +0200
@@ -292,6 +292,9 @@ extern void BigReqExtensionInit(INITARGS
 #ifdef MITMISC
 extern void MITMiscExtensionInit(INITARGS);
 #endif
+#ifdef TIGERVNC
+extern void vncExtensionInit(INITARGS);
+#endif
 #ifdef XIDLE
 extern void XIdleExtensionInit(INITARGS);
 #endif
@@ -566,6 +569,9 @@ InitExtensions(argc, argv)
 #ifdef MITMISC
     if (!noMITMiscExtension) MITMiscExtensionInit();
 #endif
+#ifdef TIGERVNC
+    vncExtensionInit();
+#endif
 #ifdef XIDLE
     if (!noXIdleExtension) XIdleExtensionInit();
 #endif
--- xserver/os/WaitFor.c.orig	2011-10-07 12:57:57.000000000 +0200
+++ xserver/os/WaitFor.c	2011-10-07 13:21:11.000000000 +0200
@@ -125,6 +125,9 @@
 static void CheckAllTimers(void);
 static OsTimerPtr timers = NULL;
 
+extern void vncWriteBlockHandler(fd_set *fds);
+extern void vncWriteWakeupHandler(int nfds, fd_set *fds);
+
 /*****************
  * WaitForSomething:
  *     Make the server suspend until there is
@@ -150,6 +153,7 @@
     INT32 timeout = 0;
     fd_set clientsReadable;
     fd_set clientsWritable;
+    fd_set socketsWritable;
     int curclient;
     int selecterr;
     int nready;
@@ -220,23 +224,29 @@
 	SmartScheduleStopTimer ();
 
 #endif
+	FD_ZERO(&socketsWritable);
+	vncWriteBlockHandler(&socketsWritable);
 	BlockHandler((pointer)&wt, (pointer)&LastSelectMask);
 	if (NewOutputPending)
 	    FlushAllOutput();
 	/* keep this check close to select() call to minimize race */
 	if (dispatchException)
 	    i = -1;
-	else if (AnyClientsWriteBlocked)
-	{
-	    XFD_COPYSET(&ClientsWriteBlocked, &clientsWritable);
-	    i = Select (MaxClients, &LastSelectMask, &clientsWritable, NULL, wt);
-	}
-	else 
-	{
-	    i = Select (MaxClients, &LastSelectMask, NULL, NULL, wt);
+	else {
+	    if (AnyClientsWriteBlocked)
+		XFD_ORSET(&socketsWritable, &ClientsWriteBlocked, &socketsWritable);
+
+	    if (XFD_ANYSET(&socketsWritable)) {
+		i = Select (MaxClients, &LastSelectMask, &socketsWritable, NULL, wt);
+		if (AnyClientsWriteBlocked)
+		    XFD_ANDSET(&clientsWritable, &socketsWritable, &ClientsWriteBlocked);
+	    } else {
+		i = Select (MaxClients, &LastSelectMask, NULL, NULL, wt);
+	    }
 	}
 	selecterr = GetErrno();
 	WakeupHandler(i, (pointer)&LastSelectMask);
+	vncWriteWakeupHandler(i, &socketsWritable);
 #ifdef SMART_SCHEDULE
 	SmartScheduleStartTimer ();
 #endif