From: Tassilo Horn Date: Tue, 12 Feb 2013 11:53:34 +0000 (+0100) Subject: Improve previous patch to allow for multiple simultaneous ODF->PDF X-Git-Tag: emacs-24.3.90~173^2~7^2~74 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=957a6f2652fc543c58d74aca237041cd6e0fe2fa;p=emacs.git Improve previous patch to allow for multiple simultaneous ODF->PDF conversions. --- diff --git a/lisp/doc-view.el b/lisp/doc-view.el index da0b728ce91..dcc28a52322 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el @@ -939,22 +939,21 @@ is named like ODF with the extension turned to pdf." "Convert ODF to PDF asynchronously and call CALLBACK when finished. The converted PDF is put into the current cache directory, and it is named like ODF with the extension turned to pdf." - (doc-view-start-process "odf->pdf" doc-view-odf->pdf-converter-program - (list - ;; FIXME: soffice doesn't work when there's - ;; another running LibreOffice instance, in - ;; which case it returns success without - ;; actually doing anything. See - ;; LibreOffice bug - ;; https://bugs.freedesktop.org/show_bug.cgi?id=37531. - ;; A workaround is to start soffice with a - ;; separate UserInstallation directory. - (concat "-env:UserInstallation=file://" - (expand-file-name (format "libreoffice-docview%d" (user-uid)) - temporary-file-directory)) - "--headless" "--convert-to" "pdf" - "--outdir" (doc-view-current-cache-dir) odf) - callback)) + ;; FIXME: soffice doesn't work when there's another running + ;; LibreOffice instance, in which case it returns success without + ;; actually doing anything. See LibreOffice bug + ;; https://bugs.freedesktop.org/show_bug.cgi?id=37531. A workaround + ;; is to start soffice with a separate UserInstallation directory. + (let ((tmp-user-install-dir (make-temp-file "libreoffice-docview" t))) + (doc-view-start-process "odf->pdf" doc-view-odf->pdf-converter-program + (list + (concat "-env:UserInstallation=file://" + tmp-user-install-dir) + "--headless" "--convert-to" "pdf" + "--outdir" (doc-view-current-cache-dir) odf) + (lambda () + (delete-directory tmp-user-install-dir t) + (funcall callback))))) (defun doc-view-pdf/ps->png (pdf-ps png) ;; FIXME: Fix name and docstring to account for djvu&tiff.