The GrContext and the GrFactoryContext are now kept around.

git-svn-id: http://skia.googlecode.com/svn/trunk@5172 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/tools.gyp b/gyp/tools.gyp
index 799c960..a0245f4 100644
--- a/gyp/tools.gyp
+++ b/gyp/tools.gyp
@@ -115,6 +115,9 @@
         'tools.gyp:picture_renderer',
         'bench.gyp:bench_timer',
      ],
+     'export_dependent_settings': [
+       'tools.gyp:picture_renderer',
+     ]
     },
     {
      'target_name': 'picture_renderer',
@@ -133,6 +136,11 @@
         'gpu.gyp:skgr',
         'tools.gyp:picture_utils',
      ],
+     'direct_dependent_settings': {
+        'include_dirs': [
+            '../include/gpu',
+        ],
+     },
     },
     {
       'target_name': 'picture_utils',
diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp
index e9e14de..e63cd29 100644
--- a/tools/PictureRenderer.cpp
+++ b/tools/PictureRenderer.cpp
@@ -9,10 +9,7 @@
 #include "picture_utils.h"
 
 #if SK_SUPPORT_GPU
-#include "gl/GrGLInterface.h"
-#include "GrContext.h"
 #include "SkGpuDevice.h"
-#include "GrContextFactory.h"
 #endif
 
 namespace sk_tools {
@@ -44,15 +41,8 @@
         }
 #if SK_SUPPORT_GPU
         case kGPU_DeviceType: {
-//            const GrGLInterface* interface = GrGLCreateNativeInterface();
-//            GrContext* context = GrContext::Create(kOpenGL_Shaders_GrEngine,
-//                                                   (GrPlatform3DContext) interface);
-            fGLContext = new SkNativeGLContext();
-            SkASSERT(fGLContext->init(pict->width(), pict->height()));
-            GrContextFactory factory;
-            GrContext* context = factory.get(GrContextFactory::kNative_GLContextType);
             SkAutoTUnref<SkGpuDevice> device(SkNEW_ARGS(SkGpuDevice,
-                                                    (context, SkBitmap::kARGB_8888_Config,
+                                                    (fGrContext, SkBitmap::kARGB_8888_Config,
                                                     pict->width(), pict->height())));
             fCanvas.reset(SkNEW_ARGS(SkCanvas, (device.get())));
             break;
diff --git a/tools/PictureRenderer.h b/tools/PictureRenderer.h
index a8975bf..043e5b5 100644
--- a/tools/PictureRenderer.h
+++ b/tools/PictureRenderer.h
@@ -11,6 +11,11 @@
 #include "SkTDArray.h"
 #include "SkRefCnt.h"
 
+#if SK_SUPPORT_GPU
+#include "GrContextFactory.h"
+#include "GrContext.h"
+#endif
+
 class SkBitmap;
 class SkCanvas;
 class SkGLContext;
@@ -38,7 +43,14 @@
     }
 #endif
 
-    PictureRenderer() : fPicture(NULL), fDeviceType(kBitmap_DeviceType){}
+    PictureRenderer() 
+        : fPicture(NULL)
+        , fDeviceType(kBitmap_DeviceType)
+#if SK_SUPPORT_GPU
+        , fGrContext(fGrContextFactory.get(GrContextFactory::kNative_GLContextType))
+#endif
+        {}
+
 protected:
     enum SkDeviceTypes {
         kBitmap_DeviceType,
@@ -50,7 +62,11 @@
     SkAutoTUnref<SkCanvas> fCanvas;
     SkPicture* fPicture;
     SkDeviceTypes fDeviceType;
-    SkGLContext* fGLContext;
+
+#if SK_SUPPORT_GPU
+    GrContextFactory fGrContextFactory;
+    GrContext* fGrContext;
+#endif
 
 private:
     typedef SkRefCnt INHERITED;