diff --git a/src/os_unix.c b/src/os_unix.c
index b044df2..39ace2e 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1228,24 +1228,7 @@
     SIGRETURN;
 }
 
-    static void
-after_sigcont(void)
-{
-# ifdef FEAT_TITLE
-    // Don't change "oldtitle" in a signal handler, set a flag to obtain it
-    // again later.
-    oldtitle_outdated = TRUE;
-# endif
-    settmode(TMODE_RAW);
-    need_check_timestamps = TRUE;
-    did_check_timestamps = FALSE;
-}
-
-#if defined(SIGCONT)
-static RETSIGTYPE sigcont_handler SIGPROTOARG;
-static int in_mch_suspend = FALSE;
-
-# if defined(_REENTRANT) && defined(SIGCONT)
+#if defined(_REENTRANT) && defined(SIGCONT)
 /*
  * On Solaris with multi-threading, suspending might not work immediately.
  * Catch the SIGCONT signal, which will be used as an indication whether the
@@ -1257,7 +1240,7 @@
  * volatile because it is used in signal handler sigcont_handler().
  */
 static volatile int sigcont_received;
-# endif
+static RETSIGTYPE sigcont_handler SIGPROTOARG;
 
 /*
  * signal handler for SIGCONT
@@ -1265,38 +1248,7 @@
     static RETSIGTYPE
 sigcont_handler SIGDEFARG(sigarg)
 {
-    if (in_mch_suspend)
-    {
-# if defined(_REENTRANT) && defined(SIGCONT)
-	sigcont_received = TRUE;
-# endif
-    }
-    else
-    {
-	// We didn't suspend ourselves, assume we were stopped by a SIGSTOP
-	// signal (which can't be intercepted) and get a SIGCONT.  Need to get
-	// back to a sane mode and redraw.
-	after_sigcont();
-
-	update_screen(CLEAR);
-	if (State & CMDLINE)
-	    redrawcmdline();
-	else if (State == HITRETURN || State == SETWSIZE || State == ASKMORE
-		|| State == EXTERNCMD || State == CONFIRM || exmode_active)
-	    repeat_message();
-	else if (redrawing())
-	    setcursor();
-#if defined(FEAT_INS_EXPAND)
-	if (pum_visible())
-	{
-	    redraw_later(NOT_VALID);
-	    ins_compl_show_pum();
-	}
-#endif
-	cursor_on_force();
-	out_flush();
-    }
-
+    sigcont_received = TRUE;
     SIGRETURN;
 }
 #endif
@@ -1379,8 +1331,6 @@
 {
     /* BeOS does have SIGTSTP, but it doesn't work. */
 #if defined(SIGTSTP) && !defined(__BEOS__)
-    in_mch_suspend = TRUE;
-
     out_flush();	    /* needed to make cursor visible on some systems */
     settmode(TMODE_COOK);
     out_flush();	    /* needed to disable mouse on some systems */
@@ -1412,9 +1362,16 @@
 	    mch_delay(wait_time, FALSE);
     }
 # endif
-    in_mch_suspend = FALSE;
 
-    after_sigcont();
+# ifdef FEAT_TITLE
+    /*
+     * Set oldtitle to NULL, so the current title is obtained again.
+     */
+    VIM_CLEAR(oldtitle);
+# endif
+    settmode(TMODE_RAW);
+    need_check_timestamps = TRUE;
+    did_check_timestamps = FALSE;
 #else
     suspend_shell();
 #endif
@@ -1454,7 +1411,7 @@
 #ifdef SIGTSTP
     signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
 #endif
-#if defined(SIGCONT)
+#if defined(_REENTRANT) && defined(SIGCONT)
     signal(SIGCONT, sigcont_handler);
 #endif
 
diff --git a/src/proto/term.pro b/src/proto/term.pro
index 1b8ab5f..c68d7ab 100644
--- a/src/proto/term.pro
+++ b/src/proto/term.pro
@@ -52,7 +52,6 @@
 int mouse_has(int c);
 int mouse_model_popup(void);
 void scroll_start(void);
-void cursor_on_force(void);
 void cursor_on(void);
 void cursor_off(void);
 void term_cursor_mode(int forced);
diff --git a/src/term.c b/src/term.c
index 66f03ee..97ddf8b 100644
--- a/src/term.c
+++ b/src/term.c
@@ -3834,23 +3834,16 @@
 static int cursor_is_off = FALSE;
 
 /*
- * Enable the cursor without checking if it's already enabled.
- */
-    void
-cursor_on_force(void)
-{
-    out_str(T_VE);
-    cursor_is_off = FALSE;
-}
-
-/*
  * Enable the cursor.
  */
     void
 cursor_on(void)
 {
     if (cursor_is_off)
-	cursor_on_force();
+    {
+	out_str(T_VE);
+	cursor_is_off = FALSE;
+    }
 }
 
 /*
diff --git a/src/version.c b/src/version.c
index 4cb2f34..42a81cc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    302,
+/**/
     301,
 /**/
     300,
