summaryrefslogtreecommitdiffstats
path: root/cc/stubs/skia_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'cc/stubs/skia_utils.h')
-rw-r--r--cc/stubs/skia_utils.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/cc/stubs/skia_utils.h b/cc/stubs/skia_utils.h
index d7b1fbf..8404fa3 100644
--- a/cc/stubs/skia_utils.h
+++ b/cc/stubs/skia_utils.h
@@ -5,11 +5,23 @@
#ifndef CC_STUBS_SKIAUTILS_H_
#define CC_STUBS_SKIAUTILS_H_
+#include <limits>
+
+#include "third_party/skia/include/core/SkScalar.h"
+
namespace cc {
+// Skia has problems when passed infinite, etc floats, filter them to 0.
inline SkScalar FloatToSkScalar(float f)
{
- return SkFloatToScalar(isfinite(f) ? f : 0);
+ // This checks if |f| is NaN.
+ if (f != f)
+ return 0;
+ if (f == std::numeric_limits<double>::infinity())
+ return 0;
+ if (f == -std::numeric_limits<double>::infinity())
+ return 0;
+ return SkFloatToScalar(f);
}
}