1 1.10 blymn /* $NetBSD: timeout.c,v 1.10 2024/12/23 02:58:04 blymn Exp $ */ 2 1.1 mrg 3 1.3 jdc /*- 4 1.3 jdc * Copyright (c) 1999 The NetBSD Foundation, Inc. 5 1.1 mrg * All rights reserved. 6 1.1 mrg * 7 1.3 jdc * This code is derived from software contributed to The NetBSD Foundation 8 1.3 jdc * by Julian Coleman. 9 1.3 jdc * 10 1.1 mrg * Redistribution and use in source and binary forms, with or without 11 1.1 mrg * modification, are permitted provided that the following conditions 12 1.1 mrg * are met: 13 1.1 mrg * 1. Redistributions of source code must retain the above copyright 14 1.1 mrg * notice, this list of conditions and the following disclaimer. 15 1.3 jdc * 2. Redistributions in binary form must reproduce the above copyright 16 1.3 jdc * notice, this list of conditions and the following disclaimer in the 17 1.3 jdc * documentation and/or other materials provided with the distribution. 18 1.1 mrg * 19 1.3 jdc * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 1.3 jdc * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 1.3 jdc * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 1.3 jdc * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 1.3 jdc * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 1.3 jdc * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.3 jdc * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.3 jdc * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 1.3 jdc * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.3 jdc * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 1.3 jdc * POSSIBILITY OF SUCH DAMAGE. 30 1.1 mrg */ 31 1.5 blymn 32 1.5 blymn #include <sys/cdefs.h> 33 1.5 blymn #ifndef lint 34 1.10 blymn __RCSID("$NetBSD: timeout.c,v 1.10 2024/12/23 02:58:04 blymn Exp $"); 35 1.5 blymn #endif /* not lint */ 36 1.1 mrg 37 1.1 mrg #include "curses.h" 38 1.2 blymn #include "curses_private.h" 39 1.1 mrg 40 1.4 blymn #ifndef _CURSES_USE_MACROS 41 1.4 blymn 42 1.1 mrg /* 43 1.1 mrg * timeout -- 44 1.4 blymn * Set the getch() delay for stdscr. 45 1.4 blymn */ 46 1.4 blymn void 47 1.4 blymn timeout(int delay) 48 1.4 blymn { 49 1.9 roy 50 1.4 blymn wtimeout(stdscr, delay); 51 1.4 blymn } 52 1.4 blymn 53 1.4 blymn #endif 54 1.4 blymn 55 1.4 blymn /* 56 1.4 blymn * wtimeout -- 57 1.1 mrg * Set the getch() delay for a window. 58 1.1 mrg */ 59 1.1 mrg void 60 1.4 blymn wtimeout(WINDOW *win, int delay) 61 1.1 mrg { 62 1.1 mrg 63 1.10 blymn if (__predict_false(win == NULL)) 64 1.10 blymn return; 65 1.10 blymn 66 1.2 blymn if (delay < 0) 67 1.1 mrg win->delay = -1; 68 1.2 blymn else if (!delay) 69 1.2 blymn win->delay = delay; 70 1.2 blymn else { 71 1.6 christos /* 72 1.6 christos * 1. VTIME is a char 73 1.6 christos * 2. timeout granularity is ms but VTIME is 0.1s 74 1.6 christos */ 75 1.6 christos if (delay > 25500) 76 1.6 christos win->delay = 255; 77 1.6 christos else 78 1.8 dsl win->delay = (delay - 1)/ 100 + 1; 79 1.1 mrg } 80 1.1 mrg } 81