From be2e7121872afe2f561f20c4660da854c31e1b66 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Wed, 27 Apr 2016 09:46:48 -0700 Subject: [PATCH] Syncronize pdfium initialization between users. Only initalize pdfium once per process and only destroy it once all users are gone. Bug: 28387883, 28370309, 28388184 Change-Id: I41e8f6da247a7cfab5fb9d159c047293719192c3 --- core/jni/android/graphics/pdf/PdfEditor.cpp | 18 +++++++++--------- core/jni/android/graphics/pdf/PdfRenderer.cpp | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/core/jni/android/graphics/pdf/PdfEditor.cpp b/core/jni/android/graphics/pdf/PdfEditor.cpp index 2c840bdb3a1b9..d2d39cd0b286e 100644 --- a/core/jni/android/graphics/pdf/PdfEditor.cpp +++ b/core/jni/android/graphics/pdf/PdfEditor.cpp @@ -51,22 +51,22 @@ static struct { jfieldID bottom; } gRectClassInfo; -static Mutex sLock; - -static int sUnmatchedInitRequestCount = 0; +// Also used in PdfRenderer.cpp +Mutex sPdfiumLock; +int sUnmatchedPdfiumInitRequestCount = 0; static void initializeLibraryIfNeeded() { - Mutex::Autolock _l(sLock); - if (sUnmatchedInitRequestCount == 0) { + Mutex::Autolock _l(sPdfiumLock); + if (sUnmatchedPdfiumInitRequestCount == 0) { FPDF_InitLibrary(); } - sUnmatchedInitRequestCount++; + sUnmatchedPdfiumInitRequestCount++; } static void destroyLibraryIfNeeded() { - Mutex::Autolock _l(sLock); - sUnmatchedInitRequestCount--; - if (sUnmatchedInitRequestCount == 0) { + Mutex::Autolock _l(sPdfiumLock); + sUnmatchedPdfiumInitRequestCount--; + if (sUnmatchedPdfiumInitRequestCount == 0) { FPDF_DestroyLibrary(); } } diff --git a/core/jni/android/graphics/pdf/PdfRenderer.cpp b/core/jni/android/graphics/pdf/PdfRenderer.cpp index 27f34936c0acf..71bec7845fd71 100644 --- a/core/jni/android/graphics/pdf/PdfRenderer.cpp +++ b/core/jni/android/graphics/pdf/PdfRenderer.cpp @@ -43,22 +43,22 @@ static struct { jfieldID y; } gPointClassInfo; -static Mutex sLock; - -static int sUnmatchedInitRequestCount = 0; +// See PdfEditor.cpp +extern Mutex sPdfiumLock; +extern int sUnmatchedPdfiumInitRequestCount; static void initializeLibraryIfNeeded() { - Mutex::Autolock _l(sLock); - if (sUnmatchedInitRequestCount == 0) { + Mutex::Autolock _l(sPdfiumLock); + if (sUnmatchedPdfiumInitRequestCount == 0) { FPDF_InitLibrary(); } - sUnmatchedInitRequestCount++; + sUnmatchedPdfiumInitRequestCount++; } static void destroyLibraryIfNeeded() { - Mutex::Autolock _l(sLock); - sUnmatchedInitRequestCount--; - if (sUnmatchedInitRequestCount == 0) { + Mutex::Autolock _l(sPdfiumLock); + sUnmatchedPdfiumInitRequestCount--; + if (sUnmatchedPdfiumInitRequestCount == 0) { FPDF_DestroyLibrary(); } }