From 3570a106e0570d7f064bb723d94d6744f65bf6fb Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Sat, 11 Sep 2004 00:09:05 +0000
Subject: [PATCH] More old mouse stuff... fix variable bug.

---
 src/conio/mouse.c    |  1 -
 src/conio/win32cio.c | 45 ++++++++++++++++----------------------------
 2 files changed, 16 insertions(+), 30 deletions(-)

diff --git a/src/conio/mouse.c b/src/conio/mouse.c
index 4f8ad0e7f6..95871f2ea4 100644
--- a/src/conio/mouse.c
+++ b/src/conio/mouse.c
@@ -143,7 +143,6 @@ void add_outevent(int event, int x, int y)
 
 void ciolib_mouse_thread(void *data)
 {
-	struct timespec timeout;
 	struct in_mouse_event *old_in_event;
 	int	timedout;
 	int timeout_button=0;
diff --git a/src/conio/win32cio.c b/src/conio/win32cio.c
index e1bcb024ef..8dfa299e87 100644
--- a/src/conio/win32cio.c
+++ b/src/conio/win32cio.c
@@ -25,11 +25,9 @@ const struct vid_mode vid_modes[VID_MODES]={
 	,{C80X50,80,50,1}
 };
 
-static struct cio_mouse_event	cio_last_button_press;
-static struct cio_mouse_event	last_mouse_click;
-
 static int lastch=0;
 static int domouse=0;
+static DWORD last_state=0;
 static int xpos=1;
 static int ypos=1;
 
@@ -84,7 +82,6 @@ unsigned char WintoDOSAttr(WORD newattr)
 
 int win32_kbhit(void)
 {
-	static DWORD last_state=0;
 	INPUT_RECORD input;
 	DWORD num=0;
 
@@ -99,27 +96,27 @@ int win32_kbhit(void)
 		if(domouse) {
 			if(input.EventType==MOUSE_EVENT) {
 				if(input.Event.MouseEvent.dwEventFlags==MOUSE_MOVED) {
-					ciomouse_gotevent(CIOLIB_MOUSE_MOVE,dwMousePosition.X+1,dwMousePosition.Y+1);
+					ciomouse_gotevent(CIOLIB_MOUSE_MOVE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 				}
 				if(!input.Event.MouseEvent.dwEventFlags) {
 					switch(input.Event.MouseEvent.dwButtonState ^ last_state) {
 						case FROM_LEFT_1ST_BUTTON_PRESSED:
 							if(input.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED)
-								ciomouse_gotevent(CIOLIB_BUTTON_1_PRESS,dwMousePosition.X+1,dwMousePosition.Y+1);
+								ciomouse_gotevent(CIOLIB_BUTTON_1_PRESS,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 							else
-								ciomouse_gotevent(CIOLIB_BUTTON_1_RELEASE,dwMousePosition.X+1,dwMousePosition.Y+1);
+								ciomouse_gotevent(CIOLIB_BUTTON_1_RELEASE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 							break;
 						case FROM_LEFT_2ND_BUTTON_PRESSED:
 							if(input.Event.MouseEvent.dwButtonState & FROM_LEFT_2ND_BUTTON_PRESSED)
-								ciomouse_gotevent(CIOLIB_BUTTON_2_PRESS,dwMousePosition.X+1,dwMousePosition.Y+1);
+								ciomouse_gotevent(CIOLIB_BUTTON_2_PRESS,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 							else
-								ciomouse_gotevent(CIOLIB_BUTTON_2_RELEASE,dwMousePosition.X+1,dwMousePosition.Y+1);
+								ciomouse_gotevent(CIOLIB_BUTTON_2_RELEASE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 							break;
 						case RIGHTMOST_BUTTON_PRESSED:
 							if(input.Event.MouseEvent.dwButtonState & RIGHTMOST_BUTTON_PRESSED)
-								ciomouse_gotevent(CIOLIB_BUTTON_3_PRESS,dwMousePosition.X+1,dwMousePosition.Y+1);
+								ciomouse_gotevent(CIOLIB_BUTTON_3_PRESS,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 							else
-								ciomouse_gotevent(CIOLIB_BUTTON_3_RELEASE,dwMousePosition.X+1,dwMousePosition.Y+1);
+								ciomouse_gotevent(CIOLIB_BUTTON_3_RELEASE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 							break;
 					}
 					last_state=input.Event.MouseEvent.dwButtonState;
@@ -149,7 +146,7 @@ int win32_getch(void)
 			lastch>>=8;
 			return(ch);
 		}
-		if(mousepending())
+		if(mouse_pending())
 			lastch=CIO_KEY_MOUSE;
 		if(!ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &input, 1, &num)
 			|| !num || (input.EventType!=KEY_EVENT && input.EventType!=MOUSE_EVENT))
@@ -183,27 +180,27 @@ int win32_getch(void)
 				if(domouse) {
 					if(input.EventType==MOUSE_EVENT) {
 						if(input.Event.MouseEvent.dwEventFlags==MOUSE_MOVED) {
-							ciomouse_gotevent(CIOLIB_MOUSE_MOVE,dwMousePosition.X+1,dwMousePosition.Y+1);
+							ciomouse_gotevent(CIOLIB_MOUSE_MOVE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 						}
 						if(!input.Event.MouseEvent.dwEventFlags) {
 							switch(input.Event.MouseEvent.dwButtonState ^ last_state) {
 								case FROM_LEFT_1ST_BUTTON_PRESSED:
 									if(input.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED)
-										ciomouse_gotevent(CIOLIB_BUTTON_1_PRESS,dwMousePosition.X+1,dwMousePosition.Y+1);
+										ciomouse_gotevent(CIOLIB_BUTTON_1_PRESS,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 									else
-										ciomouse_gotevent(CIOLIB_BUTTON_1_RELEASE,dwMousePosition.X+1,dwMousePosition.Y+1);
+										ciomouse_gotevent(CIOLIB_BUTTON_1_RELEASE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 									break;
 								case FROM_LEFT_2ND_BUTTON_PRESSED:
 									if(input.Event.MouseEvent.dwButtonState & FROM_LEFT_2ND_BUTTON_PRESSED)
-										ciomouse_gotevent(CIOLIB_BUTTON_2_PRESS,dwMousePosition.X+1,dwMousePosition.Y+1);
+										ciomouse_gotevent(CIOLIB_BUTTON_2_PRESS,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 									else
-										ciomouse_gotevent(CIOLIB_BUTTON_2_RELEASE,dwMousePosition.X+1,dwMousePosition.Y+1);
+										ciomouse_gotevent(CIOLIB_BUTTON_2_RELEASE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 									break;
 								case RIGHTMOST_BUTTON_PRESSED:
 									if(input.Event.MouseEvent.dwButtonState & RIGHTMOST_BUTTON_PRESSED)
-										ciomouse_gotevent(CIOLIB_BUTTON_3_PRESS,dwMousePosition.X+1,dwMousePosition.Y+1);
+										ciomouse_gotevent(CIOLIB_BUTTON_3_PRESS,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 									else
-										ciomouse_gotevent(CIOLIB_BUTTON_3_RELEASE,dwMousePosition.X+1,dwMousePosition.Y+1);
+										ciomouse_gotevent(CIOLIB_BUTTON_3_RELEASE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 									break;
 							}
 							last_state=input.Event.MouseEvent.dwButtonState;
@@ -212,8 +209,6 @@ int win32_getch(void)
 				}
 		}
 	}
-
-	return(0);
 }
 
 int win32_getche(void)
@@ -240,17 +235,9 @@ int win32_initciolib(long inmode)
 	if(!SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), conmode))
 		return(0);
 	cio_api.mouse=1;
-	memset(&cio_last_button_press,0,sizeof(cio_last_button_press));
-	memset(&last_mouse_click,0,sizeof(last_mouse_click));
 	return(1);
 }
 
-int win32_getmouse(struct cio_mouse_event *mevent)
-{
-	memcpy(mevent,&last_mouse_click,sizeof(last_mouse_click));
-	return(0);
-}
-
 int win32_hidemouse(void)
 {
 	domouse=0;
-- 
GitLab