let update_pointer (lev: level) (p: pointer) (ie:input_event)
: pointer =
match (p lev) with
| Running rw -> raise WrongStateInUpdate
| Waiting sw ->
match (pi lev ie) with
| Suppress -> p
| Event (ie') ->
let (s2, oes2) = receive ie' sw in
(fun lev' -> if lev'=lev then s2
else p lev')