summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndriy Gapon <avg@FreeBSD.org>2015-02-16 13:02:00 +0000
committerAndriy Gapon <avg@FreeBSD.org>2015-02-16 13:02:00 +0000
commit7116636e6b18398bc831ff10e45d626f610b77cc (patch)
treee351108ef5dae9f52da63340537526df194d780d
parente63db0d3e51034e0f29fa1bb0d1f5300b3fe157a (diff)
Notes
-rw-r--r--sys/dev/vt/vt_core.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c
index f0acf224b31f..962784939d07 100644
--- a/sys/dev/vt/vt_core.c
+++ b/sys/dev/vt/vt_core.c
@@ -2518,6 +2518,7 @@ vt_upgrade(struct vt_device *vd)
{
struct vt_window *vw;
unsigned int i;
+ int register_handlers;
if (!vty_enabled(VTY_VT))
return;
@@ -2546,6 +2547,7 @@ vt_upgrade(struct vt_device *vd)
if (vd->vd_curwindow == NULL)
vd->vd_curwindow = vd->vd_windows[VT_CONSWINDOW];
+ register_handlers = 0;
if (!(vd->vd_flags & VDF_ASYNC)) {
/* Attach keyboard. */
vt_allocate_keyboard(vd);
@@ -2557,18 +2559,21 @@ vt_upgrade(struct vt_device *vd)
vd->vd_flags |= VDF_ASYNC;
callout_reset(&vd->vd_timer, hz / VT_TIMERFREQ, vt_timer, vd);
vd->vd_timer_armed = 1;
+ register_handlers = 1;
+ }
+
+ VT_UNLOCK(vd);
+
+ /* Refill settings with new sizes. */
+ vt_resize(vd);
+ if (register_handlers) {
/* Register suspend/resume handlers. */
EVENTHANDLER_REGISTER(power_suspend_early, vt_suspend_handler,
vd, EVENTHANDLER_PRI_ANY);
EVENTHANDLER_REGISTER(power_resume, vt_resume_handler, vd,
EVENTHANDLER_PRI_ANY);
}
-
- VT_UNLOCK(vd);
-
- /* Refill settings with new sizes. */
- vt_resize(vd);
}
static void