aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-24 21:17:53 +0000
committerGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-24 21:17:53 +0000
commit57f5d9854bfc78c347cb587e044fb3950f9ad298 (patch)
tree91c75b0a9a4555e29ea40dc057948c5520eeabaa /include
parent820e80ad6390e120d4991a5280d0452ec87beaeb (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.h9
-rw-r--r--include/gpu/SkGLContext.h3
-rw-r--r--include/gpu/SkMesaGLContext.h19
-rw-r--r--include/gpu/SkNativeGLContext.h18
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;