[Xprint] Unified video/print Xserver...
Roland Mainz
roland.mainz at nrubsig.org
Sun Oct 17 03:07:04 EDT 2004
Hi!
----
We are currently investigating whether it's usefull to make an unified
video+print Xserver (HP-UX has such a unified Xserver since a long
time).
Attached is a small patch which demonstrates how such a unified
video/print server would look like...
* Known bugs:
- DAMAGE needs to be turned off (otherwise a SIGSEGV follows)
- Spooling print jobs seems to be broken somehow, e.g. only
print-to-file works
- Xprint-specific options are not listed in the usage output
* Known limitations (these limitations only apply when both vdeio and
print screens are acive at the same time. If video and print server are
seperate processes on seperate display ids then there is no problem...):
- Xinerama won't be usefull (and won't work as the visuals of the print
DDX are likely very different from the video DDX) unless Xinerama starts
to support the combining of multiple physical screens to multiple
logical screens
- RENDER disables itself as the print DDX do not have the
prerequirements (available depths etc.) and do not implement RENDER
- RANDR is useless (unless there is a way to select only a single screen
in RANDR, I didn't check that)
* Usage (on SuSE Linux 8.2):
1. Checkout tree
2. Create xc/config/cf/host.def with the following lines:
-- snip --
#define HasFreetype2 NO
#undef OptimizedCDebugFlags
#define OptimizedCDebugFlags -g -DDEBUG_$(LOGNAME)
#define DoLoadableServer NO
#define PrintOnlyServer NO
#define BuildServersOnly YES
-- snip --
3. Apply the patch
4. % make World 2>&1 | tee -a buildlog.log
5. Run Xorg server with
% (XPCONFIGDIR=/tmp/xptestinstall001/usr/X11R6/lib/X11/xserver gdb
--args ./Xorg -dumbSched -dpms -audit 4 -pn -extension DAMAGE :2) # (you
need a Xprint config in
/tmp/xptestinstall001/usr/X11R6/lib/X11/xserver/).
Comments/suggestions/etc. welcome...
----
Bye,
Roland
--
__ . . __
(o.\ \/ /.o) roland.mainz at nrubsig.org
\__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer
/O /==\ O\ TEL +49 641 7950090
(;O/ \/ \O;)
-------------- next part --------------
Index: xc/programs/Xserver/dix/main.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/dix/main.c,v
retrieving revision 1.4
diff -u -2 -0 -r1.4 main.c
--- xc/programs/Xserver/dix/main.c 18 Sep 2004 23:18:35 -0000 1.4
+++ xc/programs/Xserver/dix/main.c 16 Oct 2004 23:40:19 -0000
@@ -234,41 +234,46 @@
~0, ~0, ~0, ~0,
~0, ~0, ~0, ~0,
~0, ~0, ~0, ~0,
~0, ~0, ~0, ~0,
3 /* 64 bits per scanline pad unit */
};
#ifndef MIN
#define MIN(a,b) (((a) < (b)) ? (a) : (b))
#endif
int
main(int argc, char *argv[], char *envp[])
{
int i, j, k, error;
char *xauthfile;
HWEventQueueType alwaysCheckForInput[2];
display = "0";
+#define UNIFIED_XPRINT_SERVER 1
InitGlobals();
+#ifdef UNIFIED_XPRINT_SERVER
+ XprintInitGlobals();
+#endif
+
/* Quartz support on Mac OS X requires that the Cocoa event loop be in
* the main thread. This allows the X server main to be called again
* from another thread. */
#if defined(__DARWIN__) && defined(DARWIN_WITH_QUARTZ)
DarwinHandleGUI(argc, argv, envp);
#endif
/* Notice if we're restarted. Probably this is because we jumped through
* an uninitialized pointer */
if (restart)
FatalError("server restarted. Jumped through uninitialized pointer?\n");
else
restart = 1;
CheckUserParameters(argc, argv, envp);
CheckUserAuthorization();
#ifdef COMMANDLINE_CHALLENGED_OPERATING_SYSTEMS
More information about the Xprint
mailing list