Fix SkMatrix44::invert(...) for identity matrices and a NULL parameter

Currently, to check if an SkMatrix44 is singular, we call ::invert(NULL) and
check the result. Usually this does no more work than is necessary. One
case where we do far too much work is if |this| is an identity matrix. In
this case, we do not early out and compute a (partial) determinant (we don't
do the full shebang because there are no perspective components).

BUG=None
R=ajuma@chromium.org, reed@google.com

Author: vollick@chromium.org

Review URL: https://codereview.chromium.org/79333002

git-svn-id: http://skia.googlecode.com/svn/trunk@12327 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/utils/SkMatrix44.cpp b/src/utils/SkMatrix44.cpp
index 440bf36..a7133ec 100644
--- a/src/utils/SkMatrix44.cpp
+++ b/src/utils/SkMatrix44.cpp
@@ -452,39 +452,41 @@
     if (this->isIdentity()) {
         if (inverse) {
             inverse->setIdentity();
-            return true;
         }
+        return true;
     }
+
     if (this->isTranslate()) {
         if (inverse) {
             inverse->setTranslate(-fMat[3][0], -fMat[3][1], -fMat[3][2]);
         }
         return true;
     }
+
     if (this->isScaleTranslate()) {
         if (0 == fMat[0][0] * fMat[1][1] * fMat[2][2]) {
             return false;
         }
 
-    if (inverse) {
-        double invXScale = 1 / fMat[0][0];
-        double invYScale = 1 / fMat[1][1];
-        double invZScale = 1 / fMat[2][2];
+        if (inverse) {
+            double invXScale = 1 / fMat[0][0];
+            double invYScale = 1 / fMat[1][1];
+            double invZScale = 1 / fMat[2][2];
 
             inverse->fMat[0][0] = invXScale;
-        inverse->fMat[0][1] = 0;
-        inverse->fMat[0][2] = 0;
-        inverse->fMat[0][3] = 0;
+            inverse->fMat[0][1] = 0;
+            inverse->fMat[0][2] = 0;
+            inverse->fMat[0][3] = 0;
 
-        inverse->fMat[1][0] = 0;
-        inverse->fMat[1][1] = invYScale;
-        inverse->fMat[1][2] = 0;
-        inverse->fMat[1][3] = 0;
+            inverse->fMat[1][0] = 0;
+            inverse->fMat[1][1] = invYScale;
+            inverse->fMat[1][2] = 0;
+            inverse->fMat[1][3] = 0;
 
-        inverse->fMat[2][0] = 0;
+            inverse->fMat[2][0] = 0;
             inverse->fMat[2][1] = 0;
-        inverse->fMat[2][2] = invZScale;
-        inverse->fMat[2][3] = 0;
+            inverse->fMat[2][2] = invZScale;
+            inverse->fMat[2][3] = 0;
 
             inverse->fMat[3][0] = -fMat[3][0] * invXScale;
             inverse->fMat[3][1] = -fMat[3][1] * invYScale;