Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd63364c authored by Scot Doyle's avatar Scot Doyle Committed by Greg Kroah-Hartman
Browse files

vt: add cursor blink interval escape sequence



Add an escape sequence to specify the current console's cursor blink
interval. The interval is specified as a number of milliseconds until
the next cursor display state toggle, from 50 to 65535. /proc/loadavg
did not show a difference with a one msec interval, but the lower
bound is set to 50 msecs since slower hardware wasn't tested.

Store the interval in the vc_data structure for later access by fbcon,
initializing the value to fbcon's current hardcoded value of 200 msecs.

Signed-off-by: default avatarScot Doyle <lkml14@scotdoyle.com>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ad909b3f
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -135,6 +135,7 @@ const struct consw *conswitchp;
 */
 */
#define DEFAULT_BELL_PITCH	750
#define DEFAULT_BELL_PITCH	750
#define DEFAULT_BELL_DURATION	(HZ/8)
#define DEFAULT_BELL_DURATION	(HZ/8)
#define DEFAULT_CURSOR_BLINK_MS	200


struct vc vc_cons [MAX_NR_CONSOLES];
struct vc vc_cons [MAX_NR_CONSOLES];


@@ -1590,6 +1591,13 @@ static void setterm_command(struct vc_data *vc)
		case 15: /* activate the previous console */
		case 15: /* activate the previous console */
			set_console(last_console);
			set_console(last_console);
			break;
			break;
		case 16: /* set cursor blink duration in msec */
			if (vc->vc_npar >= 1 && vc->vc_par[1] >= 50 &&
					vc->vc_par[1] <= USHRT_MAX)
				vc->vc_cur_blink_ms = vc->vc_par[1];
			else
				vc->vc_cur_blink_ms = DEFAULT_CURSOR_BLINK_MS;
			break;
	}
	}
}
}


@@ -1717,6 +1725,7 @@ static void reset_terminal(struct vc_data *vc, int do_clear)


	vc->vc_bell_pitch = DEFAULT_BELL_PITCH;
	vc->vc_bell_pitch = DEFAULT_BELL_PITCH;
	vc->vc_bell_duration = DEFAULT_BELL_DURATION;
	vc->vc_bell_duration = DEFAULT_BELL_DURATION;
	vc->vc_cur_blink_ms = DEFAULT_CURSOR_BLINK_MS;


	gotoxy(vc, 0, 0);
	gotoxy(vc, 0, 0);
	save_cur(vc);
	save_cur(vc);
+1 −0
Original line number Original line Diff line number Diff line
@@ -104,6 +104,7 @@ struct vc_data {
	unsigned int    vc_resize_user;         /* resize request from user */
	unsigned int    vc_resize_user;         /* resize request from user */
	unsigned int	vc_bell_pitch;		/* Console bell pitch */
	unsigned int	vc_bell_pitch;		/* Console bell pitch */
	unsigned int	vc_bell_duration;	/* Console bell duration */
	unsigned int	vc_bell_duration;	/* Console bell duration */
	unsigned short	vc_cur_blink_ms;	/* Cursor blink duration */
	struct vc_data **vc_display_fg;		/* [!] Ptr to var holding fg console for this display */
	struct vc_data **vc_display_fg;		/* [!] Ptr to var holding fg console for this display */
	struct uni_pagedir *vc_uni_pagedir;
	struct uni_pagedir *vc_uni_pagedir;
	struct uni_pagedir **vc_uni_pagedir_loc; /* [!] Location of uni_pagedir variable for this console */
	struct uni_pagedir **vc_uni_pagedir_loc; /* [!] Location of uni_pagedir variable for this console */