diff options
author | Simon Farnsworth <simon.farnsworth@onelan.co.uk> | 2009-04-23 16:15:01 +0100 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2009-04-28 10:43:53 +1000 |
commit | 707af5f8c5fae3b6c4c5125a91917667bb0ab908 (patch) | |
tree | 79a631146be2c69da4c10b88c88e9a54ee6075a9 | |
parent | 40a8f2f4088aa353de733a11327b628ef13a52e6 (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.h | 4 | ||||
-rw-r--r-- | os/utils.c | 12 | ||||
-rw-r--r-- | xfixes/cursor.c | 6 |
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++) { |