Commit | Line | Data |
---|---|---|
3144ee8a AT |
1 | /* xscreensaver, Copyright (c) 1992, 1996, 1997, 2003 |
2 | * Jamie Zawinski <jwz@jwz.org> | |
3 | * | |
4 | * Permission to use, copy, modify, distribute, and sell this software and its | |
5 | * documentation for any purpose is hereby granted without fee, provided that | |
6 | * the above copyright notice appear in all copies and that both that | |
7 | * copyright notice and this permission notice appear in supporting | |
8 | * documentation. No representations are made about the suitability of this | |
9 | * software for any purpose. It is provided "as is" without express or | |
10 | * implied warranty. | |
11 | */ | |
12 | ||
13 | #ifdef HAVE_CONFIG_H | |
14 | # include "config.h" | |
15 | #else /* !HAVE_CONFIG_H */ | |
16 | # ifndef NO_SELECT | |
17 | # define HAVE_SELECT | |
18 | # endif | |
19 | #endif /* !HAVE_CONFIG_H */ | |
20 | ||
21 | #ifdef __STDC__ | |
22 | # include <stdlib.h> | |
23 | #endif | |
24 | ||
25 | #ifdef HAVE_UNISTD_H | |
26 | # include <unistd.h> | |
27 | #endif | |
28 | ||
29 | #if defined(VMS) | |
30 | # include <descrip.h> | |
31 | # include <stdio.h> | |
32 | # include <lib$routines.h> | |
33 | #elif defined(HAVE_SELECT) | |
34 | # include <sys/time.h> /* for struct timeval */ | |
35 | #endif | |
36 | ||
37 | ||
38 | #ifdef __SCREENHACK_USLEEP_H__ | |
39 | ERROR, do not include that here | |
40 | #endif | |
41 | ||
42 | extern void screenhack_usleep (unsigned long usecs); /* suppress warning */ | |
43 | ||
44 | void | |
45 | screenhack_usleep (unsigned long usecs) | |
46 | { | |
47 | # if defined(VMS) | |
48 | float seconds = ((float) usecs)/1000000.0; | |
49 | unsigned long int statvms = lib$wait(&seconds); | |
50 | ||
51 | #elif defined(HAVE_SELECT) | |
52 | /* usleep() doesn't exist everywhere, and select() is faster anyway. */ | |
53 | struct timeval tv; | |
54 | tv.tv_sec = usecs / 1000000L; | |
55 | tv.tv_usec = usecs % 1000000L; | |
56 | (void) select (0, 0, 0, 0, &tv); | |
57 | ||
58 | #else /* !VMS && !HAVE_SELECT */ | |
59 | /* If you don't have select() or usleep(), I guess you lose... | |
60 | Maybe you have napms() instead? Let me know. */ | |
61 | usleep (usecs); | |
62 | ||
63 | #endif /* !VMS && !HAVE_SELECT */ | |
64 | } |