diff options
Diffstat (limited to 'cc/stubs/skia_utils.h')
-rw-r--r-- | cc/stubs/skia_utils.h | 14 |
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); } } |