aboutsummaryrefslogtreecommitdiffstats
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorPaul Eggert <[email protected]>2012-06-22 14:17:42 -0700
committerPaul Eggert <[email protected]>2012-06-22 14:17:42 -0700
commitd35af63cd671563fd188c3b0a1ef30067027c7aa (patch)
treec9e01847ccf788e23794684da9331c3e0defd0d3 /src/xdisp.c
parentf143bfe38b43ad0a9d817f05c25e418982dca06f (diff)
Support higher-resolution time stamps.
Fixes: debbugs:9000
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index a0739eb552..0050d64493 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -29077,18 +29077,20 @@ start_hourglass (void)
{
#if defined (HAVE_WINDOW_SYSTEM)
EMACS_TIME delay;
- int secs = DEFAULT_HOURGLASS_DELAY, usecs = 0;
cancel_hourglass ();
- if (NUMBERP (Vhourglass_delay))
- {
- double duration = extract_float (Vhourglass_delay);
- if (0 < duration)
- duration_to_sec_usec (duration, &secs, &usecs);
- }
+ if (INTEGERP (Vhourglass_delay)
+ && XINT (Vhourglass_delay) > 0)
+ EMACS_SET_SECS_NSECS (delay,
+ min (XINT (Vhourglass_delay), TYPE_MAXIMUM (time_t)),
+ 0);
+ else if (FLOATP (Vhourglass_delay)
+ && XFLOAT_DATA (Vhourglass_delay) > 0)
+ delay = EMACS_TIME_FROM_DOUBLE (XFLOAT_DATA (Vhourglass_delay));
+ else
+ EMACS_SET_SECS_NSECS (delay, DEFAULT_HOURGLASS_DELAY, 0);
- EMACS_SET_SECS_USECS (delay, secs, usecs);
hourglass_atimer = start_atimer (ATIMER_RELATIVE, delay,
show_hourglass, NULL);
#endif