diff -up xloadimage.4.1/options.c.sub-second-delay xloadimage.4.1/options.c
--- xloadimage.4.1/options.c.sub-second-delay 2013-01-02 13:23:23.726173587 -0500
+++ xloadimage.4.1/options.c 2013-01-02 13:23:37.706185351 -0500
@@ -720,7 +720,7 @@ void processOptions(argc, argv, rglobal,
continue;
#else /* !NO_DELAY */
- newopt->info.delay= getInteger(DELAY, argv[a]);
+ newopt->info.delay= getFloat(DELAY, argv[a]);
break;
#endif /* !NO_DELAY */
diff -up xloadimage.4.1/options.h.sub-second-delay xloadimage.4.1/options.h
--- xloadimage.4.1/options.h.sub-second-delay 2013-01-02 13:25:44.297294626 -0500
+++ xloadimage.4.1/options.h 2013-01-02 13:26:25.338329430 -0500
@@ -49,7 +49,7 @@ typedef struct option {
unsigned int x, y, w, h; /* area of image to be used */
} clip;
unsigned int colors; /* max # of colors to use for this image */
- unsigned int delay; /* # of seconds delay before auto pic advance */
+ double delay; /* # of seconds delay before auto pic advance */
char *display; /* display name */
struct {
char *type; /* image type */
diff -up xloadimage.4.1/window.c.sub-second-delay xloadimage.4.1/window.c
--- xloadimage.4.1/window.c.sub-second-delay 2013-01-02 13:24:13.903216792 -0500
+++ xloadimage.4.1/window.c 2013-01-02 13:25:35.928287337 -0500
@@ -583,9 +583,9 @@ char imageInWindow(disp, scrn, image, gl
install= (getOption(global_options, INSTALL) != NULL);
private_cmap= (getOption(global_options, PRIVATE) != NULL);
if ((opt= getOption(image_options, DELAY)))
- delay= opt->info.delay;
+ delay= opt->info.delay*1000000;
else if ((opt= getOption(global_options, DELAY)))
- delay= opt->info.delay;
+ delay= opt->info.delay*1000000;
else
delay= 0;
if ((opt= getOption(image_options, VISUAL)))
@@ -872,7 +872,10 @@ char imageInWindow(disp, scrn, image, gl
#ifdef ENABLE_TIMEOUT
AlarmWentOff = 0;
signal(SIGALRM, delayAlarmHandler);
- alarm(delay);
+ if (delay > 999999)
+ alarm(delay/1000000);
+ else
+ ualarm(delay,0);
#endif /* ENABLE_TIMEOUT */
}