Fix GL attach/detach in Mac SampleApp

Review URL: http://codereview.appspot.com/5984043/


git-svn-id: http://skia.googlecode.com/svn/trunk@3587 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 4b3d942..7589da90 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -22,11 +22,11 @@
 #include "SkTLazy.h"
 #include "SkTrace.h"
 
-#define DEFER_TEXT_RENDERING 1
+#define DEFER_TEXT_RENDERING 0
 
-#define DEFER_PATHS 1
+#define DEFER_PATHS 0
 
-#define BATCH_RECT_TO_RECT (1 && !GR_STATIC_RECT_VB)
+#define BATCH_RECT_TO_RECT (0 && !GR_STATIC_RECT_VB)
 
 #define MAX_BLUR_SIGMA 4.0f
 
@@ -2056,7 +2056,6 @@
     GrAssert(NULL == fDrawBufferVBAllocPool);
     GrAssert(NULL == fDrawBufferIBAllocPool);
 
-#if DEFER_TEXT_RENDERING || BATCH_RECT_TO_RECT
     fDrawBufferVBAllocPool =
         new GrVertexBufferAllocPool(fGpu, false,
                                     DRAW_BUFFER_VBPOOL_BUFFER_SIZE,
@@ -2069,11 +2068,7 @@
     fDrawBuffer = new GrInOrderDrawBuffer(fGpu,
                                           fDrawBufferVBAllocPool,
                                           fDrawBufferIBAllocPool);
-#endif
-
-#if BATCH_RECT_TO_RECT
     fDrawBuffer->setQuadIndexBuffer(this->getQuadIndexBuffer());
-#endif
     fDrawBuffer->setAutoFlushTarget(fGpu);
     fDrawBuffer->setDrawState(fDrawState);
 }
diff --git a/src/gpu/gl/GrGpuGL.cpp b/src/gpu/gl/GrGpuGL.cpp
index 8214b6e..08ab47a 100644
--- a/src/gpu/gl/GrGpuGL.cpp
+++ b/src/gpu/gl/GrGpuGL.cpp
@@ -1848,6 +1848,7 @@
 
         // we prefer smooth lines over multisampled lines
         // msaa should be disabled if drawing smooth lines.
+        bool handledMSAA = false;
         if (GrIsPrimTypeLines(type)) {
             bool smooth = this->willUseHWAALines();
             if (!fHWAAState.fSmoothLineEnabled && smooth) {
@@ -1857,14 +1858,15 @@
                 GL_CALL(Disable(GR_GL_LINE_SMOOTH));
                 fHWAAState.fSmoothLineEnabled = false;
             }
-            if (rt->isMultisampled() && 
-                fHWAAState.fMSAAEnabled) {
+            if (smooth && rt->isMultisampled() && fHWAAState.fMSAAEnabled) {
                 GL_CALL(Disable(GR_GL_MULTISAMPLE));
                 fHWAAState.fMSAAEnabled = false;
+                handledMSAA = true;
             }
-        } else if (rt->isMultisampled() &&
-                   this->getDrawState().isHWAntialiasState() !=
-                   fHWAAState.fMSAAEnabled) {
+        }
+        if (!handledMSAA && rt->isMultisampled() &&
+            this->getDrawState().isHWAntialiasState() !=
+            fHWAAState.fMSAAEnabled) {
             if (fHWAAState.fMSAAEnabled) {
                 GL_CALL(Disable(GR_GL_MULTISAMPLE));
                 fHWAAState.fMSAAEnabled = false;