diff options
author | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-04-15 00:27:25 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-04-15 01:51:27 +0200 |
commit | 3bd173af500d2e30f004cac4ca5a9309c5a49741 (patch) | |
tree | b583ea83a29c803844645b1614b0edf400db0d7f /include | |
parent | d321709febe1222e582614b200e7c155b2f0ee7b (diff) |
only render through OpenGL after successful context creation
Change-Id: I60ebceee2bf0eca1c7022e14fc43128347d682b5
Diffstat (limited to 'include')
-rw-r--r-- | include/svx/svdoopengl.hxx | 4 | ||||
-rw-r--r-- | include/vcl/IOpenGLRenderer.hxx | 28 | ||||
-rw-r--r-- | include/vcl/OpenGLContext.hxx | 5 |
3 files changed, 34 insertions, 3 deletions
diff --git a/include/svx/svdoopengl.hxx b/include/svx/svdoopengl.hxx index 7760b823717d..a8e7a422d4c9 100644 --- a/include/svx/svdoopengl.hxx +++ b/include/svx/svdoopengl.hxx @@ -23,7 +23,7 @@ namespace sdr { namespace contact { class IOpenGLRenderer; -class SVX_DLLPUBLIC SdrOpenGLObj : public SdrObject +class SVX_DLLPUBLIC SdrOpenGLObj : public SdrObject, public IOpenGLInfoProvider { public: virtual ~SdrOpenGLObj(); @@ -36,6 +36,8 @@ public: void setRenderer(IOpenGLRenderer* pRenderer); IOpenGLRenderer* getRenderer(); + virtual bool isOpenGLInitialized(); + private: OpenGLContext maContext; diff --git a/include/vcl/IOpenGLRenderer.hxx b/include/vcl/IOpenGLRenderer.hxx index 3efb2c5f3b38..b5b723bbe6e8 100644 --- a/include/vcl/IOpenGLRenderer.hxx +++ b/include/vcl/IOpenGLRenderer.hxx @@ -10,12 +10,36 @@ #ifndef VCL_IOPENGLRENDER_HXX #define VCL_IOPENGLRENDER_HXX +class IOpenGLInfoProvider +{ +public: + virtual ~IOpenGLInfoProvider() {} + + virtual bool isOpenGLInitialized() = 0; +}; + class IOpenGLRenderer { public: - virtual ~IOpenGLRenderer() {}; - virtual void operator()() = 0; + IOpenGLRenderer(): + mpInfoProvider(NULL) {} + virtual ~IOpenGLRenderer() {} + + bool isOpenGLInitialized() + { + if(mpInfoProvider) + return mpInfoProvider->isOpenGLInitialized(); + + return false; + } + + void setInfoProvider(IOpenGLInfoProvider* pInfo) + { + mpInfoProvider = pInfo; + } +private: + IOpenGLInfoProvider* mpInfoProvider; }; #endif diff --git a/include/vcl/OpenGLContext.hxx b/include/vcl/OpenGLContext.hxx index 220efb5b75e4..56d6a56890c3 100644 --- a/include/vcl/OpenGLContext.hxx +++ b/include/vcl/OpenGLContext.hxx @@ -152,6 +152,11 @@ public: void renderToFile(); + bool isInitialized() + { + return mbInitialized; + } + private: SAL_DLLPRIVATE bool initWindow(); |