@@ -113,8 +113,8 @@ static struct {
113
113
Bit16u dspeed_val;
114
114
float senv_x;
115
115
float senv_y;
116
- Bit16u updateRegion_x[2 ];
117
- Bit16u updateRegion_y[2 ];
116
+ Bit16s updateRegion_x[2 ];
117
+ Bit16s updateRegion_y[2 ];
118
118
Bit16u doubleSpeedThreshold;
119
119
Bit16u language;
120
120
Bit16u cursorType;
@@ -251,6 +251,11 @@ void DrawCursorText() {
251
251
// Restore Background
252
252
RestoreCursorBackgroundText ();
253
253
254
+ // Check if cursor in update region
255
+ if ((POS_Y <= mouse.updateRegion_y [1 ]) && (POS_Y >= mouse.updateRegion_y [0 ]) &&
256
+ (POS_X <= mouse.updateRegion_x [1 ]) && (POS_X >= mouse.updateRegion_x [0 ])) {
257
+ return ;
258
+ }
254
259
255
260
// Save Background
256
261
mouse.backposx = POS_X>>3 ;
@@ -674,10 +679,7 @@ void Mouse_AfterNewVideoMode(bool setmode) {
674
679
mouse.language = 0 ;
675
680
mouse.page = 0 ;
676
681
mouse.doubleSpeedThreshold = 64 ;
677
- mouse.updateRegion_x [0 ] = 1 ;
678
- mouse.updateRegion_y [0 ] = 1 ;
679
- mouse.updateRegion_x [1 ] = 1 ;
680
- mouse.updateRegion_y [1 ] = 1 ;
682
+ mouse.updateRegion_y [1 ] = -1 ; // offscreen
681
683
mouse.cursorType = 0 ; // Test
682
684
mouse.enabled =true ;
683
685
@@ -716,6 +718,7 @@ static Bitu INT33_Handler(void) {
716
718
break ;
717
719
case 0x01 : /* Show Mouse */
718
720
if (mouse.hidden ) mouse.hidden --;
721
+ mouse.updateRegion_y [1 ] = -1 ; // offscreen
719
722
Mouse_AutoLock (true );
720
723
DrawCursor ();
721
724
break ;
@@ -838,11 +841,12 @@ static Bitu INT33_Handler(void) {
838
841
case 0x0f : /* Define mickey/pixel rate */
839
842
Mouse_SetMickeyPixelRate (reg_cx,reg_dx);
840
843
break ;
841
- case 0x10 : /* Define screen region for updating */
842
- mouse.updateRegion_x [0 ]=reg_cx;
843
- mouse.updateRegion_y [0 ]=reg_dx;
844
- mouse.updateRegion_x [1 ]=reg_si;
845
- mouse.updateRegion_y [1 ]=reg_di;
844
+ case 0x10 : /* Define screen region for updating */
845
+ mouse.updateRegion_x [0 ]=(Bit16s)reg_cx;
846
+ mouse.updateRegion_y [0 ]=(Bit16s)reg_dx;
847
+ mouse.updateRegion_x [1 ]=(Bit16s)reg_si;
848
+ mouse.updateRegion_y [1 ]=(Bit16s)reg_di;
849
+ DrawCursor ();
846
850
break ;
847
851
case 0x11 : /* Get number of buttons */
848
852
reg_ax=0xffff ;
0 commit comments