Bugtraq Bug id: 15493867 

--- a/include/X11/extensions/Print.h	2004-04-23 11:43:06.000000000 -0700
+++ b/include/X11/extensions/Print.h.new	2008-09-03 13:04:25.259850000 -0700
@@ -88,12 +88,13 @@
  */
 #define XP_DONT_CHECK		0
 #define XP_INITIAL_RELEASE	1
+#define XP_SECOND_RELEASE	2
 
 /*
  * For each single entry above, create one major/minor pair.
  */
 #define XP_PROTO_MAJOR		1
-#define XP_PROTO_MINOR		0
+#define XP_PROTO_MINOR		1
 
 /*
  * Identify current version.
@@ -356,6 +357,18 @@
     XRectangle		*reproducible_area	/* return value */
 );
 
+#ifdef SUNSOFT
+extern Bool XpClientDPI_SUNW (
+    Display		*display,
+    int			clientDPI
+);
+#endif
+
+extern Bool XpClientDPI (
+    Display		*display,
+    int			clientDPI
+);
+
 extern void XpStartJob (
     Display		*display,
     XPSaveData		save_data
--- a/include/X11/extensions/Printstr.h	2005-07-25 09:15:05.000000000 -0700
+++ b/include/X11/extensions/Printstr.h.new	2008-09-03 13:26:27.277787000 -0700
@@ -108,6 +108,7 @@
 #define X_PrintQueryScreens		22
 #define X_PrintSetImageResolution	23
 #define X_PrintGetImageResolution	24
+#define X_PrintClientDpi		25
 
 /********************************************************************
  *
@@ -653,6 +654,30 @@
 } xPrintGetImageResolutionReply;
 #define sz_xPrintGetImageResolutionReply 32
 
+typedef struct _PrintClientDpi {
+	CARD8	reqType;		/* always PrintReqCode */
+	CARD8	printReqType;		/* always X_PrintClientDpi */
+	CARD16	length B16;
+	PCONTEXT printContext B32;	/* print context */
+	CARD16  clientDPI B16;
+	CARD16	pad1 B16;
+} xPrintClientDpiReq;
+#define sz_xPrintClientDpiReq		12
+
+typedef struct {
+	BYTE	type;			/* X_Reply */
+	CARD8	status;			/* accepted or not */
+	CARD16	sequenceNumber B16;
+	CARD32	length B32;
+	CARD32	pad1 B32;
+	CARD32	pad2 B32;
+	CARD32	pad3 B32;
+	CARD32	pad4 B32;
+	CARD32	pad5 B32;
+	CARD32	pad6 B32;
+} xPrintClientDpiReply;
+#define sz_xPrintClientDpiReply		32
+
 #ifndef _XP_PRINT_SERVER_
 /***********************************************************************
  *
@@ -776,6 +801,26 @@
 extern void XpUnsetFontResFunc(ClientPtr);
 extern void XpRegisterInitFunc(ScreenPtr, char *, int (*)(struct _XpContext *));
 
+typedef struct _XpClientFonts {
+	struct _XpClientFonts *pNext;
+	int 		client_fid;
+	int 		server_fid;
+	FontPtr			client_font;
+	FontPtr			server_font;
+} XpClientFontsRec, *XpClientFontsPtr;
+
+typedef struct _XpClientDPI {
+        struct _XpClientDPI   *pNext;
+        struct _XpClientDPI   *pPrev;
+	struct _XpClientFonts *head;
+        int                    client_dpi;
+        float                  scale_factor;
+	int		       clientAsMask;
+        XpContextPtr           context;
+	int		       client_x;
+	int                    server_x;
+} XpClientDPIRec, *XpClientDPIPtr;
+
 #endif /* _XP_PRINT_SERVER_ */
 
 _XFUNCPROTOEND