summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Bo Liu <boliu@google.com> 2021-07-19 10:14:12 -0400
committer Bo Liu <boliu@google.com> 2021-07-19 10:16:05 -0400
commitfe71933655985e94daefccb95aa906102fc21522 (patch)
treef10e736da0c51b8aa4e3232fa1d9f5b1f9792354
parent9028f4992c7d1a0b41b92dbce7781fa8c1d34da8 (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.cpp20
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*>(&params.color_space_toXYZD50));
+ if (draw_gl_params.color_space_ptr) {
+ draw_gl_params.color_space_ptr->toXYZD50(
+ reinterpret_cast<skcms_Matrix3x3*>(&params.color_space_toXYZD50));
+ } else {
+ // Assume sRGB.
+ memcpy(&params.color_space_toXYZD50, &SkNamedGamut::kSRGB,
+ sizeof(params.color_space_toXYZD50));
+ }
SupportData* support = static_cast<SupportData*>(data);
support->callbacks.draw_gl(functor, support->data, &params);
@@ -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*>(&params.color_space_toXYZD50));
+ if (draw_vk_params.color_space_ptr) {
+ draw_vk_params.color_space_ptr->toXYZD50(
+ reinterpret_cast<skcms_Matrix3x3*>(&params.color_space_toXYZD50));
+ } else {
+ // Assume sRGB.
+ memcpy(&params.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) {