diff options
author | 2011-11-09 14:27:52 +0000 | |
---|---|---|
committer | 2011-11-09 14:27:52 +0000 | |
commit | c6771eb000b8f15b579da90a964772765e3e4cff (patch) | |
tree | 13fb5037d5333de86ce540469bd28a223683fbd4 | |
parent | Auto-repeat keys in WSKBD_RAW mode is not needed. (diff) | |
download | wireguard-openbsd-c6771eb000b8f15b579da90a964772765e3e4cff.tar.xz wireguard-openbsd-c6771eb000b8f15b579da90a964772765e3e4cff.zip |
If directly open /dev/wskbdX, then wskbdX be removed from mux wskbd,
but if close wskbdX, wskbdX not returned to mux. Fix it.
ok miod@
-rw-r--r-- | sys/dev/wscons/wskbd.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/sys/dev/wscons/wskbd.c b/sys/dev/wscons/wskbd.c index 5fac46762db..0802530e338 100644 --- a/sys/dev/wscons/wskbd.c +++ b/sys/dev/wscons/wskbd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: wskbd.c,v 1.69 2011/06/24 19:47:49 naddy Exp $ */ +/* $OpenBSD: wskbd.c,v 1.70 2011/11/09 14:27:52 shadchin Exp $ */ /* $NetBSD: wskbd.c,v 1.80 2005/05/04 01:52:16 augustss Exp $ */ /* @@ -825,6 +825,21 @@ wskbdclose(dev_t dev, int flags, int mode, struct proc *p) (void)wskbd_enable(sc, 0); wsevent_fini(evar); +#if NWSMUX > 0 + if (sc->sc_base.me_parent == NULL) { + int mux, error; + + DPRINTF(("wskbdclose: attach\n")); + mux = sc->sc_base.me_dv.dv_cfdata->wskbddevcf_mux; + if (mux >= 0) { + error = wsmux_attach_sc(wsmux_getmux(mux), &sc->sc_base); + if (error) + printf("%s: can't attach mux (error=%d)\n", + sc->sc_base.me_dv.dv_xname, error); + } + } +#endif + return (0); } |