Reset Skia renderer state in FPDF_DestroyLibrary()
Since FPDF_InitLibraryWithConfig() can set the Skia renderer to use,
FPDF_DestroyLibrary() should reset it. Also slightly reorder
FPDF_DestroyLibrary() to be the reverse of FPDF_InitLibraryWithConfig().
Bug: pdfium:2087
Change-Id: I6f00c2a3cff2209b72501268873f917f84ce25cd
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/113091
Reviewed-by: Nigi <nigi@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index 107653e..d6a58cc 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -116,7 +116,7 @@
bool g_bLibraryInitialized = false;
-void UseRendererType(FPDF_RENDERER_TYPE public_type) {
+void SetRendererType(FPDF_RENDERER_TYPE public_type) {
// Internal definition of renderer types must stay updated with respect to
// the public definition, such that all public definitions can be mapped to
// an internal definition in `CFX_DefaultRenderDevice`. A public definition
@@ -140,6 +140,13 @@
#endif
}
+void ResetRendererType() {
+#if defined(_SKIA_SUPPORT_)
+ CFX_DefaultRenderDevice::SetRendererType(
+ CFX_DefaultRenderDevice::kDefaultRenderer);
+#endif
+}
+
RetainPtr<const CPDF_Object> GetXFAEntryFromDocument(const CPDF_Document* doc) {
const CPDF_Dictionary* root = doc->GetRoot();
if (!root)
@@ -235,7 +242,7 @@
platform);
if (config->version >= 4)
- UseRendererType(config->m_RendererType);
+ SetRendererType(config->m_RendererType);
}
g_bLibraryInitialized = true;
}
@@ -244,13 +251,16 @@
if (!g_bLibraryInitialized)
return;
+ ResetRendererType();
+
+ IJS_Runtime::Destroy();
+
#ifdef PDF_ENABLE_XFA
CPDFXFA_ModuleDestroy();
#endif // PDF_ENABLE_XFA
CPDF_PageModule::Destroy();
CFX_GEModule::Destroy();
- IJS_Runtime::Destroy();
g_bLibraryInitialized = false;
}
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index 72ab956..698a554 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -2132,8 +2132,7 @@
CloseDocument();
}
- // TODO(pdfium:2087): These checksums should not be equal.
- EXPECT_EQ(agg_checksum, skia_checksum);
+ EXPECT_NE(agg_checksum, skia_checksum);
EmbedderTestEnvironment::GetInstance()->TearDown();
EmbedderTestEnvironment::GetInstance()->SetUp();