djvulibre: ddjvu_page_render() may render pages with some delay
authorAli Gholami Rudi <ali@rudi.ir>
Thu, 21 Jun 2012 14:01:36 +0000 (21 18:31 +0430)
committerAli Gholami Rudi <ali@rudi.ir>
Thu, 21 Jun 2012 14:01:36 +0000 (21 18:31 +0430)
Reported and tested by Sara Fauzia <sara@archlinux.us>

Makefile
djvulibre.c

index eaca2a8..d3b6351 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ fbpdf: fbpdf.o mupdf.o draw.o
                        -ljbig2dec -ljpeg -lz -lopenjpeg -lm
 # djvu support
 fbdjvu: fbpdf.o djvulibre.o draw.o
-       $(CC) -o $@ $^ $(LDFLAGS) -ldjvulibre -ljpeg -lm -lstdc++
+       $(CC) -o $@ $^ $(LDFLAGS) -ldjvulibre -ljpeg -lm -lstdc++ -lpthread
 
 # pdf support using poppler
 poppler.o: poppler.c
index f6d180b..5d395bf 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include <libdjvu/ddjvuapi.h>
 #include "draw.h"
 #include "doc.h"
@@ -29,10 +30,13 @@ static void djvu_render(ddjvu_page_t *page, int mode, void *bitmap, int cols,
                ddjvu_rect_t *prect, ddjvu_rect_t *rrect)
 {
        ddjvu_format_t *fmt;
+       int i = 0;
        fmt = ddjvu_format_create(DDJVU_FORMAT_GREY8, 0, 0);
        ddjvu_format_set_row_order(fmt, 1);
 
-       ddjvu_page_render(page, mode, prect, rrect, fmt, cols, bitmap);
+       while (i++ < 2 && !ddjvu_page_render(page, mode, prect,
+                                               rrect, fmt, cols, bitmap))
+               usleep(100000);
        ddjvu_format_release(fmt);
 }