xref: /freebsd/lib/libvgl/mouse.c (revision e67f5b9fcac5f0ebb78f0b3a50c0128432cca584)
19a57b7d2SSøren Schmidt /*-
29a57b7d2SSøren Schmidt  * Copyright (c) 1991-1997 S�ren Schmidt
39a57b7d2SSøren Schmidt  * All rights reserved.
49a57b7d2SSøren Schmidt  *
59a57b7d2SSøren Schmidt  * Redistribution and use in source and binary forms, with or without
69a57b7d2SSøren Schmidt  * modification, are permitted provided that the following conditions
79a57b7d2SSøren Schmidt  * are met:
89a57b7d2SSøren Schmidt  * 1. Redistributions of source code must retain the above copyright
99a57b7d2SSøren Schmidt  *    notice, this list of conditions and the following disclaimer
109a57b7d2SSøren Schmidt  *    in this position and unchanged.
119a57b7d2SSøren Schmidt  * 2. Redistributions in binary form must reproduce the above copyright
129a57b7d2SSøren Schmidt  *    notice, this list of conditions and the following disclaimer in the
139a57b7d2SSøren Schmidt  *    documentation and/or other materials provided with the distribution.
149a57b7d2SSøren Schmidt  * 3. The name of the author may not be used to endorse or promote products
159a57b7d2SSøren Schmidt  *    derived from this software withough specific prior written permission
169a57b7d2SSøren Schmidt  *
179a57b7d2SSøren Schmidt  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
189a57b7d2SSøren Schmidt  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
199a57b7d2SSøren Schmidt  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
209a57b7d2SSøren Schmidt  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
219a57b7d2SSøren Schmidt  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
229a57b7d2SSøren Schmidt  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
239a57b7d2SSøren Schmidt  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
249a57b7d2SSøren Schmidt  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
259a57b7d2SSøren Schmidt  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
269a57b7d2SSøren Schmidt  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
279a57b7d2SSøren Schmidt  */
289a57b7d2SSøren Schmidt 
29e67f5b9fSMatthew Dillon #include <sys/cdefs.h>
30e67f5b9fSMatthew Dillon __FBSDID("$FreeBSD$");
31e67f5b9fSMatthew Dillon 
329a57b7d2SSøren Schmidt #include <stdio.h>
339a57b7d2SSøren Schmidt #include <sys/types.h>
349a57b7d2SSøren Schmidt #include <sys/ioctl.h>
359a57b7d2SSøren Schmidt #include <sys/signal.h>
3600d25f51SPoul-Henning Kamp #include <sys/consio.h>
3700d25f51SPoul-Henning Kamp #include <sys/fbio.h>
389a57b7d2SSøren Schmidt #include "vgl.h"
399a57b7d2SSøren Schmidt 
409a57b7d2SSøren Schmidt #define X 0xff
419a57b7d2SSøren Schmidt static byte StdAndMask[MOUSE_IMG_SIZE*MOUSE_IMG_SIZE] = {
429a57b7d2SSøren Schmidt 	X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
439a57b7d2SSøren Schmidt 	X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,
449a57b7d2SSøren Schmidt 	X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,
459a57b7d2SSøren Schmidt 	X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,
469a57b7d2SSøren Schmidt 	X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,
479a57b7d2SSøren Schmidt 	X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,
489a57b7d2SSøren Schmidt 	X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,
499a57b7d2SSøren Schmidt 	X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,
509a57b7d2SSøren Schmidt 	X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,
519a57b7d2SSøren Schmidt 	0,0,0,X,X,X,X,0,0,0,0,0,0,0,0,0,
529a57b7d2SSøren Schmidt 	0,0,0,X,X,X,X,X,0,0,0,0,0,0,0,0,
539a57b7d2SSøren Schmidt 	0,0,0,0,X,X,X,X,0,0,0,0,0,0,0,0,
549a57b7d2SSøren Schmidt 	0,0,0,0,X,X,X,X,0,0,0,0,0,0,0,0,
559a57b7d2SSøren Schmidt 	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
569a57b7d2SSøren Schmidt 	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
579a57b7d2SSøren Schmidt 	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
589a57b7d2SSøren Schmidt };
599a57b7d2SSøren Schmidt static byte StdOrMask[MOUSE_IMG_SIZE*MOUSE_IMG_SIZE] = {
609a57b7d2SSøren Schmidt 	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
619a57b7d2SSøren Schmidt 	0,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
629a57b7d2SSøren Schmidt 	0,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,
639a57b7d2SSøren Schmidt 	0,X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,
649a57b7d2SSøren Schmidt 	0,X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,
659a57b7d2SSøren Schmidt 	0,X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,
669a57b7d2SSøren Schmidt 	0,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,
679a57b7d2SSøren Schmidt 	0,X,X,0,X,0,0,0,0,0,0,0,0,0,0,0,
689a57b7d2SSøren Schmidt 	0,0,0,0,X,X,0,0,0,0,0,0,0,0,0,0,
699a57b7d2SSøren Schmidt 	0,0,0,0,X,X,0,0,0,0,0,0,0,0,0,0,
709a57b7d2SSøren Schmidt 	0,0,0,0,0,X,X,0,0,0,0,0,0,0,0,0,
719a57b7d2SSøren Schmidt 	0,0,0,0,0,X,X,0,0,0,0,0,0,0,0,0,
729a57b7d2SSøren Schmidt 	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
739a57b7d2SSøren Schmidt 	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
749a57b7d2SSøren Schmidt 	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
759a57b7d2SSøren Schmidt 	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
769a57b7d2SSøren Schmidt };
779a57b7d2SSøren Schmidt #undef X
789a57b7d2SSøren Schmidt static VGLBitmap VGLMouseStdAndMask =
795acf51eaSKazutaka YOKOTA     VGLBITMAP_INITIALIZER(MEMBUF, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE, StdAndMask);
809a57b7d2SSøren Schmidt static VGLBitmap VGLMouseStdOrMask =
815acf51eaSKazutaka YOKOTA     VGLBITMAP_INITIALIZER(MEMBUF, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE, StdOrMask);
829a57b7d2SSøren Schmidt static VGLBitmap *VGLMouseAndMask, *VGLMouseOrMask;
839a57b7d2SSøren Schmidt static byte map[MOUSE_IMG_SIZE*MOUSE_IMG_SIZE];
845acf51eaSKazutaka YOKOTA static VGLBitmap VGLMouseSave =
855acf51eaSKazutaka YOKOTA     VGLBITMAP_INITIALIZER(MEMBUF, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE, map);
869a57b7d2SSøren Schmidt static int VGLMouseVisible = 0;
879a57b7d2SSøren Schmidt static int VGLMouseFrozen = 0;
889a57b7d2SSøren Schmidt static int VGLMouseShown = 0;
899a57b7d2SSøren Schmidt static int VGLMouseXpos = 0;
909a57b7d2SSøren Schmidt static int VGLMouseYpos = 0;
919a57b7d2SSøren Schmidt static int VGLMouseButtons = 0;
929a57b7d2SSøren Schmidt 
939a57b7d2SSøren Schmidt void
949a57b7d2SSøren Schmidt VGLMousePointerShow()
959a57b7d2SSøren Schmidt {
969a57b7d2SSøren Schmidt   byte buf[MOUSE_IMG_SIZE*MOUSE_IMG_SIZE];
975acf51eaSKazutaka YOKOTA   VGLBitmap buffer =
985acf51eaSKazutaka YOKOTA     VGLBITMAP_INITIALIZER(MEMBUF, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE, buf);
999a57b7d2SSøren Schmidt   byte crtcidx, crtcval, gdcidx, gdcval;
1009a57b7d2SSøren Schmidt   int pos;
1019a57b7d2SSøren Schmidt 
1029a57b7d2SSøren Schmidt   if (!VGLMouseVisible) {
1039a57b7d2SSøren Schmidt     VGLMouseVisible = 1;
1049a57b7d2SSøren Schmidt     crtcidx = inb(0x3c4);
1059a57b7d2SSøren Schmidt     crtcval = inb(0x3c5);
1069a57b7d2SSøren Schmidt     gdcidx = inb(0x3ce);
1079a57b7d2SSøren Schmidt     gdcval = inb(0x3cf);
1089a57b7d2SSøren Schmidt     __VGLBitmapCopy(VGLDisplay, VGLMouseXpos, VGLMouseYpos,
1099a57b7d2SSøren Schmidt 		  &VGLMouseSave, 0, 0, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE);
1109a57b7d2SSøren Schmidt     bcopy(VGLMouseSave.Bitmap, buffer.Bitmap, MOUSE_IMG_SIZE*MOUSE_IMG_SIZE);
1119a57b7d2SSøren Schmidt     for (pos = 0; pos <  MOUSE_IMG_SIZE*MOUSE_IMG_SIZE; pos++)
1129a57b7d2SSøren Schmidt       buffer.Bitmap[pos]=(buffer.Bitmap[pos]&~(VGLMouseAndMask->Bitmap[pos])) |
1139a57b7d2SSøren Schmidt 			   VGLMouseOrMask->Bitmap[pos];
1149a57b7d2SSøren Schmidt     __VGLBitmapCopy(&buffer, 0, 0, VGLDisplay,
1159a57b7d2SSøren Schmidt 		  VGLMouseXpos, VGLMouseYpos, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE);
1169a57b7d2SSøren Schmidt     outb(0x3c4, crtcidx);
1179a57b7d2SSøren Schmidt     outb(0x3c5, crtcval);
1189a57b7d2SSøren Schmidt     outb(0x3ce, gdcidx);
1199a57b7d2SSøren Schmidt     outb(0x3cf, gdcval);
1209a57b7d2SSøren Schmidt   }
1219a57b7d2SSøren Schmidt }
1229a57b7d2SSøren Schmidt 
1239a57b7d2SSøren Schmidt void
1249a57b7d2SSøren Schmidt VGLMousePointerHide()
1259a57b7d2SSøren Schmidt {
1269a57b7d2SSøren Schmidt   byte crtcidx, crtcval, gdcidx, gdcval;
1279a57b7d2SSøren Schmidt 
1289a57b7d2SSøren Schmidt   if (VGLMouseVisible) {
1299a57b7d2SSøren Schmidt     VGLMouseVisible = 0;
1309a57b7d2SSøren Schmidt     crtcidx = inb(0x3c4);
1319a57b7d2SSøren Schmidt     crtcval = inb(0x3c5);
1329a57b7d2SSøren Schmidt     gdcidx = inb(0x3ce);
1339a57b7d2SSøren Schmidt     gdcval = inb(0x3cf);
1349a57b7d2SSøren Schmidt     __VGLBitmapCopy(&VGLMouseSave, 0, 0, VGLDisplay,
1359a57b7d2SSøren Schmidt 		  VGLMouseXpos, VGLMouseYpos, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE);
1369a57b7d2SSøren Schmidt     outb(0x3c4, crtcidx);
1379a57b7d2SSøren Schmidt     outb(0x3c5, crtcval);
1389a57b7d2SSøren Schmidt     outb(0x3ce, gdcidx);
1399a57b7d2SSøren Schmidt     outb(0x3cf, gdcval);
1409a57b7d2SSøren Schmidt   }
1419a57b7d2SSøren Schmidt }
1429a57b7d2SSøren Schmidt 
1439a57b7d2SSøren Schmidt void
1449a57b7d2SSøren Schmidt VGLMouseMode(int mode)
1459a57b7d2SSøren Schmidt {
1469a57b7d2SSøren Schmidt   if (mode == VGL_MOUSESHOW) {
1479a57b7d2SSøren Schmidt     if (VGLMouseShown == VGL_MOUSEHIDE) {
1489a57b7d2SSøren Schmidt       VGLMousePointerShow();
1499a57b7d2SSøren Schmidt       VGLMouseShown = VGL_MOUSESHOW;
1509a57b7d2SSøren Schmidt     }
1519a57b7d2SSøren Schmidt   }
1529a57b7d2SSøren Schmidt   else {
1539a57b7d2SSøren Schmidt     if (VGLMouseShown == VGL_MOUSESHOW) {
1549a57b7d2SSøren Schmidt       VGLMousePointerHide();
1559a57b7d2SSøren Schmidt       VGLMouseShown = VGL_MOUSEHIDE;
1569a57b7d2SSøren Schmidt     }
1579a57b7d2SSøren Schmidt   }
1589a57b7d2SSøren Schmidt }
1599a57b7d2SSøren Schmidt 
1609a57b7d2SSøren Schmidt void
1619a57b7d2SSøren Schmidt VGLMouseAction(int dummy)
1629a57b7d2SSøren Schmidt {
1639a57b7d2SSøren Schmidt   struct mouse_info mouseinfo;
1649a57b7d2SSøren Schmidt 
1659a57b7d2SSøren Schmidt   if (VGLMouseFrozen) {
1669a57b7d2SSøren Schmidt     VGLMouseFrozen++;
1679a57b7d2SSøren Schmidt     return;
1689a57b7d2SSøren Schmidt   }
1699a57b7d2SSøren Schmidt   mouseinfo.operation = MOUSE_GETINFO;
1709a57b7d2SSøren Schmidt   ioctl(0, CONS_MOUSECTL, &mouseinfo);
1719a57b7d2SSøren Schmidt   if (VGLMouseShown == VGL_MOUSESHOW)
1729a57b7d2SSøren Schmidt     VGLMousePointerHide();
1739a57b7d2SSøren Schmidt   VGLMouseXpos = mouseinfo.u.data.x;
1749a57b7d2SSøren Schmidt   VGLMouseYpos = mouseinfo.u.data.y;
1759a57b7d2SSøren Schmidt   VGLMouseButtons = mouseinfo.u.data.buttons;
1769a57b7d2SSøren Schmidt   if (VGLMouseShown == VGL_MOUSESHOW)
1779a57b7d2SSøren Schmidt     VGLMousePointerShow();
1789a57b7d2SSøren Schmidt }
1799a57b7d2SSøren Schmidt 
1809a57b7d2SSøren Schmidt void
1819a57b7d2SSøren Schmidt VGLMouseSetImage(VGLBitmap *AndMask, VGLBitmap *OrMask)
1829a57b7d2SSøren Schmidt {
1839a57b7d2SSøren Schmidt   if (VGLMouseShown == VGL_MOUSESHOW)
1849a57b7d2SSøren Schmidt     VGLMousePointerHide();
1859a57b7d2SSøren Schmidt   VGLMouseAndMask = AndMask;
1869a57b7d2SSøren Schmidt   VGLMouseOrMask = OrMask;
1879a57b7d2SSøren Schmidt   if (VGLMouseShown == VGL_MOUSESHOW)
1889a57b7d2SSøren Schmidt     VGLMousePointerShow();
1899a57b7d2SSøren Schmidt }
1909a57b7d2SSøren Schmidt 
1919a57b7d2SSøren Schmidt void
1929a57b7d2SSøren Schmidt VGLMouseSetStdImage()
1939a57b7d2SSøren Schmidt {
1949a57b7d2SSøren Schmidt   if (VGLMouseShown == VGL_MOUSESHOW)
1959a57b7d2SSøren Schmidt     VGLMousePointerHide();
1969a57b7d2SSøren Schmidt   VGLMouseAndMask = &VGLMouseStdAndMask;
1979a57b7d2SSøren Schmidt   VGLMouseOrMask = &VGLMouseStdOrMask;
1989a57b7d2SSøren Schmidt   if (VGLMouseShown == VGL_MOUSESHOW)
1999a57b7d2SSøren Schmidt     VGLMousePointerShow();
2009a57b7d2SSøren Schmidt }
2019a57b7d2SSøren Schmidt 
2029a57b7d2SSøren Schmidt int
2039a57b7d2SSøren Schmidt VGLMouseInit(int mode)
2049a57b7d2SSøren Schmidt {
2059a57b7d2SSøren Schmidt   struct mouse_info mouseinfo;
2069a57b7d2SSøren Schmidt   int error;
2079a57b7d2SSøren Schmidt 
2089a57b7d2SSøren Schmidt   VGLMouseSetStdImage();
2099a57b7d2SSøren Schmidt   mouseinfo.operation = MOUSE_MODE;
2109a57b7d2SSøren Schmidt   mouseinfo.u.mode.signal = SIGUSR2;
2119a57b7d2SSøren Schmidt   if ((error = ioctl(0, CONS_MOUSECTL, &mouseinfo)))
2129a57b7d2SSøren Schmidt     return error;
2139a57b7d2SSøren Schmidt   signal(SIGUSR2, VGLMouseAction);
2149a57b7d2SSøren Schmidt   mouseinfo.operation = MOUSE_GETINFO;
2159a57b7d2SSøren Schmidt   ioctl(0, CONS_MOUSECTL, &mouseinfo);
2169a57b7d2SSøren Schmidt   VGLMouseXpos = mouseinfo.u.data.x;
2179a57b7d2SSøren Schmidt   VGLMouseYpos = mouseinfo.u.data.y;
2189a57b7d2SSøren Schmidt   VGLMouseButtons = mouseinfo.u.data.buttons;
2199a57b7d2SSøren Schmidt   VGLMouseMode(mode);
2209a57b7d2SSøren Schmidt   return 0;
2219a57b7d2SSøren Schmidt }
2229a57b7d2SSøren Schmidt 
2239a57b7d2SSøren Schmidt int
2249a57b7d2SSøren Schmidt VGLMouseStatus(int *x, int *y, char *buttons)
2259a57b7d2SSøren Schmidt {
2269a57b7d2SSøren Schmidt   signal(SIGUSR2, SIG_IGN);
2279a57b7d2SSøren Schmidt   *x =  VGLMouseXpos;
2289a57b7d2SSøren Schmidt   *y =  VGLMouseYpos;
2299a57b7d2SSøren Schmidt   *buttons =  VGLMouseButtons;
2309a57b7d2SSøren Schmidt   signal(SIGUSR2, VGLMouseAction);
2319a57b7d2SSøren Schmidt   return VGLMouseShown;
2329a57b7d2SSøren Schmidt }
2339a57b7d2SSøren Schmidt 
2349a57b7d2SSøren Schmidt int
2359a57b7d2SSøren Schmidt VGLMouseFreeze(int x, int y, int width, int hight, byte color)
2369a57b7d2SSøren Schmidt {
2379a57b7d2SSøren Schmidt   if (!VGLMouseFrozen) {
2389a57b7d2SSøren Schmidt     VGLMouseFrozen = 1;
2399a57b7d2SSøren Schmidt     if (width > 1 || hight > 1) {		/* bitmap */
2409a57b7d2SSøren Schmidt       if (VGLMouseShown == 1) {
2419a57b7d2SSøren Schmidt         int overlap;
2429a57b7d2SSøren Schmidt 
2439a57b7d2SSøren Schmidt         if (x > VGLMouseXpos)
2449a57b7d2SSøren Schmidt           overlap = (VGLMouseXpos + MOUSE_IMG_SIZE) - x;
2459a57b7d2SSøren Schmidt         else
2469a57b7d2SSøren Schmidt           overlap = (x + width) - VGLMouseXpos;
2479a57b7d2SSøren Schmidt         if (overlap > 0) {
2489a57b7d2SSøren Schmidt           if (y > VGLMouseYpos)
2499a57b7d2SSøren Schmidt             overlap = (VGLMouseYpos + MOUSE_IMG_SIZE) - y;
2509a57b7d2SSøren Schmidt           else
2519a57b7d2SSøren Schmidt             overlap = (y + hight) - VGLMouseYpos;
2529a57b7d2SSøren Schmidt           if (overlap > 0)
2539a57b7d2SSøren Schmidt             VGLMousePointerHide();
2549a57b7d2SSøren Schmidt         }
2559a57b7d2SSøren Schmidt       }
2569a57b7d2SSøren Schmidt     }
2579a57b7d2SSøren Schmidt     else {				/* bit */
2589a57b7d2SSøren Schmidt       if (VGLMouseShown &&
2599a57b7d2SSøren Schmidt           x >= VGLMouseXpos && x < VGLMouseXpos + MOUSE_IMG_SIZE &&
2609a57b7d2SSøren Schmidt           y >= VGLMouseYpos && y < VGLMouseYpos + MOUSE_IMG_SIZE) {
2619a57b7d2SSøren Schmidt         VGLMouseSave.Bitmap[(y-VGLMouseYpos)*MOUSE_IMG_SIZE+(x-VGLMouseXpos)] =
2629a57b7d2SSøren Schmidt           (color);
2639a57b7d2SSøren Schmidt         if (VGLMouseAndMask->Bitmap
2649a57b7d2SSøren Schmidt           [(y-VGLMouseYpos)*MOUSE_IMG_SIZE+(x-VGLMouseXpos)]) {
2659a57b7d2SSøren Schmidt           return 1;
2669a57b7d2SSøren Schmidt         }
2679a57b7d2SSøren Schmidt       }
2689a57b7d2SSøren Schmidt     }
2699a57b7d2SSøren Schmidt   }
2709a57b7d2SSøren Schmidt   return 0;
2719a57b7d2SSøren Schmidt }
2729a57b7d2SSøren Schmidt 
2739a57b7d2SSøren Schmidt void
2749a57b7d2SSøren Schmidt VGLMouseUnFreeze()
2759a57b7d2SSøren Schmidt {
2769a57b7d2SSøren Schmidt   if (VGLMouseFrozen > 1) {
2779a57b7d2SSøren Schmidt     VGLMouseFrozen = 0;
2789a57b7d2SSøren Schmidt     VGLMouseAction(0);
2799a57b7d2SSøren Schmidt   }
2809a57b7d2SSøren Schmidt   else {
2819a57b7d2SSøren Schmidt     VGLMouseFrozen = 0;
2829a57b7d2SSøren Schmidt     if (VGLMouseShown == VGL_MOUSESHOW && !VGLMouseVisible)
2839a57b7d2SSøren Schmidt       VGLMousePointerShow();
2849a57b7d2SSøren Schmidt   }
2859a57b7d2SSøren Schmidt }
286