login

<     >

2021-01-18 19:55:01 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

Merge pull request #13 from rdebath/patch-fixes

Various fixes -- MIN/MAX delay controls, empty frame.

diff --git a/gif.c b/gif.c
index 544574c..8fd6607 100644
--- a/gif.c
+++ b/gif.c
@@ -232,6 +232,7 @@ add_frame(GIF *gif, uint16_t d)
     } else
     if (!get_bbox(gif, &w, &h, &x, &y)) {
         /* image's not changed; save one pixel just to add delay */
+        if (!d) return;
         w = h = 1;
         x = y = 0;
     }

diff --git a/main.c b/main.c
index 77ea103..bac0a10 100644
--- a/main.c
+++ b/main.c
@@ -131,7 +131,7 @@ convert_script()
     int w, h;
     int i, c;
     float d;
-    uint16_t rd;
+    uint16_t rd, id = 0;
     float lastdone, done;
     char pb[options.barsize+1];
     char fl[512];
@@ -229,11 +229,12 @@ convert_script()
             }
         }
         d += (MIN(t, options.maxdelay) * 100.0 / options.divisor);
-        rd = (uint16_t) (d + 0.5);
+        rd = (uint16_t) MIN((int)(d + 0.5), 65535);
         if (i && rd >= MIN_DELAY) {
             render(term, font, gif, rd);
             d = 0;
         }
+        if (i == 0) { id = rd; rd = 0; d = 0; }
         while (n--) {
             read(fd, &ch, 1);
             parse(term, ch);
@@ -242,6 +243,7 @@ convert_script()
             term->mode &= ~M_CURSORVIS;
         i++;
     }
+    rd += id;
     if (options.barsize) {
         while (lastdone < options.barsize-2) {
             putchar('#');
@@ -249,7 +251,7 @@ convert_script()
         }
         putchar('\n');
     }
-    render(term, font, gif, MAX(rd, MIN_DELAY));
+    render(term, font, gif, MAX(rd, 1));
     close_gif(gif);
     free(term);
     return 0;