Make SkMatrix44::invert() check for finite 1/det instead of magic value

Previously we were checking to see if the magnitude of
determinant of the matrix to be inverted was less than 
1.0e-8, which is a magic number possibly plucked from 
Graphics Gems. After some discussion, it's been determined 
(ha) that we can simply check to see if 1/det is finite and 
if so proceed.

BUG=222926

Committed: http://code.google.com/p/skia/source/detail?r=10758

R=reed@google.com, shawnsingh@chromium.org

Author: jvanverth@google.com

Review URL: https://chromiumcodereview.appspot.com/22904003

git-svn-id: http://skia.googlecode.com/svn/trunk@10818 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/utils/SkMatrix44.cpp b/src/utils/SkMatrix44.cpp
index 92c8715..9ceecbd 100644
--- a/src/utils/SkMatrix44.cpp
+++ b/src/utils/SkMatrix44.cpp
@@ -529,13 +529,16 @@
     // Calculate the determinant
     double det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
 
-    if (dabs(det) < TOO_SMALL_FOR_DETERMINANT) {
+    double invdet = 1.0 / det;
+    // If det is zero, we want to return false. However, we also want to return false
+    // if 1/det overflows to infinity (i.e. det is denormalized). Both of these are
+    // handled by checking that 1/det is finite.
+    if (!sk_float_isfinite(invdet)) {
         return false;
     }
     if (NULL == inverse) {
         return true;
     }
-    double invdet = 1.0 / det;
 
     b00 *= invdet;
     b01 *= invdet;
@@ -568,7 +571,6 @@
     inverse->fMat[3][3] = SkDoubleToMScalar(a20 * b03 - a21 * b01 + a22 * b00);
     inverse->dirtyTypeMask();
 
-    inverse->dirtyTypeMask();
     return true;
 }