/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
mEglConfig( 0 ),
mEglContext( 0 ),
mCurrentEglSurface( 0 ),
+ mCurrentEglContext( EGL_NO_CONTEXT ),
mMultiSamplingLevel( multiSamplingLevel ),
mColorDepth( COLOR_DEPTH_24 ),
mGlesInitialized( false ),
mIsOwnSurface = isOwnSurface;
}
+ // We want to display this information all the time, so use the LogMessage directly
+ Integration::Log::LogMessage(Integration::Log::DebugInfo, "EGL Information\n"
+ " Vendor: %s\n"
+ " Version: %s\n"
+ " Client APIs: %s\n"
+ " Extensions: %s\n",
+ eglQueryString( mEglDisplay, EGL_VENDOR ),
+ eglQueryString( mEglDisplay, EGL_VERSION ),
+ eglQueryString( mEglDisplay, EGL_CLIENT_APIS ),
+ eglQueryString( mEglDisplay, EGL_EXTENSIONS ));
+
return mGlesInitialized;
}
void EglImplementation::MakeContextCurrent( EGLSurface eglSurface, EGLContext eglContext )
{
+ if (mCurrentEglContext == eglContext)
+ {
+ return;
+ }
+
mCurrentEglSurface = eglSurface;
if(mIsOwnSurface)
{
+ glFinish();
+
eglMakeCurrent( mEglDisplay, eglSurface, eglSurface, eglContext );
+
+ mCurrentEglContext = eglContext;
}
EGLint error = eglGetError();
DALI_ASSERT_ALWAYS(false && "MakeContextCurrent failed!");
}
-
- // We want to display this information all the time, so use the LogMessage directly
- Integration::Log::LogMessage(Integration::Log::DebugInfo, "EGL Information\n"
- " Vendor: %s\n"
- " Version: %s\n"
- " Client APIs: %s\n"
- " Extensions: %s\n",
- eglQueryString(mEglDisplay, EGL_VENDOR),
- eglQueryString(mEglDisplay, EGL_VERSION),
- eglQueryString(mEglDisplay, EGL_CLIENT_APIS),
- eglQueryString(mEglDisplay, EGL_EXTENSIONS));
}
void EglImplementation::MakeCurrent( EGLNativePixmapType pixmap, EGLSurface eglSurface )
{
+ if (mCurrentEglContext == mEglContext)
+ {
+ return;
+ }
+
mCurrentEglNativePixmap = pixmap;
mCurrentEglSurface = eglSurface;
if(mIsOwnSurface)
{
+ glFinish();
+
eglMakeCurrent( mEglDisplay, eglSurface, eglSurface, mEglContext );
+
+ mCurrentEglContext = mEglContext;
}
EGLint error = eglGetError();
{
// clear the current context
eglMakeCurrent( mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT );
+ mCurrentEglContext = EGL_NO_CONTEXT;
}
void EglImplementation::TerminateGles()
mEglConfig = NULL;
mEglContext = NULL;
mCurrentEglSurface = NULL;
+ mCurrentEglContext = EGL_NO_CONTEXT;
mGlesInitialized = false;
}