aboutsummaryrefslogtreecommitdiff
path: root/doc/nx-X11_vs_XOrg69_patches/NXmiglyph.c.NX.patch
diff options
context:
space:
mode:
Diffstat (limited to 'doc/nx-X11_vs_XOrg69_patches/NXmiglyph.c.NX.patch')
-rw-r--r--doc/nx-X11_vs_XOrg69_patches/NXmiglyph.c.NX.patch156
1 files changed, 156 insertions, 0 deletions
diff --git a/doc/nx-X11_vs_XOrg69_patches/NXmiglyph.c.NX.patch b/doc/nx-X11_vs_XOrg69_patches/NXmiglyph.c.NX.patch
new file mode 100644
index 000000000..37b68d613
--- /dev/null
+++ b/doc/nx-X11_vs_XOrg69_patches/NXmiglyph.c.NX.patch
@@ -0,0 +1,156 @@
+--- ./nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c.X.original 2015-02-13 14:03:44.744441510 +0100
++++ ./nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c 2015-02-10 19:13:13.804685886 +0100
+@@ -1,3 +1,20 @@
++/**************************************************************************/
++/* */
++/* 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/programs/Xserver/render/miglyph.c,v 1.4 2000/11/20 07:13:13 keithp Exp $
+ *
+@@ -35,6 +52,12 @@
+ #include "picturestr.h"
+ #include "mipict.h"
+
++#ifdef NXAGENT_SERVER
++
++#include "Render.h"
++
++#endif
++
+ void
+ miGlyphExtents (int nlist,
+ GlyphListPtr list,
+@@ -45,7 +68,7 @@
+ int n;
+ GlyphPtr glyph;
+ int x, y;
+-
++
+ x = 0;
+ y = 0;
+ extents->x1 = MAXSHORT;
+@@ -113,25 +136,58 @@
+ int error;
+ BoxRec extents;
+ CARD32 component_alpha;
+-
++
++ #ifdef NXAGENT_SERVER
++
++ /*
++ * Get rid of the warning.
++ */
++
++ extents.x1 = 0;
++ extents.y1 = 0;
++
++ #endif
++
+ if (maskFormat)
+ {
+ GCPtr pGC;
+ xRectangle rect;
+-
+- miGlyphExtents (nlist, list, glyphs, &extents);
+-
++
++ #ifdef NXAGENT_SERVER
++
++ if (nxagentGlyphsExtents != NullBox)
++ {
++ memcpy(&extents, nxagentGlyphsExtents, sizeof(BoxRec));
++ }
++ else
++ {
++ nxagentGlyphsExtents = (BoxPtr) xalloc(sizeof(BoxRec));
++
++ miGlyphExtents (nlist, list, glyphs, &extents);
++
++ memcpy(nxagentGlyphsExtents, &extents, sizeof(BoxRec));
++ }
++
++ #else
++
++ miGlyphExtents (nlist, list, glyphs, &extents);
++
++ #endif
++
+ if (extents.x2 <= extents.x1 || extents.y2 <= extents.y1)
+ return;
+ width = extents.x2 - extents.x1;
+ height = extents.y2 - extents.y1;
+ pMaskPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, maskFormat->depth);
++
+ if (!pMaskPixmap)
+ return;
++
+ component_alpha = NeedsComponent(maskFormat->format);
+ pMask = CreatePicture (0, &pMaskPixmap->drawable,
+ maskFormat, CPComponentAlpha, &component_alpha,
+ serverClient, &error);
++
+ if (!pMask)
+ {
+ (*pScreen->DestroyPixmap) (pMaskPixmap);
+@@ -160,6 +216,7 @@
+ x += list->xOff;
+ y += list->yOff;
+ n = list->len;
++
+ while (n--)
+ {
+ glyph = *glyphs++;
+@@ -184,6 +241,21 @@
+ (*pScreen->ModifyPixmapHeader) (pPixmap,
+ glyph->info.width, glyph->info.height,
+ 0, 0, -1, (pointer) (glyph + 1));
++
++ #ifdef NXAGENT_SERVER
++
++ /*
++ * The following line fixes a problem with glyphs that appeared
++ * as clipped. It was a side effect due the validate function
++ * "ValidatePicture" that makes a check on the Drawable serial
++ * number instead of the picture serial number, failing thus
++ * the clip mask update.
++ */
++
++ pPicture->pDrawable->serialNumber = NEXT_SERIAL_NUMBER;
++
++ #endif
++
+ pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
+ if (maskFormat)
+ {
+@@ -215,6 +287,7 @@
+ x += glyph->info.xOff;
+ y += glyph->info.yOff;
+ }
++
+ list++;
+ if (pPicture)
+ {
+@@ -237,7 +310,9 @@
+ 0, 0,
+ x, y,
+ width, height);
++
+ FreePicture ((pointer) pMask, (XID) 0);
+ (*pScreen->DestroyPixmap) (pMaskPixmap);
+ }
++
+ }