| Index: src/gpu/gl/iOS/SkCreatePlatformGLContext_iOS.mm
|
| diff --git a/src/gpu/gl/iOS/SkCreatePlatformGLContext_iOS.mm b/src/gpu/gl/iOS/SkCreatePlatformGLContext_iOS.mm
|
| index 9989957ac9ea684fdebb2539dc2c9f99df6c9edf..423ef8cbddfc0efaa9532a72544c9d8d9f1182f3 100644
|
| --- a/src/gpu/gl/iOS/SkCreatePlatformGLContext_iOS.mm
|
| +++ b/src/gpu/gl/iOS/SkCreatePlatformGLContext_iOS.mm
|
| @@ -16,21 +16,33 @@ namespace {
|
| class IOSGLContext : public SkGLContext {
|
| public:
|
| IOSGLContext();
|
| -
|
| - virtual ~IOSGLContext();
|
| -
|
| + virtual ~IOSGLContext() SK_OVERRIDE;
|
| virtual void makeCurrent() const SK_OVERRIDE;
|
| virtual void swapBuffers() const SK_OVERRIDE;
|
| -protected:
|
| - virtual const GrGLInterface* createGLContext(GrGLStandard forcedGpuAPI) SK_OVERRIDE;
|
| - virtual void destroyGLContext() SK_OVERRIDE;
|
|
|
| private:
|
| + void destroyGLContext();
|
| +
|
| void* fEAGLContext;
|
| };
|
|
|
| IOSGLContext::IOSGLContext()
|
| : fEAGLContext(NULL) {
|
| +
|
| + fEAGLContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
|
| + [EAGLContext setCurrentContext:EAGLCTX];
|
| +
|
| + fGL.reset(GrGLCreateNativeInterface());
|
| + if (NULL == fGL.get()) {
|
| + SkDebugf("Failed to create gl interface");
|
| + this->destroyGLContext();
|
| + return;
|
| + }
|
| + if (!fGL->validate()) {
|
| + SkDebugf("Failed to validate gl interface");
|
| + this->destroyGLContext();
|
| + return;
|
| + }
|
| }
|
|
|
| IOSGLContext::~IOSGLContext() {
|
| @@ -38,6 +50,7 @@ IOSGLContext::~IOSGLContext() {
|
| }
|
|
|
| void IOSGLContext::destroyGLContext() {
|
| + fGL.reset(NULL);
|
| if (fEAGLContext) {
|
| if ([EAGLContext currentContext] == EAGLCTX) {
|
| [EAGLContext setCurrentContext:nil];
|
| @@ -47,22 +60,6 @@ void IOSGLContext::destroyGLContext() {
|
| }
|
| }
|
|
|
| -const GrGLInterface* IOSGLContext::createGLContext(GrGLStandard forcedGpuAPI) {
|
| - if (kGL_GrGLStandard == forcedGpuAPI) {
|
| - return NULL;
|
| - }
|
| -
|
| - fEAGLContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
|
| - [EAGLContext setCurrentContext:EAGLCTX];
|
| -
|
| - const GrGLInterface* interface = GrGLCreateNativeInterface();
|
| - if (!interface) {
|
| - SkDebugf("Failed to create gl interface");
|
| - this->destroyGLContext();
|
| - return NULL;
|
| - }
|
| - return interface;
|
| -}
|
|
|
| void IOSGLContext::makeCurrent() const {
|
| if (![EAGLContext setCurrentContext:EAGLCTX]) {
|
| @@ -74,8 +71,15 @@ void IOSGLContext::swapBuffers() const { }
|
|
|
| } // anonymous namespace
|
|
|
| -
|
| -SkGLContext* SkCreatePlatformGLContext() {
|
| - return SkNEW(IOSGLContext);
|
| +SkGLContext* SkCreatePlatformGLContext(GrGLStandard forcedGpuAPI) {
|
| + if (kGL_GrGLStandard == forcedGpuAPI) {
|
| + return NULL;
|
| + }
|
| + IOSGLContext* ctx = SkNEW(IOSGLContext);
|
| + if (!ctx->isValid()) {
|
| + SkDELETE(ctx);
|
| + return NULL;
|
| + }
|
| + return ctx;
|
| }
|
|
|
|
|