diff options
author | bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-24 21:17:53 +0000 |
---|---|---|
committer | bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-10-24 21:17:53 +0000 |
commit | 57f5d9854bfc78c347cb587e044fb3950f9ad298 (patch) | |
tree | 91c75b0a9a4555e29ea40dc057948c5520eeabaa /include | |
parent | 820e80ad6390e120d4991a5280d0452ec87beaeb (diff) |
Recommit r2510 now that mac build bot issue has been fixed.
git-svn-id: http://skia.googlecode.com/svn/trunk@2521 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include')
-rw-r--r-- | include/gpu/GrGLInterface.h | 9 | ||||
-rw-r--r-- | include/gpu/SkGLContext.h | 3 | ||||
-rw-r--r-- | include/gpu/SkMesaGLContext.h | 19 | ||||
-rw-r--r-- | include/gpu/SkNativeGLContext.h | 18 |
4 files changed, 47 insertions, 2 deletions
diff --git a/include/gpu/GrGLInterface.h b/include/gpu/GrGLInterface.h index b3e0cf191b..20b74ab21a 100644 --- a/include/gpu/GrGLInterface.h +++ b/include/gpu/GrGLInterface.h @@ -69,8 +69,17 @@ struct GrGLInterface; const GrGLInterface* GrGLDefaultInterface(); +/** + * Creates a GrGLInterface for a "native" GL context (e.g. WGL on windows, + * GLX on linux, AGL on Mac). On platforms that have context-specific function + * pointers for GL extensions (e.g. windows) the returned interface is only + * valid for the context that was current at creation. + */ const GrGLInterface* GrGLCreateNativeInterface(); +/** + * Creates a GrGLInterface for an OSMesa context. + */ const GrGLInterface* GrGLCreateMesaInterface(); typedef unsigned int GrGLenum; diff --git a/include/gpu/SkGLContext.h b/include/gpu/SkGLContext.h index d36a9f9d43..f92a7700c4 100644 --- a/include/gpu/SkGLContext.h +++ b/include/gpu/SkGLContext.h @@ -20,6 +20,9 @@ public: SkGLContext(); virtual ~SkGLContext(); + /** + * Initializes the context and makes it current. + */ bool init(const int width, const int height); int getFBOID() const { return fFBO; } diff --git a/include/gpu/SkMesaGLContext.h b/include/gpu/SkMesaGLContext.h index 4351f66f33..b7578f367b 100644 --- a/include/gpu/SkMesaGLContext.h +++ b/include/gpu/SkMesaGLContext.h @@ -13,6 +13,9 @@ #if SK_MESA class SkMesaGLContext : public SkGLContext { +private: + typedef intptr_t Context; + public: SkMesaGLContext(); @@ -20,16 +23,28 @@ public: virtual void makeCurrent() const SK_OVERRIDE; + class AutoContextRestore { + public: + AutoContextRestore(); + ~AutoContextRestore(); + + private: + Context fOldContext; + GLint fOldWidth; + GLint fOldHeight; + GLint fOldFormat; + void* fOldImage; + }; + protected: virtual const GrGLInterface* createGLContext() SK_OVERRIDE; void destroyGLContext() SK_OVERRIDE; private: - typedef intptr_t Context; Context fContext; GrGLubyte *fImage; }; #endif -#endif
\ No newline at end of file +#endif diff --git a/include/gpu/SkNativeGLContext.h b/include/gpu/SkNativeGLContext.h index 512e66a3ab..f2037cfb79 100644 --- a/include/gpu/SkNativeGLContext.h +++ b/include/gpu/SkNativeGLContext.h @@ -28,6 +28,24 @@ public: virtual void makeCurrent() const SK_OVERRIDE; + class AutoContextRestore { + public: + AutoContextRestore(); + ~AutoContextRestore(); + + private: + #if defined(SK_BUILD_FOR_MAC) + AGLContext fOldAGLContext; + #elif defined(SK_BUILD_FOR_UNIX) + GLXContext fOldGLXContext; + Display* fOldDisplay; + GLXDrawable fOldDrawable; + #elif defined(SK_BUILD_FOR_WIN32) + HDC fOldHDC; + HGLRC fOldHGLRC; + #endif + }; + protected: virtual const GrGLInterface* createGLContext() SK_OVERRIDE; void destroyGLContext() SK_OVERRIDE; |