aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver')
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Display.c40
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Keyboard.c18
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Splash.c162
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Splash.h1
-rw-r--r--nx-X11/programs/Xserver/os/oscolor.c14
5 files changed, 158 insertions, 77 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Display.c b/nx-X11/programs/Xserver/hw/nxagent/Display.c
index 201d9dd74..b01d66cb0 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c
@@ -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;
- }
+ nxagentLogoBlack = 0x000000;
+ nxagentLogoRed = 0xff0000;
+ 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;
- }
+ nxagentLogoBlack = 0x000000;
+ nxagentLogoRed = 0xff0000;
+ nxagentLogoWhite = 0xffffff;
+ nxagentLogoGray = 0x222222;
useXpmIcon = nxagentMakeIcon(nxagentDisplay, &nxagentIconPixmap, &nxagentIconShape);
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
index 1637f0c4c..a51d19e81 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
@@ -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",
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Splash.c b/nx-X11/programs/Xserver/hw/nxagent/Splash.c
index 235c48c23..abb0872d1 100644
--- 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 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
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Splash.h b/nx-X11/programs/Xserver/hw/nxagent/Splash.h
index f7ba6c2e2..39becaa3d 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Splash.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.h
@@ -33,6 +33,7 @@ extern int nxagentLogoDepth;
extern int nxagentLogoWhite;
extern int nxagentLogoRed;
extern int nxagentLogoBlack;
+extern int nxagentLogoGray;
extern Window nxagentSplashWindow;
diff --git a/nx-X11/programs/Xserver/os/oscolor.c b/nx-X11/programs/Xserver/os/oscolor.c
index d18e7b647..e8692a92c 100644
--- a/nx-X11/programs/Xserver/os/oscolor.c
+++ b/nx-X11/programs/Xserver/os/oscolor.c
@@ -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