Commit 1fd8551f authored by Oleksandr Shneyder's avatar Oleksandr Shneyder Committed by Mike Gabriel

Unbrand NX Agent Startup Screen / Brand X2Go Agent Startup Screen…

Unbrand NX Agent Startup Screen / Brand X2Go Agent Startup Screen (999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch). 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.
parent 23fb6175
#401_nxcomp_bigrequests-and-genericevent-extensions.full+lite.patch
999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch
016_nx-X11_install-location.debian.patch
102_xserver-xext_set-securitypolicy-path.debian.patch
......@@ -1430,22 +1430,10 @@ FIXME: Use of nxagentParentWindow is strongly deprecated.
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;
}
nxagentLogoGray = 0x222222;
#ifdef WATCH
......@@ -2696,22 +2684,10 @@ Bool nxagentReconnectDisplay(void *p0)
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;
}
nxagentLogoGray = 0x222222;
useXpmIcon = nxagentMakeIcon(nxagentDisplay, &nxagentIconPixmap, &nxagentIconShape);
......
......@@ -62,6 +62,7 @@ is" without express or implied warranty.
#include "globals.h"
#include "property.h"
#include "Init.h"
#include <X11/extensions/XKB.h>
......@@ -138,8 +139,11 @@ extern Status XkbGetControls(
#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 @@ XkbError:
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 @@ XkbError:
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",
......
......@@ -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 nxagentLogoDepth;
int nxagentLogoWhite;
int nxagentLogoRed;
int nxagentLogoBlack;
int nxagentLogoGray;
void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height);
......@@ -166,6 +168,15 @@ void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height)
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 @@ void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height)
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
......
......@@ -33,6 +33,7 @@ extern int nxagentLogoDepth;
extern int nxagentLogoWhite;
extern int nxagentLogoRed;
extern int nxagentLogoBlack;
extern int nxagentLogoGray;
extern Window nxagentSplashWindow;
......
......@@ -53,7 +53,19 @@ SOFTWARE.
#include <sys/stat.h>
#include <unistd.h>
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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment