[X2go-Commits] nx-libs.git - build-main (branch) updated: redist-server/3.5.0.13
X2Go dev team
git-admin at x2go.org
Fri May 11 23:54:24 CEST 2012
The branch, build-main has been updated
via 789c758510fc661b9d1a297ff5284962c5e944f0 (commit)
via 3511e8791bd03a3e54384bdfd19e145efb4a136b (commit)
via 45311f783acad296d37a248fb2c702c578ac3059 (commit)
via 4372dfa53207a3247b8c317392f2672191b54fdf (commit)
via fc87c4fbb2a2ce73c56be8fe59bcad05df359d4e (commit)
via ab04ba2175ce37efb83d914792d2755b57cba2d5 (commit)
via 30110dd4a80fb38e670296ad4fcbd43c2a4f184e (commit)
from 1b1a26ae66725db1d8e8a3b3b5b3f755457f5068 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
debian/changelog | 11 +
debian/control | 1 +
...agent_libcairo-null-source-drawables.full.patch | 193 ++++++++++++++++++++
debian/patches/series | 1 +
4 files changed, 206 insertions(+), 0 deletions(-)
create mode 100644 debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch
The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index d1c14d8..a5c0844 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+nx-libs (2:3.5.0.13-0) unstable; urgency=low
+
+ [ Mike Gabriel ]
+ * Let nxagent Debian package depend on xfonts-base.
+
+ [ Jim Burnes ]
+ * Add patch: 120_nxagent_libcairo-null-source-drawables.full.patch, solves
+ crashes of GTK applications based on libcairo 1.12.1+.
+
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de> Fri, 11 May 2012 23:51:35 +0200
+
nx-libs (2:3.5.0.12-0) unstable; urgency=low
[ Mike Gabriel ]
diff --git a/debian/control b/debian/control
index b23ecc2..16f25d7 100644
--- a/debian/control
+++ b/debian/control
@@ -74,6 +74,7 @@ Package: nxagent
Architecture: any
Depends:
libnx-x11 (>= ${source:Version}), libnx-x11 (<< ${source:Version}.1~),
+ xfonts-base,
${shlibs:Depends},
${misc:Depends}
Description: NX agent
diff --git a/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch b/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch
new file mode 100644
index 0000000..319f6ed
--- /dev/null
+++ b/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch
@@ -0,0 +1,193 @@
+Description: Fix nxagent/x2goagent With New LibCairo (>1.12.1)
+ Quoting two postings of Jim Burnes <jvburnes at gmail.com> on x2go-dev ML:
+
+ I don't know what the current patch status is for fixing nxagent with the
+ new libcairo (1.12.1+ I believe), but eventually I got tired of waiting and
+ created my own patches for nxagent/x2goagent.
+
+ Most of the fixes were required because the render extension now allows
+ (and libcairo uses) null source drawables (for gradients etc), null masks
+ and null mask drawables.
+
+ This change creates a bit of a logic mess in the code. Previous patches
+ to the code tried to account for all of the possibilities, but fell a
+ little short.
+
+ Consider this an alpha-quality patch. I've only tested it in KDE while
+ running GTK applications. All my favorite GTK apps like Firefox, Emacs,
+ rox-filer and all my other GTK apps that were broken are now working just
+ fine. (Though I'm getting only the standard GTK look and feel - don't know
+ if that's caused by anything I've done.)
+
+ Could someone test this under Gnome?
+
+ Also, since I'm not primarily an X software engineer I'd like a specialist
+ to take a look at it. The fix is a little crude. I just attached to the
+ x2goagent process and fixed the lines that caused segfaults. (About 10 of
+ them).
+
+ I also rewrote one of the macros in Pixels.h into a local subroutine in
+ Render.c. It had a bug in it and complex macro bugs are a PITA to debug in
+ gdb (or anything else really). The macro is only used in one place and
+ although the code in the macro is called pretty often, it's very likely
+ that the compiler would inline it anyway. The rewrite increases
+ readability by a large factor.
+
+ A better patch could be created by someone that understands nxagent and X
+ much better. The render extension code receives render ops from X client
+ programs. The render ops can contain any combination of picture source,
+ picture destination and picture mask. It's apparently legal to send render
+ ops with combinations of null picture source drawables, picture masks and
+ picture mask drawables. A better way to patch this would be to simply
+ perform a return on all the illegal combinations of null parameters for the
+ render ops. That way you wouldn't have to keep re-checking the parameter
+ values.
+
+ So anyway, here it is. I appreciate it if someone out there would test it
+ and let me know. Also if anyone knows of the X docs which discuss null
+ picture sources and masks in the render extension I'd be glad to create a
+ cleaner patch that conforms to the stands.
+
+
+ You can reproduce the issue by running any recent copy of x2go/nxagent and
+ start any program that uses very recent versions of libCairo. Things
+ started breaking for both ArchLinux and Debian SID users about 3 weeks ago.
+
+ The issues started with versions of libCairo >= libcairo2_1.12.0-2_amd64
+ (debian packages of course). These versions of Cairo seem to use null
+ parameters in render ops a lot. Users of recent GTK environments would
+ have the startup process just crash. KDE sessions start and run fine until
+ you start a gtk app.
+Forwarded: pending
+Author: Jim Burnes <jvburnes at gmail.com>
+Last-Update: 2012-05-11
+--- a/nx-X11/programs/Xserver/hw/nxagent/Render.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Render.c
+@@ -995,6 +995,36 @@
+ #endif
+ }
+
++
++int nxagentShouldDeferComposite(PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst)
++{
++
++int drawableDst;
++int linkDeferred;
++int unSyncedSrcMask;
++
++ drawableDst = ( nxagentRenderVersionMajor == 0 &&
++ nxagentRenderVersionMinor == 8 &&
++ (pDst) -> pDrawable -> type == DRAWABLE_PIXMAP
++ );
++
++ linkDeferred = ( nxagentOption(DeferLevel) >= 2 &&
++ nxagentOption(LinkType) < LINK_TYPE_ADSL
++ );
++
++ unSyncedSrcMask = ( nxagentOption(DeferLevel) == 1 &&
++ (pDst) -> pDrawable -> type == DRAWABLE_PIXMAP &&
++ (
++ (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)) ||
++ ((pMask) && pMask -> pDrawable && (nxagentDrawableStatus((pMask) -> pDrawable) == NotSynchronized))
++ )
++ );
++
++
++ return drawableDst || linkDeferred || unSyncedSrcMask;
++}
++
++
+ void nxagentComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
+ INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst,
+ INT16 yDst, CARD16 width, CARD16 height)
+@@ -1036,8 +1066,8 @@
+ }
+
+ #endif
+-
+- if (NXAGENT_SHOULD_DEFER_COMPOSITE(pSrc, pMask, pDst))
++ /* if (NXAGENT_SHOULD_DEFER_COMPOSITE(pSrc, pMask, pDst)) */
++ if (nxagentShouldDeferComposite(pSrc, pMask, pDst))
+ {
+ pDstRegion = nxagentCreateRegion(pDst -> pDrawable, NULL, xDst, yDst, width, height);
+
+@@ -1095,7 +1125,8 @@
+ }
+ }
+
+- if (pMask != NULL && pMask -> pDrawable != pSrc -> pDrawable &&
++ if ((pMask) && (pMask->pDrawable) &&
++ pMask -> pDrawable != pSrc -> pDrawable &&
+ pMask -> pDrawable != pDst -> pDrawable)
+ {
+ nxagentSynchronizeShmPixmap(pMask -> pDrawable, xMask, yMask, width, height);
+@@ -1259,7 +1290,7 @@
+ * on the real X server.
+ */
+
+- if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
++ if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
+ {
+ #ifdef TEST
+ fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p].\n",
+@@ -1302,14 +1333,15 @@
+ nxagentSynchronizeBox(pSrc -> pDrawable, &glyphBox, NEVER_BREAK);
+ }
+
+- if (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP)
++ if (pSrc -> pDrawable && (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP))
+ {
+ nxagentIncreasePixmapUsageCounter((PixmapPtr) pSrc -> pDrawable);
+ }
+ }
+
+- if (pSrc -> pDrawable != pDst -> pDrawable &&
+- nxagentDrawableStatus(pDst -> pDrawable) == NotSynchronized)
++
++ if (pSrc -> pDrawable && (pSrc -> pDrawable != pDst -> pDrawable &&
++ nxagentDrawableStatus(pDst -> pDrawable) == NotSynchronized))
+ {
+ #ifdef TEST
+ fprintf(stderr, "nxagentGlyphs: Synchronizing destination [%s] at [%p].\n",
+@@ -1749,7 +1781,9 @@
+ return;
+ }
+
+- if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
++ /* the following blocks need fixing to ignore null values of pDrawable */
++
++ if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
+ {
+ #ifdef TEST
+ fprintf(stderr, "nxagentTrapezoids: Going to synchronize the source drawable at [%p].\n",
+@@ -1843,7 +1877,9 @@
+ * operation like nxagentTrapezoids() does.
+ */
+
+- if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
++
++
++ if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
+ {
+ #ifdef TEST
+ fprintf(stderr, "nxagentTriangles: Going to synchronize the source drawable at [%p].\n",
+@@ -1920,7 +1956,8 @@
+ * operation like nxagentTrapezoids() does.
+ */
+
+- if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
++
++ if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
+ {
+ #ifdef TEST
+ fprintf(stderr, "nxagentTriStrip: Going to synchronize the source drawable at [%p].\n",
+@@ -1997,7 +2034,8 @@
+ * operation like nxagentTrapezoids() does.
+ */
+
+- if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
++
++ if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
+ {
+ #ifdef TEST
+ fprintf(stderr, "nxagentTriFan: Going to synchronize the source drawable at [%p].\n",
diff --git a/debian/patches/series b/debian/patches/series
index dc42d85..0e7726a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -35,6 +35,7 @@
108_nxagent_wine-close-delay.full.patch
109_nxagent_locale-utf8-compound-text.full.patch
110_nxagent_createpixmap-bounds-check.full.patch
+120_nxagent_libcairo-null-source-drawables.full.patch
200_nxagent_check-binary-x2go-flavour.full.patch
201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch
202_nx-x11_enable-xinerama.full.patch
hooks/post-receive
--
nx-libs.git (NX (redistributed))
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "nx-libs.git" (NX (redistributed)).
More information about the x2go-commits
mailing list