summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Farnsworth <simon.farnsworth@onelan.co.uk>2009-04-23 16:15:01 +0100
committerPeter Hutterer <peter.hutterer@who-t.net>2009-04-28 10:43:53 +1000
commit707af5f8c5fae3b6c4c5125a91917667bb0ab908 (patch)
tree79a631146be2c69da4c10b88c88e9a54ee6075a9
parent40a8f2f4088aa353de733a11327b628ef13a52e6 (diff)
Make the cursor completely optional
For embedded use, it's convenient to be able to disable the cursor completely, without having to audit and fix up all your third-party code (e.g. Mozilla Firefox). Add -nocursor and -cursor server options to enable and disable the cursor. The default is still -cursor, but embedded users can run the server with -nocursor to hide the cursor regardless of what application developers do. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--include/input.h4
-rw-r--r--os/utils.c12
-rw-r--r--xfixes/cursor.c6
3 files changed, 19 insertions, 3 deletions
diff --git a/include/input.h b/include/input.h
index 56c3d2981..30e30bb9e 100644
--- a/include/input.h
+++ b/include/input.h
@@ -498,4 +498,8 @@ extern _X_EXPORT void DDXRingBell(
int pitch,
int duration);
+/* Set to TRUE by default - os/utils.c sets it to FALSE on user request,
+ xfixes/cursor.c uses it to determine if the cursor is enabled */
+extern Bool EnableCursor;
+
#endif /* INPUT_H */
diff --git a/os/utils.c b/os/utils.c
index 78a50b254..00abd6396 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -482,6 +482,8 @@ void UseMsg(void)
ErrorF("-c turns off key-click\n");
ErrorF("c # key-click volume (0-100)\n");
ErrorF("-cc int default color visual class\n");
+ ErrorF("-cursor enable the cursor (default)\n");
+ ErrorF("-nocursor disable the cursor\n");
ErrorF("-core generate core dump on fatal error\n");
ErrorF("-dpi int screen resolution in dots per inch\n");
#ifdef DPMSExtension
@@ -660,7 +662,15 @@ ProcessCommandLine(int argc, char *argv[])
#endif
CoreDump = TRUE;
}
- else if ( strcmp( argv[i], "-dpi") == 0)
+ else if ( strcmp( argv[i], "-nocursor") == 0)
+ {
+ EnableCursor = FALSE;
+ }
+ else if ( strcmp( argv[i], "-cursor") == 0)
+ {
+ EnableCursor = TRUE;
+ }
+ else if ( strcmp( argv[i], "-dpi") == 0)
{
if(++i < argc)
monitorResolution = atoi(argv[i]);
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index 33ab4265c..eb83cfeb7 100644
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -129,6 +129,8 @@ typedef struct _CursorScreen {
/* The cursor doesn't show up until the first XDefineCursor() */
static Bool CursorVisible = FALSE;
+Bool EnableCursor = TRUE;
+
static Bool
CursorDisplayCursor (DeviceIntPtr pDev,
ScreenPtr pScreen,
@@ -144,7 +146,7 @@ CursorDisplayCursor (DeviceIntPtr pDev,
* initial root window setup. Not a great way to do it, I admit.
*/
if (ConnectionInfo)
- CursorVisible = TRUE;
+ CursorVisible = EnableCursor;
if (cs->pCursorHideCounts != NULL || !CursorVisible) {
ret = ((*pScreen->RealizeCursor)(pDev, pScreen, pInvisibleCursor) &&
@@ -1052,7 +1054,7 @@ XFixesCursorInit (void)
int i;
if (party_like_its_1989)
- CursorVisible = TRUE;
+ CursorVisible = EnableCursor;
for (i = 0; i < screenInfo.numScreens; i++)
{