Index: src/x/xmouse.c
===================================================================
--- src/x/xmouse.c	(revision 7742)
+++ src/x/xmouse.c	(working copy)
@@ -133,6 +133,9 @@
 
    _xwin_mouse_interrupt = _xwin_mousedrv_handler;
 
+    /* Create invisible X cursor.  */
+   _xwin_hide_x_mouse();
+
    XUNLOCK();
 
    return num_buttons;
Index: src/x/xwin.c
===================================================================
--- src/x/xwin.c	(revision 7742)
+++ src/x/xwin.c	(working copy)
@@ -332,7 +332,7 @@
 /* _xwin_hide_x_mouse:
  *  Create invisible X cursor.
  */
-static void _xwin_hide_x_mouse(void)
+void _xwin_hide_x_mouse(void)
 {
    unsigned long gcmask;
    XGCValues gcvalues;
@@ -482,9 +482,6 @@
    gcvalues.plane_mask = AllPlanes;
    _xwin.gc = XCreateGC(_xwin.display, _xwin.window, gcmask, &gcvalues);
 
-   /* Create invisible X cursor.  */
-   _xwin_hide_x_mouse();
-
 #ifdef ALLEGRO_XWINDOWS_WITH_XCURSOR
    /* Detect if ARGB cursors are supported */
    _xwin.support_argb_cursor = XcursorSupportsARGB(_xwin.display);
Index: src/x/xwin.h
===================================================================
--- src/x/xwin.h	(revision 7742)
+++ src/x/xwin.h	(working copy)
@@ -30,7 +30,7 @@
 /* The allegro X11 icon */
 AL_VAR(void *, allegro_icon);
 
-
+AL_FUNC(void, _xwin_hide_x_mouse, (void));
 AL_FUNC(void, _xwin_set_warped_mouse_mode, (int permanent));
 AL_FUNC(int, _xwin_open_display, (char *name));
 AL_FUNC(void, _xwin_close_display, (void));
