diff options
author | 2021-07-19 10:14:12 -0400 | |
---|---|---|
committer | 2021-07-19 10:16:05 -0400 | |
commit | fe71933655985e94daefccb95aa906102fc21522 (patch) | |
tree | f10e736da0c51b8aa4e3232fa1d9f5b1f9792354 | |
parent | 9028f4992c7d1a0b41b92dbce7781fa8c1d34da8 (diff) |
Null check color_space_ptr in draw functor v2
Missed toXYZD50 usage last time. Still assume sRGB if null.
Bug: 187798471
Test: Manually tested setting color_space_ptr to null in
GL/VKFunctorDrawable
Change-Id: Idee2660d368dd55e45f5d07d52839105ba951ff3
-rw-r--r-- | native/webview/plat_support/draw_functor.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/native/webview/plat_support/draw_functor.cpp b/native/webview/plat_support/draw_functor.cpp index 03dd707a1d09..1584350bb6f1 100644 --- a/native/webview/plat_support/draw_functor.cpp +++ b/native/webview/plat_support/draw_functor.cpp @@ -116,8 +116,14 @@ void draw_gl(int functor, void* data, } COMPILE_ASSERT(sizeof(params.color_space_toXYZD50) == sizeof(skcms_Matrix3x3), gamut_transform_size_mismatch); - draw_gl_params.color_space_ptr->toXYZD50( - reinterpret_cast<skcms_Matrix3x3*>(¶ms.color_space_toXYZD50)); + if (draw_gl_params.color_space_ptr) { + draw_gl_params.color_space_ptr->toXYZD50( + reinterpret_cast<skcms_Matrix3x3*>(¶ms.color_space_toXYZD50)); + } else { + // Assume sRGB. + memcpy(¶ms.color_space_toXYZD50, &SkNamedGamut::kSRGB, + sizeof(params.color_space_toXYZD50)); + } SupportData* support = static_cast<SupportData*>(data); support->callbacks.draw_gl(functor, support->data, ¶ms); @@ -196,8 +202,14 @@ void drawVk(int functor, void* data, }; COMPILE_ASSERT(sizeof(params.color_space_toXYZD50) == sizeof(skcms_Matrix3x3), gamut_transform_size_mismatch); - draw_vk_params.color_space_ptr->toXYZD50( - reinterpret_cast<skcms_Matrix3x3*>(¶ms.color_space_toXYZD50)); + if (draw_vk_params.color_space_ptr) { + draw_vk_params.color_space_ptr->toXYZD50( + reinterpret_cast<skcms_Matrix3x3*>(¶ms.color_space_toXYZD50)); + } else { + // Assume sRGB. + memcpy(¶ms.color_space_toXYZD50, &SkNamedGamut::kSRGB, + sizeof(params.color_space_toXYZD50)); + } COMPILE_ASSERT(NELEM(params.transform) == NELEM(draw_vk_params.transform), mismatched_transform_matrix_sizes); for (int i = 0; i < NELEM(params.transform); ++i) { |