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();