[PATCH] Make -norootcursor a runtime option and remove the compile time NULL_ROOT_CURSOR
David Greaves
david at dgreaves.com
Thu Sep 25 10:20:14 PDT 2008
Make -norootcursor a runtime option and remove the compile time NULL_ROOT_CURSOR
This is for use on a picture frame but I guess would be useful on touch
screens and in other situations too.
Signed-off-by: David Greaves <david at dgreaves.com>
---
configure.ac | 7 ------
dix/cursor.c | 55 ++++++++++++++++++++++------------------------
dix/globals.c | 1 +
doc/Xserver.man.pre | 4 +++
include/dix-config.h.in | 3 --
include/opaque.h | 1 +
os/utils.c | 5 ++++
7 files changed, 37 insertions(+), 39 deletions(-)
diff --git a/configure.ac b/configure.ac
index 60cdc14..88a2c01 100644
--- a/configure.ac
+++ b/configure.ac
@@ -492,9 +492,6 @@ AC_ARG_ENABLE(install-libxf86config,
AC_ARG_ENABLE(builtin-fonts, AS_HELP_STRING([--enable-builtin-fonts], [Use only built-in fonts (default: yes)]),
[BUILTIN_FONTS=$enableval],
[BUILTIN_FONTS=yes])
-AC_ARG_ENABLE(null-root-cursor, AS_HELP_STRING([--enable-null-root-cursor], [Use an empty root cursor (default: use core cursor)]),
- [NULL_ROOT_CURSOR=$enableval],
- [NULL_ROOT_CURSOR=no])
dnl GLX build options
AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [Path to Mesa source tree]),
@@ -981,10 +978,6 @@ AC_CHECK_FUNC(strncasecmp, [], AC_DEFINE([NEED_STRNCASECMP], 1,
AC_CHECK_FUNC(strcasestr, [], AC_DEFINE([NEED_STRCASESTR], 1,
[Do not have 'strcasestr'.]))
-if test "x$NULL_ROOT_CURSOR" = xyes; then
- AC_DEFINE(NULL_ROOT_CURSOR, 1, [Use an empty root cursor])
-fi
-
PKG_CHECK_MODULES([XDMCP], [xdmcp], [have_libxdmcp="yes"], [have_libxdmcp="no"])
if test "x$have_libxdmcp" = xyes; then
AC_CHECK_LIB(Xdmcp, XdmcpWrap, [have_xdmcpwrap="yes"], [have_xdmcpwrap="no"], [$XDMCP_LIBS])
diff --git a/dix/cursor.c b/dix/cursor.c
index 81540fd..38224cf 100644
--- a/dix/cursor.c
+++ b/dix/cursor.c
@@ -519,39 +519,36 @@ CursorPtr
CreateRootCursor(char *unused1, unsigned int unused2)
{
CursorPtr curs;
-#ifdef NULL_ROOT_CURSOR
CursorMetricRec cm;
-#else
FontPtr cursorfont;
int err;
XID fontID;
-#endif
-
-#ifdef NULL_ROOT_CURSOR
- cm.width = 0;
- cm.height = 0;
- cm.xhot = 0;
- cm.yhot = 0;
-
- AllocARGBCursor(NULL, NULL, NULL, &cm, 0, 0, 0, 0, 0, 0,
- &curs, serverClient, (XID)0);
-
- if (curs == NullCursor)
- return NullCursor;
-#else
- fontID = FakeClientID(0);
- err = OpenFont(serverClient, fontID, FontLoadAll | FontOpenSync,
- (unsigned)strlen(defaultCursorFont), defaultCursorFont);
- if (err != Success)
- return NullCursor;
-
- cursorfont = (FontPtr)LookupIDByType(fontID, RT_FONT);
- if (!cursorfont)
- return NullCursor;
- if (AllocGlyphCursor(fontID, 0, fontID, 1, 0, 0, 0, ~0, ~0, ~0,
- &curs, serverClient, (XID)0) != Success)
- return NullCursor;
-#endif
+
+ if (nullRootCursor) {
+ cm.width = 0;
+ cm.height = 0;
+ cm.xhot = 0;
+ cm.yhot = 0;
+
+ AllocARGBCursor(NULL, NULL, NULL, &cm, 0, 0, 0, 0, 0, 0,
+ &curs, serverClient, (XID)0);
+
+ if (curs == NullCursor)
+ return NullCursor;
+ } else {
+ fontID = FakeClientID(0);
+ err = OpenFont(serverClient, fontID, FontLoadAll | FontOpenSync,
+ (unsigned)strlen(defaultCursorFont), defaultCursorFont);
+ if (err != Success)
+ return NullCursor;
+
+ cursorfont = (FontPtr)LookupIDByType(fontID, RT_FONT);
+ if (!cursorfont)
+ return NullCursor;
+ if (AllocGlyphCursor(fontID, 0, fontID, 1, 0, 0, 0, ~0, ~0, ~0,
+ &curs, serverClient, (XID)0) != Success)
+ return NullCursor;
+ }
if (!AddResource(FakeClientID(0), RT_CURSOR, (pointer)curs))
return NullCursor;
diff --git a/dix/globals.c b/dix/globals.c
index 60fd9a9..c93a83d 100644
--- a/dix/globals.c
+++ b/dix/globals.c
@@ -141,6 +141,7 @@ FontPtr defaultFont; /* not declared in dix.h to avoid including font.h in
CursorPtr rootCursor;
Bool party_like_its_1989 = FALSE;
Bool whiteRoot = FALSE;
+Bool nullRootCursor=FALSE;
_X_EXPORT int cursorScreenDevPriv[MAXSCREENS];
diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre
index 6cf08ce..07cee01 100644
--- a/doc/Xserver.man.pre
+++ b/doc/Xserver.man.pre
@@ -188,6 +188,10 @@ sets the maximum big request to
.I size
MB.
.TP 8
+.B \-norootcursor
+sets the root cursor to a null glyph instead of the standard cross. This
+does not disable the pointer; it merely makes it invisble.
+.TP 8
.B \-nolisten \fItrans-type\fP
disables a transport type. For example, TCP/IP connections can be disabled
with
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 06138c5..75a4a28 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -406,9 +406,6 @@
/* Use only built-in fonts */
#undef BUILTIN_FONTS
-/* Use an empty root cursor */
-#undef NULL_ROOT_CURSOR
-
/* Have a monotonic clock from clock_gettime() */
#undef MONOTONIC_CLOCK
diff --git a/include/opaque.h b/include/opaque.h
index 07a0715..7f2affc 100644
--- a/include/opaque.h
+++ b/include/opaque.h
@@ -71,6 +71,7 @@ extern Bool defeatAccessControl;
extern long maxBigRequestSize;
extern Bool party_like_its_1989;
extern Bool whiteRoot;
+extern Bool nullRootCursor;
extern Bool CoreDump;
diff --git a/os/utils.c b/os/utils.c
index 709b5df..2681ead 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -494,6 +494,7 @@ void UseMsg(void)
ErrorF("c # key-click volume (0-100)\n");
ErrorF("-cc int default color visual class\n");
ErrorF("-core generate core dump on fatal error\n");
+ ErrorF("-norootcursor no root cursor is displayed by default\n");
ErrorF("-dpi int screen resolution in dots per inch\n");
#ifdef DPMSExtension
ErrorF("dpms enables VESA DPMS monitor control\n");
@@ -675,6 +676,10 @@ ProcessCommandLine(int argc, char *argv[])
setrlimit (RLIMIT_CORE, &core_limit);
#endif
}
+ else if ( strcmp( argv[i], "-norootcursor") == 0)
+ {
+ nullRootCursor = TRUE;
+ }
else if ( strcmp( argv[i], "-dpi") == 0)
{
if(++i < argc)
--
"Don't worry, you'll be fine; I saw it work in a cartoon once..."
More information about the xorg
mailing list