diff options
Diffstat (limited to 'community/mupdf')
-rw-r--r-- | community/mupdf/PKGBUILD | 46 | ||||
-rw-r--r-- | community/mupdf/mupdf-1.2-fix-dirty-flag-handling.patch | 88 | ||||
-rw-r--r-- | community/mupdf/mupdf.install | 12 |
3 files changed, 146 insertions, 0 deletions
diff --git a/community/mupdf/PKGBUILD b/community/mupdf/PKGBUILD new file mode 100644 index 000000000..5dbd5a16b --- /dev/null +++ b/community/mupdf/PKGBUILD @@ -0,0 +1,46 @@ +# $Id: PKGBUILD 92586 2013-06-09 13:32:10Z bpiotrowski $ +# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl> +# Contributor: Brad Fanella <bradfanella@archlinux.us> +# Contributor: Stefan Husmann <stefan-husmann@t-online.de> +# Contributor: Pierre-Paul Paquin <pierrepaulpaquin@gmail.com> +# Contributor: xduugu (.desktop and install files) + +pkgname=mupdf +pkgver=1.2 +pkgrel=3 +pkgdesc='Lightweight PDF and XPS viewer' +arch=('i686' 'x86_64') +url='http://mupdf.com' +license=('GPL3') +depends=('freetype2' 'libjpeg' 'jbig2dec' 'openjpeg' 'libxext' 'desktop-file-utils' 'xdg-utils') +install=mupdf.install +source=(https://mupdf.googlecode.com/files/$pkgname-$pkgver-source.zip + mupdf-1.2-fix-dirty-flag-handling.patch) +sha256sums=('9bc9e31ec27c091dad37f70940bd799e46ab6da4299bc58e803bff3dbb07dc3b' + 'd5c9ab3c5e9975909562230569a149a569f44fcd2b24c0b57e889b541a017f10') + +prepare() { + cd $pkgname-$pkgver-source + patch -Np1 -i "$srcdir"/mupdf-1.2-fix-dirty-flag-handling.patch +} + +build() { + CFLAGS+=' -fPIC' + CXXFLAGS+=' -fPIC' + + cd $pkgname-$pkgver-source + rm -rf thirdparty + make build=release prefix=/usr +} + +package() { + cd $pkgname-$pkgver-source + make build=release prefix="$pkgdir"/usr install + + sed -i 's/mupdf.xpm/mupdf/' debian/mupdf.desktop + sed -i 's/application\/x-pdf/application\/x-pdf/' debian/mupdf.desktop + install -Dm644 debian/mupdf.desktop "$pkgdir"/usr/share/applications/mupdf.desktop + install -Dm644 debian/mupdf.xpm "$pkgdir"/usr/share/pixmaps/mupdf.xpm + + chmod 644 "$pkgdir"/usr/lib/libfitz.a +} diff --git a/community/mupdf/mupdf-1.2-fix-dirty-flag-handling.patch b/community/mupdf/mupdf-1.2-fix-dirty-flag-handling.patch new file mode 100644 index 000000000..ec22ac328 --- /dev/null +++ b/community/mupdf/mupdf-1.2-fix-dirty-flag-handling.patch @@ -0,0 +1,88 @@ +From a20d6a58ebc6c60ff44f0f385cf399ee6fca55bf Mon Sep 17 00:00:00 2001 +From: Robin Watts <Robin.Watts@artifex.com> +Date: Fri, 26 Apr 2013 12:21:17 +0100 +Subject: [PATCH] Fix dirty flag handling bug in X11 event loop. + +When I added transition handling to mupdf, I broke the X11 +behaviour of coalescing all events and only blitting when +idle. + +This commit restores that behaviour, except when transitions +are actually in progress (when it still blits instantly). +--- + apps/pdfapp.c | 6 +++++- + apps/x11_main.c | 8 ++++++-- + 2 files changed, 11 insertions(+), 3 deletions(-) + +diff --git a/apps/pdfapp.c b/apps/pdfapp.c +index c3b7d54..ff23c4b 100644 +--- a/apps/pdfapp.c ++++ b/apps/pdfapp.c +@@ -1677,7 +1677,6 @@ void pdfapp_postblit(pdfapp_t *app) + if (llama >= 256) + { + /* Completed. */ +- app->in_transit = 0; + fz_drop_pixmap(app->ctx, app->image); + app->image = app->new_image; + app->new_image = NULL; +@@ -1689,4 +1688,9 @@ void pdfapp_postblit(pdfapp_t *app) + else + fz_generate_transition(app->image, app->old_image, app->new_image, llama, &app->transition); + winrepaint(app); ++ if (llama >= 256) ++ { ++ /* Completed. */ ++ app->in_transit = 0; ++ } + } +diff --git a/apps/x11_main.c b/apps/x11_main.c +index 364013c..987e359 100644 +--- a/apps/x11_main.c ++++ b/apps/x11_main.c +@@ -79,6 +79,7 @@ static int mapped = 0; + static Cursor xcarrow, xchand, xcwait, xccaret; + static int justcopied = 0; + static int dirty = 0; ++static int transition_dirty = 0; + static int dirtysearch = 0; + static char *password = ""; + static XColor xbgcolor; +@@ -504,6 +505,8 @@ static void winblit(pdfapp_t *app) + void winrepaint(pdfapp_t *app) + { + dirty = 1; ++ if (app->in_transit) ++ transition_dirty = 1; + } + + void winrepaintsearch(pdfapp_t *app) +@@ -779,7 +782,7 @@ int main(int argc, char **argv) + + while (!closing) + { +- while (!closing && XPending(xdpy) && !dirty) ++ while (!closing && XPending(xdpy) && !transition_dirty) + { + XNextEvent(xdpy, &xevt); + +@@ -886,6 +889,7 @@ int main(int argc, char **argv) + else if (dirtysearch) + winblitsearch(&gapp); + dirty = 0; ++ transition_dirty = 0; + dirtysearch = 0; + pdfapp_postblit(&gapp); + } +@@ -899,7 +903,7 @@ int main(int argc, char **argv) + timeradd(&now, &tmo, &tmo_at); + } + +- if (XPending(xdpy) || dirty) ++ if (XPending(xdpy) || transition_dirty) + continue; + + timeout = NULL; +-- +1.8.3 + diff --git a/community/mupdf/mupdf.install b/community/mupdf/mupdf.install new file mode 100644 index 000000000..b4632d36d --- /dev/null +++ b/community/mupdf/mupdf.install @@ -0,0 +1,12 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} + |