diff --git a/src/command.c b/src/command.c index 5dc1a2c..80b8588 100644 --- a/src/command.c +++ b/src/command.c @@ -2987,7 +2987,7 @@ static void perform_external_cmd(int call, int lh, char *ext_cmd) char *lh_d; if (mouse_en) - mouse_hide(); + mouse_disable(); #if SYNC_ENV /* the below is disabled because it seems we don't need * to update our copy of env. djgpp creates the env segment @@ -3095,10 +3095,7 @@ static void perform_external_cmd(int call, int lh, char *ext_cmd) reset_text_attrs(); gppconio_init(); /* video mode could change */ if (mouse_en) - { - mouse_reset(); - mouse_show(); - } + mouse_enable(); sprintf(el, "%d", error_level); setenv("ERRORLEVEL", el, 1); diff --git a/src/ms.c b/src/ms.c index ee7d53d..b7ae4a6 100644 --- a/src/ms.c +++ b/src/ms.c @@ -203,7 +203,7 @@ int mouse_init(void) return 1; } -void mouse_reset(void) +void mouse_enable(void) { __dpmi_regs r = { }; @@ -212,9 +212,11 @@ void mouse_reset(void) r.x.es = newm.segment; r.x.dx = newm.offset16; __dpmi_int(0x33, &r); + + mouse_show(); } -void mouse_done(void) +void mouse_disable(void) { __dpmi_regs r = { }; @@ -225,6 +227,11 @@ void mouse_done(void) r.x.es = oldm.segment; r.x.dx = oldm.offset16; __dpmi_int(0x33, &r); +} + +void mouse_done(void) +{ + mouse_disable(); __dpmi_free_real_mode_callback(&newm); __dpmi_free_memory(mregs.handle); } diff --git a/src/ms.h b/src/ms.h index ea62d8f..43fcccc 100644 --- a/src/ms.h +++ b/src/ms.h @@ -2,7 +2,8 @@ #define MS_H int mouse_init(void); -void mouse_reset(void); +void mouse_enable(void); +void mouse_disable(void); void mouse_done(void); void mouse_show(void); void mouse_hide(void);