summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LayerManagerPlugins/Renderers/Base/include/BaseRenderer.h5
-rw-r--r--LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/include/X11GLESRenderer.h3
-rw-r--r--LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp15
-rw-r--r--LayerManagerService/include/IRenderer.h7
4 files changed, 25 insertions, 5 deletions
diff --git a/LayerManagerPlugins/Renderers/Base/include/BaseRenderer.h b/LayerManagerPlugins/Renderers/Base/include/BaseRenderer.h
index 4230a2c..f342ba3 100644
--- a/LayerManagerPlugins/Renderers/Base/include/BaseRenderer.h
+++ b/LayerManagerPlugins/Renderers/Base/include/BaseRenderer.h
@@ -37,6 +37,7 @@ public:
virtual void doScreenShot(std::string fileToSave) = 0;
virtual uint getLayerTypeCapabilities(LayerType layerType);
+ virtual Shader* createShader(const string* vertexName, const string* fragmentName);
protected:
Scene* m_pScene;
@@ -45,6 +46,10 @@ private:
static bool debugMode;
};
+inline Shader* BaseRenderer::createShader(const string* vertexName, const string* fragmentName)
+{
+ return NULL;
+}
inline void BaseRenderer::setdebug(bool onoff)
{
debugMode = onoff;
diff --git a/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/include/X11GLESRenderer.h b/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/include/X11GLESRenderer.h
index c4a4316..4d0071b 100644
--- a/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/include/X11GLESRenderer.h
+++ b/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/include/X11GLESRenderer.h
@@ -37,7 +37,8 @@ public:
uint getNumberOfHardwareLayers(uint screenID);
uint* getScreenResolution(uint screenID);
uint* getScreenIDs(uint* length);
- void signalWindowSystemRedraw();
+ void signalWindowSystemRedraw();
+ Shader* createShader(const string* vertexName, const string* fragmentName);
private:
X11WindowSystem* m_pWindowSystem;
diff --git a/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp b/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp
index f8228f0..2d9b0a9 100644
--- a/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp
+++ b/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp
@@ -19,6 +19,7 @@
#include "X11GLESRenderer.h"
#include "config.h"
+#include "Shader.h"
#include "ShaderProgramGLES.h"
#include "X11/Xlib.h"
#include "TextureBinders/X11CopyGLES.h"
@@ -148,7 +149,19 @@ uint* X11GLESRenderer::getScreenIDs(uint* length)
void X11GLESRenderer::signalWindowSystemRedraw()
{
- m_pWindowSystem->signalRedrawEvent();
+ m_pWindowSystem->signalRedrawEvent();
+}
+
+Shader* X11GLESRenderer::createShader(const string* vertexName, const string* fragmentName)
+{
+ Shader *result = NULL;
+ m_pWindowSystem->setSystemState(WAKEUP_STATE);
+ m_pWindowSystem->wakeUpRendererThread();
+ m_pGraphicSystem->activateGraphicContext();
+ result = Shader::createShader(*vertexName,*fragmentName);
+ m_pGraphicSystem->releaseGraphicContext();
+ m_pWindowSystem->setSystemState(IDLE_STATE);
+ return result;
}
extern "C" BaseRenderer* createX11GLESRenderer(Scene* pScene){
diff --git a/LayerManagerService/include/IRenderer.h b/LayerManagerService/include/IRenderer.h
index 4d0d7bf..4a3a304 100644
--- a/LayerManagerService/include/IRenderer.h
+++ b/LayerManagerService/include/IRenderer.h
@@ -22,7 +22,7 @@
#include <string>
#include "LayerType.h"
-
+#include "Shader.h"
/**
* Abstract Base of all CompositingControllers, ie Renderers.
*/
@@ -60,9 +60,10 @@ public:
virtual unsigned int* getScreenResolution(unsigned int screenID) = 0;
virtual unsigned int* getScreenIDs(unsigned int* length) = 0;
+
+ virtual Shader* createShader(const string* vertexName, const string* fragmentName) = 0;
- virtual void signalWindowSystemRedraw()=0;
-
+ virtual void signalWindowSystemRedraw()=0;
};
#endif /* _IRENDERER_H_ */