From e2e7008b3e4f7283b135a9fc2821a64386253ee0 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 22 May 2012 00:57:21 +0200 Subject: New upstream release of nxagent (3.5.0-9). * New upstream release of nxagent (3.5.0-9). * Adapt patch series (all hunks succeeded automatically). * Drop patch: 120_nxagent_libcairo-null-source-drawables.full.patch, the issue has been fixed by NoMachine (TR05J02703). --- debian/changelog | 5 +- ...09_nxagent_locale-utf8-compound-text.full.patch | 2 +- ...agent_libcairo-null-source-drawables.full.patch | 193 --------------------- ...00_nxagent_check-binary-x2go-flavour.full.patch | 4 +- ...t_set-x2go-icon-if-x2goagent-flavour.full.patch | 19 +- .../203_nxagent_disable-rootless-exit.full.patch | 10 +- debian/patches/300_nxagent_set-wm-class.full.patch | 2 +- ...gent_unbrand-nxagent-brand-x2goagent.full.patch | 4 +- debian/patches/series | 1 - 9 files changed, 24 insertions(+), 216 deletions(-) delete mode 100644 debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch diff --git a/debian/changelog b/debian/changelog index 45bd03553..de39c40c7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,9 @@ nx-libs (2:3.5.0.14-0) UNRELEASED; urgency=low - * Continue development... + * New upstream release of nxagent (3.5.0-9). + * Adapt patch series (all hunks succeeded automatically). + * Drop patch: 120_nxagent_libcairo-null-source-drawables.full.patch, the issue + has been fixed by NoMachine (TR05J02703). -- Mike Gabriel Fri, 11 May 2012 23:57:18 +0200 diff --git a/debian/patches/109_nxagent_locale-utf8-compound-text.full.patch b/debian/patches/109_nxagent_locale-utf8-compound-text.full.patch index 29abd99dd..7fbdf45eb 100644 --- a/debian/patches/109_nxagent_locale-utf8-compound-text.full.patch +++ b/debian/patches/109_nxagent_locale-utf8-compound-text.full.patch @@ -17,7 +17,7 @@ Last-Update: 2011-12-31 /* * Set here the required log level. */ -@@ -348,6 +351,20 @@ +@@ -366,6 +369,20 @@ */ blackRoot = TRUE; diff --git a/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch b/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch deleted file mode 100644 index 319f6ed3b..000000000 --- a/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch +++ /dev/null @@ -1,193 +0,0 @@ -Description: Fix nxagent/x2goagent With New LibCairo (>1.12.1) - Quoting two postings of Jim Burnes 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 -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/200_nxagent_check-binary-x2go-flavour.full.patch b/debian/patches/200_nxagent_check-binary-x2go-flavour.full.patch index 089b57022..635d42878 100644 --- a/debian/patches/200_nxagent_check-binary-x2go-flavour.full.patch +++ b/debian/patches/200_nxagent_check-binary-x2go-flavour.full.patch @@ -9,7 +9,7 @@ Author: Oleksandr Shneyder Last-Update: 2012-01-11 --- a/nx-X11/programs/Xserver/hw/nxagent/Init.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c -@@ -178,6 +178,29 @@ +@@ -180,6 +180,29 @@ int nxagentDoFullGeneration = 1; @@ -39,7 +39,7 @@ Last-Update: 2012-01-11 /* * Called at X server's initialization. */ -@@ -194,6 +217,11 @@ +@@ -196,6 +219,11 @@ #endif /* diff --git a/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch b/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch index ff3861d6e..48e4c4a4b 100644 --- a/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch +++ b/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch @@ -4,9 +4,9 @@ Description: X2Go icon when run with x2goagent flavour Forwarded: not-needed Author: Oleksandr Shneyder Last-Update: 2012-01-11 ---- a/nx-X11/programs/Xserver/hw/nxagent/Display.c 2012-01-11 10:09:05.000000000 +0100 -+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c 2012-01-11 12:28:11.000000000 +0100 -@@ -77,6 +77,7 @@ is" without express or implied warranty. +--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c ++++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c +@@ -77,6 +77,7 @@ #include "NXlib.h" #include NXAGENT_ICON_NAME @@ -14,7 +14,7 @@ Last-Update: 2012-01-11 /* * Set here the required log level. -@@ -1918,12 +1919,29 @@ Bool nxagentMakeIcon(Display *display, P +@@ -1941,12 +1942,29 @@ Bool success = False; XlibPixmap IconPixmap; XlibPixmap IconShape; @@ -46,7 +46,7 @@ Last-Update: 2012-01-11 if (icon_fp != NULL) { -@@ -1962,7 +1980,7 @@ Bool nxagentMakeIcon(Display *display, P +@@ -1985,7 +2003,7 @@ { status = XpmCreatePixmapFromData(display, DefaultRootWindow(display), @@ -55,8 +55,8 @@ Last-Update: 2012-01-11 &IconPixmap, &IconShape, NULL); ---- a/nx-X11/programs/Xserver/hw/nxagent/Icons.h 2012-01-11 10:09:05.000000000 +0100 -+++ b/nx-X11/programs/Xserver/hw/nxagent/Icons.h 2012-01-11 12:17:21.000000000 +0100 +--- a/nx-X11/programs/Xserver/hw/nxagent/Icons.h ++++ b/nx-X11/programs/Xserver/hw/nxagent/Icons.h @@ -24,6 +24,8 @@ #define NXAGENT_ICON_NAME "nxagent.xpm" @@ -66,8 +66,8 @@ Last-Update: 2012-01-11 #define NXAGENT_PLACEHOLDER_NAME "nxmissing.xpm" #endif /* __Icons_H__ */ ---- a/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm 1970-01-01 01:00:00.000000000 +0100 -+++ b/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm 2012-01-11 12:26:24.000000000 +0100 +--- /dev/null ++++ b/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm @@ -0,0 +1,148 @@ +/* XPM */ +static char *x2goagentIconData[]={ @@ -217,4 +217,3 @@ Last-Update: 2012-01-11 +"..#cccbne.............................................................................................................menkccc#..", +"...okccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbe...", +"....mhjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccg#....."}; - diff --git a/debian/patches/203_nxagent_disable-rootless-exit.full.patch b/debian/patches/203_nxagent_disable-rootless-exit.full.patch index 03154bb07..fcdecc010 100644 --- a/debian/patches/203_nxagent_disable-rootless-exit.full.patch +++ b/debian/patches/203_nxagent_disable-rootless-exit.full.patch @@ -1,6 +1,6 @@ --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c -@@ -656,6 +656,12 @@ +@@ -672,6 +672,12 @@ return 1; } @@ -13,7 +13,7 @@ if (!strcmp(argv[i], "-noonce")) { nxagentOnce = False; -@@ -1837,6 +1843,7 @@ +@@ -1855,6 +1861,7 @@ ErrorF("The NX system adds the following arguments:\n"); ErrorF("-forcenx force use of NX protocol messages assuming communication through nxproxy\n"); ErrorF("-timeout int auto-disconnect timeout in seconds (minimum allowed: 60)\n"); @@ -23,7 +23,7 @@ ErrorF("-nocomposite disable the use of the composite extension\n"); --- a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c -@@ -217,7 +217,7 @@ +@@ -219,7 +219,7 @@ if (nxagentOption(Rootless) && nxagentLastWindowDestroyed && nxagentRootlessDialogPid == 0 && @@ -44,9 +44,9 @@ nxagentOptions.Y = 0; --- a/nx-X11/programs/Xserver/hw/nxagent/Options.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Options.h -@@ -369,6 +369,13 @@ +@@ -381,6 +381,13 @@ - int CopyBufferSize; + int ImageRateLimit; + /* + * True if agent should not exit if there are no diff --git a/debian/patches/300_nxagent_set-wm-class.full.patch b/debian/patches/300_nxagent_set-wm-class.full.patch index 765d6bc46..7a67e434f 100644 --- a/debian/patches/300_nxagent_set-wm-class.full.patch +++ b/debian/patches/300_nxagent_set-wm-class.full.patch @@ -15,7 +15,7 @@ Author: Oleksandr Shneyder Last-Update: 2012-01-11 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c -@@ -1756,6 +1756,42 @@ +@@ -1759,6 +1759,42 @@ nxagentDefaultWindows[pScreen->myNum]); #endif diff --git a/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch b/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch index 7a5ce5437..4b18aa552 100644 --- a/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch +++ b/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch @@ -230,7 +230,7 @@ Last-Update: 2012-01-11 #ifdef NXAGENT_LOGO_DEBUG --- a/nx-X11/programs/Xserver/hw/nxagent/Display.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c -@@ -1403,22 +1403,10 @@ +@@ -1430,22 +1430,10 @@ g = pV.green_mask; b = pV.blue_mask; @@ -257,7 +257,7 @@ Last-Update: 2012-01-11 #ifdef WATCH -@@ -2673,22 +2661,10 @@ +@@ -2696,22 +2684,10 @@ g = pV.green_mask; b = pV.blue_mask; diff --git a/debian/patches/series b/debian/patches/series index 0e7726a03..dc42d85ed 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -35,7 +35,6 @@ 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 -- cgit v1.2.3