You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.6 KiB
41 lines
1.6 KiB
diff -Nur xv-3.10a_old/xvevent.c xv-3.10a/xvevent.c
|
|
--- xv-3.10a_old/xvevent.c 2008-05-06 12:44:41.000000000 -0600
|
|
+++ xv-3.10a/xvevent.c 2008-05-06 15:55:59.000000000 -0600
|
|
@@ -82,7 +82,7 @@
|
|
int retval,done,waiting;
|
|
#ifdef USE_TICKS
|
|
clock_t waitsec_ticks=0L, orgtime_ticks=0L, curtime_ticks;
|
|
- clock_t elapsed_ticks=0L, remaining_interval;
|
|
+ clock_t elapsed_ticks=0L, remaining_interval, clock_ticks_per_sec;
|
|
#else
|
|
time_t orgtime=0L, curtime;
|
|
#endif
|
|
@@ -126,7 +126,8 @@
|
|
all pending events (ie, drawing the image the first time)
|
|
have been dealt with: START WAITING */
|
|
#ifdef USE_TICKS
|
|
- waitsec_ticks = (clock_t)(waitsec * CLK_TCK);
|
|
+ clock_ticks_per_sec = sysconf(_SC_CLK_TCK);
|
|
+ waitsec_ticks = (clock_t)(waitsec * clock_ticks_per_sec);
|
|
orgtime_ticks = times(NULL); /* unclear if NULL valid, but OK on Linux */
|
|
#else
|
|
orgtime = time(NULL);
|
|
@@ -168,11 +169,14 @@
|
|
} else
|
|
elapsed_ticks = curtime_ticks - orgtime_ticks;
|
|
remaining_interval = waitsec_ticks - elapsed_ticks;
|
|
- if (remaining_interval >= (clock_t)(1 * CLK_TCK))
|
|
+ if (remaining_interval > clock_ticks_per_sec)
|
|
sleep(1);
|
|
else {
|
|
- /* less than one second remaining: do delay in msec, then return */
|
|
- Timer((remaining_interval * 1000L) / CLK_TCK); /* can't overflow */
|
|
+ if (remaining_interval > 0) {
|
|
+ /* less than one second remaining: do delay in msec, then return */
|
|
+ Timer((remaining_interval * 1000L) / clock_ticks_per_sec); /* can't overflow */
|
|
+ }
|
|
+
|
|
return waitloop? NEXTLOOP : NEXTQUIT;
|
|
}
|
|
#else
|