From 09d2732b4e299eaa06c64b7a683529e337691c59 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Sat, 14 Feb 2015 16:23:43 +0100 Subject: Patch system: Prepend a "0" to every patch file name in debian/patches/. Adapt only this changelog stanza to this modification. --- ...gent_unbrand-nxagent-brand-x2goagent.full.patch | 367 +++++++++++++++++++++ 1 file changed, 367 insertions(+) create mode 100644 debian/patches/0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch (limited to 'debian/patches/0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch') diff --git a/debian/patches/0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch b/debian/patches/0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch new file mode 100644 index 000000000..62c85cfb2 --- /dev/null +++ b/debian/patches/0999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch @@ -0,0 +1,367 @@ +Description: Unbrand NX Agent Startup Screen / Brand X2Go Agent Startup Screen + When launched with NX Agent flavour, the startup screen gets unbranded by + this patch (the !M logo does not get shown). + . + When launched with X2Go Agent flavour, the startup screen gets branded + with the X2GO logo. +Forwarded: not-needed +Author: Oleksandr Shneyder +Last-Update: 2012-01-11 +--- a/nx-X11/programs/Xserver/hw/nxagent/Splash.c ++++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.c +@@ -35,6 +35,7 @@ + #include "Windows.h" + #include "Atoms.h" + #include "Trap.h" ++#include "Init.h" + + /* + * Set here the required log level. +@@ -53,6 +54,7 @@ + int nxagentLogoWhite; + int nxagentLogoRed; + int nxagentLogoBlack; ++int nxagentLogoGray; + + void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height); + +@@ -166,6 +168,15 @@ + XPoint m[12]; + int w, h, c, w2, h2; + ++ /* ++ * Show only X2GO Logo when running as X2Go Agent ++ */ ++ if(! nxagentX2go) ++ { ++ nxagentPixmapLogo = 0L; ++ return; ++ } ++ + #ifdef DEBUG + fprintf(stderr, "nxagenShowtLogo: Got called.\n"); + #endif +@@ -218,75 +229,146 @@ + XSetForeground(nxagentDisplay, gc, nxagentLogoRed); + XSetBackground(nxagentDisplay, gc, nxagentLogoWhite); + +- rect[0].x = w2-10*c; rect[0].y = h2-8*c; +- rect[1].x = w2-10*c; rect[1].y = h2+8*c; +- rect[2].x = w2+10*c; rect[2].y = h2+8*c; +- rect[3].x = w2+10*c; rect[3].y = h2-8*c; ++ /* ++ * Draw X2GO Logo ++ */ + ++ /* ++ * Begin 'X'. ++ */ ++ ++ XSetForeground(nxagentDisplay, gc, nxagentLogoGray); ++ XSetBackground(nxagentDisplay, gc, nxagentLogoWhite); ++ rect[0].x = w2-7*c; rect[0].y = h2-5*c; ++ rect[1].x = w2-8*c; rect[1].y = h2-5*c; ++ rect[2].x = w2-4*c; rect[2].y = h2+3*c; ++ rect[3].x = w2-3*c; rect[3].y = h2+3*c; + XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + +- #ifdef NXAGENT_LOGO_DEBUG +- fprintf(stderr, "filled red rect\n"); +- #endif ++ rect[0].x = w2-4*c; rect[0].y = h2-5*c; ++ rect[1].x = w2-3*c; rect[1].y = h2-5*c; ++ rect[2].x = w2-7*c; rect[2].y = h2+3*c; ++ rect[3].x = w2-8*c; rect[3].y = h2+3*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + +- rect[0].x = w2-9*c; rect[0].y = h2-7*c; +- rect[1].x = w2-9*c; rect[1].y = h2+7*c; +- rect[2].x = w2+9*c; rect[2].y = h2+7*c; +- rect[3].x = w2+9*c; rect[3].y = h2-7*c; ++ /* ++ * End 'X'. ++ */ + +- XSetForeground(nxagentDisplay, gc, nxagentLogoWhite); +- XSetBackground(nxagentDisplay, gc, nxagentLogoRed); ++ /* ++ * Start '2'. ++ */ ++ ++ rect[0].x = w2-2*c; rect[0].y = h2-5*c; ++ rect[1].x = w2-1*c; rect[1].y = h2-5*c; ++ rect[2].x = w2-1*c; rect[2].y = h2-3*c; ++ rect[3].x = w2-2*c; rect[3].y = h2-3*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); ++ ++ rect[0].x = w2-2*c; rect[0].y = h2-5*c; ++ rect[1].x = w2+2*c; rect[1].y = h2-5*c; ++ rect[2].x = w2+2*c; rect[2].y = h2-4*c; ++ rect[3].x = w2-2*c; rect[3].y = h2-4*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + ++ rect[0].x = w2+1*c; rect[0].y = h2-5*c; ++ rect[1].x = w2+2*c; rect[1].y = h2-5*c; ++ rect[2].x = w2+2*c; rect[2].y = h2-2*c; ++ rect[3].x = w2+1*c; rect[3].y = h2-2*c; + XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + ++ rect[0].x = w2+2*c; rect[0].y = h2-2*c; ++ rect[1].x = w2+1*c; rect[1].y = h2-2*c; ++ rect[2].x = w2-2*c; rect[2].y = h2+2*c; ++ rect[3].x = w2-1*c; rect[3].y = h2+2*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); ++ ++ ++ rect[0].x = w2-2*c; rect[0].y = h2+2*c; ++ rect[1].x = w2+2*c; rect[1].y = h2+2*c; ++ rect[2].x = w2+2*c; rect[2].y = h2+3*c; ++ rect[3].x = w2-2*c; rect[3].y = h2+3*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + /* +- * Begin 'M'. ++ * End '2'. + */ + +- m[0].x = w2-3*c; m[0].y = h2-5*c; +- m[1].x = w2+7*c; m[1].y = h2-5*c; +- m[2].x = w2+7*c; m[2].y = h2+5*c; +- m[3].x = w2+5*c; m[3].y = h2+5*c; +- m[4].x = w2+5*c; m[4].y = h2-3*c; +- m[5].x = w2+3*c; m[5].y = h2-3*c; +- m[6].x = w2+3*c; m[6].y = h2+5*c; +- m[7].x = w2+1*c; m[7].y = h2+5*c; +- m[8].x = w2+1*c; m[8].y = h2-3*c; +- m[9].x = w2-1*c; m[9].y = h2-3*c; +- m[10].x = w2-1*c; m[10].y = h2+5*c; +- m[11].x = w2-3*c; m[11].y = h2+5*c; ++ /* ++ * Start 'G'. ++ */ + +- XSetForeground(nxagentDisplay, gc, nxagentLogoRed); +- XSetBackground(nxagentDisplay, gc, nxagentLogoWhite); ++ rect[0].x = w2+3*c; rect[0].y = h2-5*c; ++ rect[1].x = w2+7*c; rect[1].y = h2-5*c; ++ rect[2].x = w2+7*c; rect[2].y = h2-4*c; ++ rect[3].x = w2+3*c; rect[3].y = h2-4*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + +- XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, m, 12, Nonconvex, CoordModeOrigin); ++ rect[0].x = w2+3*c; rect[0].y = h2-5*c; ++ rect[1].x = w2+4*c; rect[1].y = h2-5*c; ++ rect[2].x = w2+4*c; rect[2].y = h2+3*c; ++ rect[3].x = w2+3*c; rect[3].y = h2+3*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + ++ rect[0].x = w2+3*c; rect[0].y = h2+2*c; ++ rect[1].x = w2+7*c; rect[1].y = h2+2*c; ++ rect[2].x = w2+7*c; rect[2].y = h2+3*c; ++ rect[3].x = w2+3*c; rect[3].y = h2+3*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); ++ ++ rect[0].x = w2+6*c; rect[0].y = h2-5*c; ++ rect[1].x = w2+7*c; rect[1].y = h2-5*c; ++ rect[2].x = w2+7*c; rect[2].y = h2-3*c; ++ rect[3].x = w2+6*c; rect[3].y = h2-3*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); ++ ++ rect[0].x = w2+6*c; rect[0].y = h2-0*c; ++ rect[1].x = w2+7*c; rect[1].y = h2-0*c; ++ rect[2].x = w2+7*c; rect[2].y = h2+3*c; ++ rect[3].x = w2+6*c; rect[3].y = h2+3*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); ++ ++ rect[0].x = w2+5*c; rect[0].y = h2-1*c; ++ rect[1].x = w2+7*c; rect[1].y = h2-1*c; ++ rect[2].x = w2+7*c; rect[2].y = h2+0*c; ++ rect[3].x = w2+5*c; rect[3].y = h2+0*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + /* +- * End 'M'. ++ * End 'G'. + */ + + /* +- * Begin '!'. ++ * Start 'O'. + */ + +- rect[0].x = w2-7*c; rect[0].y = h2-5*c; +- rect[1].x = w2-5*c; rect[1].y = h2-5*c; +- rect[2].x = w2-5*c; rect[2].y = h2+2*c; +- rect[3].x = w2-7*c; rect[3].y = h2+2*c; ++ rect[0].x = w2+8*c; rect[0].y = h2-5*c; ++ rect[1].x = w2+12*c; rect[1].y = h2-5*c; ++ rect[2].x = w2+12*c; rect[2].y = h2-4*c; ++ rect[3].x = w2+8*c; rect[3].y = h2-4*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + ++ rect[0].x = w2+8*c; rect[0].y = h2+3*c; ++ rect[1].x = w2+12*c; rect[1].y = h2+3*c; ++ rect[2].x = w2+12*c; rect[2].y = h2+2*c; ++ rect[3].x = w2+8*c; rect[3].y = h2+2*c; + XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + +- rect[0].x = w2-7*c; rect[0].y = h2+3*c; +- rect[1].x = w2-5*c; rect[1].y = h2+3*c; +- rect[2].x = w2-5*c; rect[2].y = h2+5*c; +- rect[3].x = w2-7*c; rect[3].y = h2+5*c; ++ rect[0].x = w2+8*c; rect[0].y = h2-5*c; ++ rect[1].x = w2+9*c; rect[1].y = h2-5*c; ++ rect[2].x = w2+9*c; rect[2].y = h2+3*c; ++ rect[3].x = w2+8*c; rect[3].y = h2+3*c; ++ XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + ++ rect[0].x = w2+11*c; rect[0].y = h2-5*c; ++ rect[1].x = w2+12*c; rect[1].y = h2-5*c; ++ rect[2].x = w2+12*c; rect[2].y = h2+3*c; ++ rect[3].x = w2+11*c; rect[3].y = h2+3*c; + XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin); + + /* +- * End 'M'. ++ * End 'O'. + */ + ++ + XSetWindowBackgroundPixmap(nxagentDisplay, win, nxagentPixmapLogo); + + #ifdef NXAGENT_LOGO_DEBUG +--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c ++++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c +@@ -1430,22 +1430,10 @@ + g = pV.green_mask; + b = pV.blue_mask; + +- if (!pV.red_mask || !pV.green_mask || !pV.blue_mask) +- { +- nxagentLogoBlack = 0x000000; +- nxagentLogoRed = 0xff0000; +- nxagentLogoWhite = 0xffffff; +- } +- else +- { +- for (or=0, off=0x800000; (r&(off>>or)) == 0; or++); +- for (og=0, off=0x800000; (g&(off>>og)) == 0; og++); +- for (ob=0, off=0x800000; (b&(off>>ob)) == 0; ob++); +- +- nxagentLogoRed = nxagentLogoColor(0xff0000); +- nxagentLogoBlack = nxagentLogoColor(0x000000); +- nxagentLogoWhite = 0xffffff; +- } ++ nxagentLogoBlack = 0x000000; ++ nxagentLogoRed = 0xff0000; ++ nxagentLogoWhite = 0xffffff; ++ nxagentLogoGray = 0x222222; + + #ifdef WATCH + +@@ -2696,22 +2684,10 @@ + g = pV.green_mask; + b = pV.blue_mask; + +- if (!pV.red_mask || !pV.green_mask || !pV.blue_mask) +- { +- nxagentLogoBlack = 0x000000; +- nxagentLogoRed = 0xff0000; +- nxagentLogoWhite = 0xffffff; +- } +- else +- { +- for (or=0, off=0x800000; (r&(off>>or)) == 0; or++); +- for (og=0, off=0x800000; (g&(off>>og)) == 0; og++); +- for (ob=0, off=0x800000; (b&(off>>ob)) == 0; ob++); +- +- nxagentLogoRed = nxagentLogoColor(0xff0000); +- nxagentLogoBlack = nxagentLogoColor(0x000000); +- nxagentLogoWhite = 0xffffff; +- } ++ nxagentLogoBlack = 0x000000; ++ nxagentLogoRed = 0xff0000; ++ nxagentLogoWhite = 0xffffff; ++ nxagentLogoGray = 0x222222; + + useXpmIcon = nxagentMakeIcon(nxagentDisplay, &nxagentIconPixmap, &nxagentIconShape); + +--- a/nx-X11/programs/Xserver/hw/nxagent/Splash.h ++++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.h +@@ -33,6 +33,7 @@ + extern int nxagentLogoWhite; + extern int nxagentLogoRed; + extern int nxagentLogoBlack; ++extern int nxagentLogoGray; + + extern Window nxagentSplashWindow; + +--- a/nx-X11/programs/Xserver/os/oscolor.c ++++ b/nx-X11/programs/Xserver/os/oscolor.c +@@ -53,7 +53,19 @@ + #include + #include + +-static char* nxAltRgbPaths[] = {"/etc/nxagent/rgb", "/usr/share/nx/rgb", "/usr/local/share/nx/rgb", "/usr/NX/share/rgb", "/usr/share/X11/rgb", "/etc/X11/rgb"}; ++/* FIXME: we need more intelligent code (like provided by the nxagentX2go ++ * var in hw/nxagent/Init.h) to detect our current runtime mode (running ++ * as x2goagent, running as nxagent) ++ */ ++static char* nxAltRgbPaths[] = {"/etc/x2go/rgb", \ ++ "/usr/share/x2go/rgb", \ ++ "/usr/local/share/x2go/rgb", \ ++ "/etc/nxagent/rgb", \ ++ "/usr/share/nx/rgb", \ ++ "/usr/local/share/nx/rgb", \ ++ "/usr/NX/share/rgb", \ ++ "/usr/share/X11/rgb", \ ++ "/etc/X11/rgb"}; + static char _NXRgbPath[1024]; + + #endif +--- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c ++++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +@@ -62,6 +62,7 @@ + + #include "globals.h" + #include "property.h" ++#include "Init.h" + + #include + +@@ -138,8 +139,11 @@ + #ifndef XKB_ALTERNATE_BASE_DIRECTORY + #define XKB_ALTERNATE_BASE_DIRECTORY "/usr/X11R6/lib/X11/xkb" + #endif +-#ifndef XKB_CONFIG_FILE +-#define XKB_CONFIG_FILE "/etc/nxagent/nxagent.keyboard" ++#ifndef XKB_CONFIG_FILE_NX ++#define XKB_CONFIG_FILE_NX "/etc/nxagent/nxagent.keyboard" ++#endif ++#ifndef XKB_CONFIG_FILE_X2GO ++#define XKB_CONFIG_FILE_X2GO "/etc/x2go/x2goagent.keyboard" + #endif + #ifndef XKB_DFLT_RULES_FILE + #define XKB_DFLT_RULES_FILE "xfree86" +@@ -988,7 +992,10 @@ + + XkbGetControls(nxagentDisplay, XkbAllControlsMask, xkb); + +- nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE); ++ if (nxagentX2go) ++ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_X2GO); ++ else ++ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_NX); + + nxagentXkbConfigFilePath = malloc((nxagentXkbConfigFilePathSize + 1) * sizeof(char)); + +@@ -997,7 +1004,10 @@ + FatalError("nxagentKeyboardProc: malloc failed."); + } + +- strcpy(nxagentXkbConfigFilePath, XKB_CONFIG_FILE); ++ if (nxagentX2go) ++ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_X2GO); ++ else ++ nxagentXkbConfigFilePathSize = strlen(XKB_CONFIG_FILE_NX); + + #ifdef TEST + fprintf(stderr, "nxagentKeyboardProc: nxagentXkbConfigFilePath [%s].\n", -- cgit v1.2.3