void _UnregisterRenderCallback(Evas_Object* pObject);
int __registerCallbackCount = 0;
_SglInfo* __pPreviousSglInfo = null;
-EGLSurface __pPreviousMakeCurrent = EGL_NO_SURFACE;
+EGLSurface __pPreviousSurface = EGL_NO_SURFACE;
+EGLSurface __pPreviousContext = EGL_NO_CONTEXT;
#endif
#if !defined (_OSP_EMUL_)
EGLSurface readSurface = _SglGetCurrentSurface(EGL_READ);
EGLSurface eglContext = eglGetCurrentContext();
- if (__pPreviousMakeCurrent == drawSurface)
+ if (__pPreviousSurface == drawSurface)
{
- __pPreviousMakeCurrent = EGL_NO_SURFACE;
+ __pPreviousSurface = EGL_NO_SURFACE;
}
if (drawSurface != EGL_NO_SURFACE && readSurface != EGL_NO_SURFACE)
void
_RegisterRenderCallback(Evas_Object* pObject)
{
- if (pObject != null)
+ if (__evasEngineType == ENGINE_TYPE_OPENGL_X11 && pObject != null)
{
if (__registerCallbackCount == 0)
{
void
_UnregisterRenderCallback(Evas_Object* pObject)
{
- if (pObject != null)
+ if (__evasEngineType == ENGINE_TYPE_OPENGL_X11 && pObject != null)
{
__registerCallbackCount--;
__pPreviousSglInfo = null;
#endif
+ __pPreviousSurface = EGL_NO_SURFACE;
+ __pPreviousContext = EGL_NO_CONTEXT;
return EGL_TRUE;
}
EGLBoolean
_SglDestroySurface(EGLDisplay dpy, EGLSurface surface)
{
- if (__pPreviousMakeCurrent == surface)
+ if (__pPreviousSurface == surface)
{
- __pPreviousMakeCurrent = EGL_NO_SURFACE;
+ __pPreviousSurface = EGL_NO_SURFACE;
}
EGLBoolean ret = EGL_FALSE;
EGLBoolean
_SglDestroyContext(EGLDisplay dpy, EGLContext ctx)
{
+ if (__pPreviousContext == ctx)
+ {
+ __pPreviousContext = EGL_NO_CONTEXT;
+ }
+
return eglDestroyContext(dpy, ctx);
}
EGLBoolean
_SglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
{
- if (__pPreviousMakeCurrent == draw)
+ if (__pPreviousSurface == draw && __pPreviousContext == ctx)
{
return EGL_TRUE;
}
- __pPreviousMakeCurrent = draw;
+ __pPreviousSurface = draw;
+ __pPreviousContext = ctx;
_SglInfoTableManipulator* pSglInfoTableManipulatorInstance = _SglInfoTableManipulator::GetInstance();