summaryrefslogtreecommitdiff
path: root/community/mupdf
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-07-19 01:10:32 -0700
committerroot <root@rshg054.dnsready.net>2013-07-19 01:10:32 -0700
commit8fbc0076a4827ddc6af92e0b9daa4c4c31450808 (patch)
tree03fd0e2921ebd53228d9a93e32ed3976b636cbea /community/mupdf
parente445a313723389ba9ee1fded025c567dae5b21ea (diff)
Fri Jul 19 01:09:18 PDT 2013
Diffstat (limited to 'community/mupdf')
-rw-r--r--community/mupdf/PKGBUILD46
-rw-r--r--community/mupdf/mupdf-1.2-fix-dirty-flag-handling.patch88
-rw-r--r--community/mupdf/mupdf.install12
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
+}
+