+++ /dev/null
-//------------------------------------------------------//
-// EGL
-//------------------------------------------------------//
-
-/* EGL Types */
-/* EGLint is defined in eglplatform.h */
-
-typedef unsigned int EGLBoolean;
-typedef unsigned int EGLenum;
-typedef void *EGLConfig;
-typedef void *EGLContext;
-typedef void *EGLDisplay;
-typedef void *EGLSurface;
-typedef void *EGLClientBuffer;
-
-/* EGL Versioning */
-#define EGL_VERSION_1_0 1
-#define EGL_VERSION_1_1 1
-#define EGL_VERSION_1_2 1
-#define EGL_VERSION_1_3 1
-#define EGL_VERSION_1_4 1
-
-/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
- * enums are assigned unique values starting at 0x3000.
- */
-
-/* EGL aliases */
-#define EGL_FALSE 0
-#define EGL_TRUE 1
-
-/* Out-of-band handle values */
-#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0)
-#define EGL_NO_CONTEXT ((EGLContext)0)
-#define EGL_NO_DISPLAY ((EGLDisplay)0)
-#define EGL_NO_SURFACE ((EGLSurface)0)
-
-/* Out-of-band attribute value */
-#define EGL_DONT_CARE ((EGLint)-1)
-
-/* Errors / GetError return values */
-#define EGL_SUCCESS 0x3000
-#define EGL_NOT_INITIALIZED 0x3001
-#define EGL_BAD_ACCESS 0x3002
-#define EGL_BAD_ALLOC 0x3003
-#define EGL_BAD_ATTRIBUTE 0x3004
-#define EGL_BAD_CONFIG 0x3005
-#define EGL_BAD_CONTEXT 0x3006
-#define EGL_BAD_CURRENT_SURFACE 0x3007
-#define EGL_BAD_DISPLAY 0x3008
-#define EGL_BAD_MATCH 0x3009
-#define EGL_BAD_NATIVE_PIXMAP 0x300A
-#define EGL_BAD_NATIVE_WINDOW 0x300B
-#define EGL_BAD_PARAMETER 0x300C
-#define EGL_BAD_SURFACE 0x300D
-#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */
-
-/* Reserved 0x300F-0x301F for additional errors */
-
-/* Config attributes */
-#define EGL_BUFFER_SIZE 0x3020
-#define EGL_ALPHA_SIZE 0x3021
-#define EGL_BLUE_SIZE 0x3022
-#define EGL_GREEN_SIZE 0x3023
-#define EGL_RED_SIZE 0x3024
-#define EGL_DEPTH_SIZE 0x3025
-#define EGL_STENCIL_SIZE 0x3026
-#define EGL_CONFIG_CAVEAT 0x3027
-#define EGL_CONFIG_ID 0x3028
-#define EGL_LEVEL 0x3029
-#define EGL_MAX_PBUFFER_HEIGHT 0x302A
-#define EGL_MAX_PBUFFER_PIXELS 0x302B
-#define EGL_MAX_PBUFFER_WIDTH 0x302C
-#define EGL_NATIVE_RENDERABLE 0x302D
-#define EGL_NATIVE_VISUAL_ID 0x302E
-#define EGL_NATIVE_VISUAL_TYPE 0x302F
-#define EGL_PRESERVED_RESOURCES 0x3030
-#define EGL_SAMPLES 0x3031
-#define EGL_SAMPLE_BUFFERS 0x3032
-#define EGL_SURFACE_TYPE 0x3033
-#define EGL_TRANSPARENT_TYPE 0x3034
-#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
-#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
-#define EGL_TRANSPARENT_RED_VALUE 0x3037
-#define EGL_NONE 0x3038 /* Attrib list terminator */
-#define EGL_BIND_TO_TEXTURE_RGB 0x3039
-#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
-#define EGL_MIN_SWAP_INTERVAL 0x303B
-#define EGL_MAX_SWAP_INTERVAL 0x303C
-#define EGL_LUMINANCE_SIZE 0x303D
-#define EGL_ALPHA_MASK_SIZE 0x303E
-#define EGL_COLOR_BUFFER_TYPE 0x303F
-#define EGL_RENDERABLE_TYPE 0x3040
-#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */
-#define EGL_CONFORMANT 0x3042
-
-/* Reserved 0x3041-0x304F for additional config attributes */
-
-/* Config attribute values */
-#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
-#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
-#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
-#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
-#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
-
-/* More config attribute values, for EGL_TEXTURE_FORMAT */
-#define EGL_NO_TEXTURE 0x305C
-#define EGL_TEXTURE_RGB 0x305D
-#define EGL_TEXTURE_RGBA 0x305E
-#define EGL_TEXTURE_2D 0x305F
-
-/* Config attribute mask bits */
-#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */
-
-#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */
-
-/* QueryString targets */
-#define EGL_VENDOR 0x3053
-#define EGL_VERSION 0x3054
-#define EGL_EXTENSIONS 0x3055
-#define EGL_CLIENT_APIS 0x308D
-
-/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
-#define EGL_HEIGHT 0x3056
-#define EGL_WIDTH 0x3057
-#define EGL_LARGEST_PBUFFER 0x3058
-#define EGL_TEXTURE_FORMAT 0x3080
-#define EGL_TEXTURE_TARGET 0x3081
-#define EGL_MIPMAP_TEXTURE 0x3082
-#define EGL_MIPMAP_LEVEL 0x3083
-#define EGL_RENDER_BUFFER 0x3086
-#define EGL_VG_COLORSPACE 0x3087
-#define EGL_VG_ALPHA_FORMAT 0x3088
-#define EGL_HORIZONTAL_RESOLUTION 0x3090
-#define EGL_VERTICAL_RESOLUTION 0x3091
-#define EGL_PIXEL_ASPECT_RATIO 0x3092
-#define EGL_SWAP_BEHAVIOR 0x3093
-#define EGL_MULTISAMPLE_RESOLVE 0x3099
-
-/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
-#define EGL_BACK_BUFFER 0x3084
-#define EGL_SINGLE_BUFFER 0x3085
-
-/* OpenVG color spaces */
-#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */
-#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */
-
-/* OpenVG alpha formats */
-#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
-#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
-
-/* Constant scale factor by which fractional display resolutions &
- * aspect ratio are scaled when queried as integer values.
- */
-#define EGL_DISPLAY_SCALING 10000
-
-/* Unknown display resolution/aspect ratio */
-#define EGL_UNKNOWN ((EGLint)-1)
-
-/* Back buffer swap behaviors */
-#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
-#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
-
-/* CreatePbufferFromClientBuffer buffer types */
-#define EGL_OPENVG_IMAGE 0x3096
-
-/* QueryContext targets */
-#define EGL_CONTEXT_CLIENT_TYPE 0x3097
-
-/* CreateContext attributes */
-#define EGL_CONTEXT_CLIENT_VERSION 0x3098
-
-/* Multisample resolution behaviors */
-#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */
-#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */
-
-/* BindAPI/QueryAPI targets */
-#define EGL_OPENGL_ES_API 0x30A0
-#define EGL_OPENVG_API 0x30A1
-#define EGL_OPENGL_API 0x30A2
-
-/* GetCurrentSurface targets */
-#define EGL_DRAW 0x3059
-#define EGL_READ 0x305A
-
-/* WaitNative engines */
-#define EGL_CORE_NATIVE_ENGINE 0x305B
-
-/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
-#define EGL_COLORSPACE EGL_VG_COLORSPACE
-#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT
-#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB
-#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR
-#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE
-#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE
-
-// KHR Extention
-#ifndef EGL_KHR_image
-#define EGL_KHR_image 1
-#define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */
-typedef void *EGLImageKHR;
-#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0)
-#endif
-
+++ /dev/null
-// Defult use-case for exporting symbols
-#ifndef _COREGL_SYMBOL
-#define _COREGL_SYMBOL_NOT_DEFINED
-#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) COREGL_API extern RET_TYPE FUNC_NAME PARAM_LIST;
-#endif
-#ifndef _COREGL_EXT_SYMBOL
-#define _COREGL_EXT_SYMBOL_NOT_DEFINED
-#define _COREGL_EXT_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST) _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
-#endif
-#ifndef _COREGL_EXT_SYMBOL_ALIAS
-#define _COREGL_EXT_SYMBOL_ALIAS_NOT_DEFINED
-#define _COREGL_EXT_SYMBOL_ALIAS(FUNC_NAME, ALIAS_NAME)
-#endif
-#ifndef _COREGL_EXT_SYMBOL_FASTPATH_PASS
-#define _COREGL_EXT_SYMBOL_FASTPATH_PASS_NOT_DEFINED
-#define _COREGL_EXT_SYMBOL_FASTPATH_PASS(FUNC_NAME)
-#endif
-#ifndef _COREGL_EXT_SYMBOL_FASTPATH_BLOCK
-#define _COREGL_EXT_SYMBOL_FASTPATH_BLOCK_NOT_DEFINED
-#define _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(FUNC_NAME)
-#endif
-
-// Standard EGL APIs
-
-_COREGL_SYMBOL(GL_FALSE, EGLint, eglGetError, (void))
-_COREGL_SYMBOL(GL_FALSE, EGLDisplay, eglGetDisplay, (EGLNativeDisplayType display_id))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglInitialize, (EGLDisplay dpy, EGLint* major, EGLint *minor))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglTerminate, (EGLDisplay dpy))
-_COREGL_SYMBOL(GL_FALSE, const char*, eglQueryString, (EGLDisplay dpy, EGLint name))
-
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglGetConfigs, (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglChooseConfig, (EGLDisplay dpy, const EGLint* attrib_list, EGLConfig* configs, EGLint config_size, EGLint* num_config))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglGetConfigAttrib, (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value))
-
-_COREGL_SYMBOL(GL_FALSE, EGLSurface, eglCreateWindowSurface, (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint* attrib_list))
-_COREGL_SYMBOL(GL_FALSE, EGLSurface, eglCreatePbufferSurface, (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list))
-_COREGL_SYMBOL(GL_FALSE, EGLSurface, eglCreatePixmapSurface, (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint* attrib_list))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglDestroySurface, (EGLDisplay dpy, EGLSurface surface))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglQuerySurface, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value))
-
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglBindAPI, (EGLenum api))
-_COREGL_SYMBOL(GL_FALSE, EGLenum, eglQueryAPI, (void))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglWaitClient, (void))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglReleaseThread, (void))
-_COREGL_SYMBOL(GL_FALSE, EGLSurface, eglCreatePbufferFromClientBuffer, (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list))
-
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglSurfaceAttrib, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglBindTexImage, (EGLDisplay dpy, EGLSurface surface, EGLint buffer))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglReleaseTexImage, (EGLDisplay dpy, EGLSurface surface, EGLint buffer))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglSwapInterval, (EGLDisplay dpy, EGLint interval))
-_COREGL_SYMBOL(GL_FALSE, EGLContext, eglCreateContext, (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglDestroyContext, (EGLDisplay dpy, EGLContext ctx))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglMakeCurrent, (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx))
-_COREGL_SYMBOL(GL_FALSE, EGLContext, eglGetCurrentContext, (void))
-_COREGL_SYMBOL(GL_FALSE, EGLSurface, eglGetCurrentSurface, (EGLint readdraw))
-_COREGL_SYMBOL(GL_FALSE, EGLDisplay, eglGetCurrentDisplay, (void))
-
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglQueryContext, (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglWaitGL, (void))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglWaitNative, (EGLint engine))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglSwapBuffers, (EGLDisplay dpy, EGLSurface surface))
-_COREGL_SYMBOL(GL_FALSE, EGLBoolean, eglCopyBuffers, (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target))
-
-_COREGL_SYMBOL(GL_FALSE, _eng_fn, eglGetProcAddress, (const char* procname))
-
-
-// Extensions
-_COREGL_EXT_SYMBOL(GL_TRUE, EGLImageKHR, eglCreateImageKHR, (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list))
-_COREGL_EXT_SYMBOL_ALIAS(eglCreateImageKHR, eglCreateImage)
-_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglDestroyImageKHR, (EGLDisplay dpy, EGLImageKHR image))
-_COREGL_EXT_SYMBOL_ALIAS(eglDestroyImageKHR, eglDestroyImage)
-
-_COREGL_EXT_SYMBOL(GL_TRUE, void*, eglMapImageSEC, (EGLDisplay dpy, EGLImageKHR image, EGLint device_type, EGLint access_option))
-_COREGL_EXT_SYMBOL_ALIAS(eglMapImageSEC, eglMapImage)
-_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglUnmapImageSEC, (EGLDisplay dpy, EGLImageKHR image, EGLint device_type))
-_COREGL_EXT_SYMBOL_ALIAS(eglUnmapImageSEC, eglUnmapImage)
-_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglGetImageAttribSEC, (EGLDisplay dpy, EGLImageKHR image, EGLint attribute, EGLint *value))
-_COREGL_EXT_SYMBOL_ALIAS(eglGetImageAttribSEC, eglGetImageAttrib)
-
-_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglLockSurfaceKHR, (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list))
-_COREGL_EXT_SYMBOL_ALIAS(eglLockSurfaceKHR, eglLockSurface)
-_COREGL_EXT_SYMBOL(GL_TRUE, EGLBoolean, eglUnlockSurfaceKHR, (EGLDisplay display, EGLSurface surface))
-_COREGL_EXT_SYMBOL_ALIAS(eglUnlockSurfaceKHR, eglUnlockSurface)
-
-// Verified extensions
-_COREGL_EXT_SYMBOL_FASTPATH_PASS(eglSwapBuffersRegionEXT)
-_COREGL_EXT_SYMBOL_FASTPATH_PASS(eglSwapBuffersRegionSEC)
-_COREGL_EXT_SYMBOL_FASTPATH_PASS(eglSwapBuffersWithDamageEXT)
-
-// Blocked extensions
-//_COREGL_EXT_SYMBOL_FASTPATH_BLOCK()
-
-#ifdef _COREGL_EXT_SYMBOL_NOT_DEFINED
-#undef _COREGL_EXT_SYMBOL_NOT_DEFINED
-#undef _COREGL_EXT_SYMBOL
-#endif
-
-#ifdef _COREGL_SYMBOL_NOT_DEFINED
-#undef _COREGL_SYMBOL_NOT_DEFINED
-#undef _COREGL_SYMBOL
-#endif
-
-#ifdef _COREGL_EXT_SYMBOL_ALIAS_NOT_DEFINED
-#undef _COREGL_EXT_SYMBOL_ALIAS_NOT_DEFINED
-#undef _COREGL_EXT_SYMBOL_ALIAS
-#endif
-
-#ifdef _COREGL_EXT_SYMBOL_FASTPATH_PASS_NOT_DEFINED
-#undef _COREGL_EXT_SYMBOL_FASTPATH_PASS_NOT_DEFINED
-#undef _COREGL_EXT_SYMBOL_FASTPATH_PASS
-#endif
-
-#ifdef _COREGL_EXT_SYMBOL_FASTPATH_BLOCK_NOT_DEFINED
-#undef _COREGL_EXT_SYMBOL_FASTPATH_BLOCK_NOT_DEFINED
-#undef _COREGL_EXT_SYMBOL_FASTPATH_BLOCK
-#endif
-
EGLContext
fastpath_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint* attrib_list)
{
- GLGlueContext *gctx = NULL;
+ GLGlueContext *gctx = NULL, *newgctx = NULL;
GLGlueContext_List *gctx_list_new = NULL;
MY_MODULE_TSTATE *tstate = NULL;
GLContextState *cstate = NULL;
AST(_pack_egl_context_sharable_option(real_ctx_sharable_option, share_context) == 1);
// Allocate a new context
- gctx = (GLGlueContext *)calloc(1, sizeof(GLGlueContext));
- if (gctx == NULL)
+ newgctx = (GLGlueContext *)calloc(1, sizeof(GLGlueContext));
+ if (newgctx == NULL)
{
COREGL_ERR("\E[40;31;1mError creating a new GLGlueContext(Memory full 3)\E[0m\n");
goto finish;
}
- gctx->magic = MAGIC_GLFAST;
- gctx->initialized = 0;
- gctx->rdpy = dpy;
- gctx->thread_id = get_current_thread();
+ newgctx->magic = MAGIC_GLFAST;
+ newgctx->initialized = 0;
+ newgctx->rdpy = dpy;
+ newgctx->thread_id = get_current_thread();
if (share_context != EGL_NO_CONTEXT)
{
GLGlueContext *shared_gctx = (GLGlueContext *)share_context;
AST(shared_gctx->magic == MAGIC_GLFAST);
AST(shared_gctx->sostate != NULL);
- gctx->sostate = shared_gctx->sostate;
+ newgctx->sostate = shared_gctx->sostate;
}
else
{
goto finish;
}
fastpath_sostate_init(sostate_new);
- gctx->sostate = sostate_new;
+ newgctx->sostate = sostate_new;
}
- _add_shared_obj_state_ref(gctx, gctx->sostate);
- gctx->real_ctx_option = real_ctx_option;
- gctx->real_ctx_option_len = sizeof(EGL_packed_option);
- gctx->real_ctx_sharable_option = real_ctx_sharable_option;
- gctx->real_ctx_sharable_option_len = sizeof(EGL_packed_sharable_option);
+ _add_shared_obj_state_ref(newgctx, newgctx->sostate);
+ newgctx->real_ctx_option = real_ctx_option;
+ newgctx->real_ctx_option_len = sizeof(EGL_packed_option);
+ newgctx->real_ctx_sharable_option = real_ctx_sharable_option;
+ newgctx->real_ctx_sharable_option_len = sizeof(EGL_packed_sharable_option);
- _link_context_state(gctx, cstate);
- _add_context_ref(gctx);
+ _link_context_state(newgctx, cstate);
+ _add_context_ref(newgctx);
- gctx->cstate = cstate;
+ newgctx->cstate = cstate;
{ // Add glue context to list
gctx_list_new = (GLGlueContext_List *)calloc(1, sizeof(GLGlueContext_List));
AST(mutex_lock(&ctx_list_access_mutex) == 1);
- gctx_list_new->gctx = gctx;
+ gctx_list_new->gctx = newgctx;
gctx_list_new->prev = NULL;
gctx_list_new->next = gctx_list;
AST(mutex_unlock(&ctx_list_access_mutex) == 1);
}
+ gctx = newgctx;
+
#ifdef COREGL_FASTPATH_TRACE_CONTEXT_INFO
if (unlikely(trace_ctx_flag == 1))
{
char ment[256];
- add_to_general_trace_list(&glue_ctx_trace_list, gctx);
+ add_to_general_trace_list(&glue_ctx_trace_list, newgctx);
- sprintf(ment, "eglCreateContext completed (GlueCTX=[%12p])", gctx);
+ sprintf(ment, "eglCreateContext completed (GlueCTX=[%12p])", newgctx);
_dump_context_info(ment, 1);
}
#endif // COREGL_FASTPATH_TRACE_CONTEXT_INFO
free(gctx_list_new);
}
+ if (newgctx != NULL)
+ {
+ _remove_context_ref(newgctx, &ctx_list_access_mutex);
+ free(newgctx);
+ newgctx = NULL;
+ }
}
_COREGL_FASTPATH_FUNC_END();