equal
deleted
inserted
replaced
55 #if defined(_WIN32) && !defined(EGLI_USE_SIMULATOR_EXTENSIONS) |
55 #if defined(_WIN32) && !defined(EGLI_USE_SIMULATOR_EXTENSIONS) |
56 static DWORD g_tlsIndex = TLS_OUT_OF_INDEXES; |
56 static DWORD g_tlsIndex = TLS_OUT_OF_INDEXES; |
57 #endif |
57 #endif |
58 |
58 |
59 static CEGLState* g_eglState = NULL; |
59 static CEGLState* g_eglState = NULL; |
|
60 #if !defined(EGLI_USE_SIMULATOR_EXTENSIONS) |
60 static bool g_lockInitialized = false; |
61 static bool g_lockInitialized = false; |
|
62 #endif |
61 EGLI_LOCK g_eglLock; |
63 EGLI_LOCK g_eglLock; |
62 |
64 |
63 CEGLState* getState() |
65 CEGLState* getState() |
64 { |
66 { |
65 #if defined(EGLI_USE_SIMULATOR_EXTENSIONS) |
67 #if defined(EGLI_USE_SIMULATOR_EXTENSIONS) |
455 EGLI_LEAVE_RET( EGL_FALSE, EGL_BAD_ALLOC ); |
457 EGLI_LEAVE_RET( EGL_FALSE, EGL_BAD_ALLOC ); |
456 } |
458 } |
457 colorDesc->SetAttribute( EGL_COLOR_BUFFER_TYPE, EGL_RGB_BUFFER ); |
459 colorDesc->SetAttribute( EGL_COLOR_BUFFER_TYPE, EGL_RGB_BUFFER ); |
458 CEGLConfig* filter = EGLI_NEW CEGLConfig( |
460 CEGLConfig* filter = EGLI_NEW CEGLConfig( |
459 *colorDesc, |
461 *colorDesc, |
460 EGL_DONT_CARE, |
462 (EGLBoolean)EGL_DONT_CARE, |
461 EGL_DONT_CARE, |
463 (EGLBoolean)EGL_DONT_CARE, |
462 EGL_DONT_CARE, |
464 (EGLenum)EGL_DONT_CARE, |
463 EGL_DONT_CARE, |
465 EGL_DONT_CARE, |
464 0, 0, 0, |
466 0, 0, 0, |
465 EGL_DONT_CARE, |
467 EGL_DONT_CARE, |
466 EGL_DONT_CARE, |
468 EGL_DONT_CARE, |
467 EGL_DONT_CARE, |
469 (EGLBoolean)EGL_DONT_CARE, |
468 EGL_DONT_CARE, |
470 EGL_DONT_CARE, |
469 EGL_OPENGL_ES_BIT, |
471 EGL_OPENGL_ES_BIT, |
470 0, 0, 0, |
472 0, 0, 0, |
471 EGL_WINDOW_BIT, |
473 EGL_WINDOW_BIT, |
472 NULL ); // transparent color |
474 NULL ); // transparent color |
904 { |
906 { |
905 EGLI_LEAVE_RET( EGL_FALSE, EGL_BAD_SURFACE ); |
907 EGLI_LEAVE_RET( EGL_FALSE, EGL_BAD_SURFACE ); |
906 } |
908 } |
907 |
909 |
908 // \note EGLI_ENTER_RET macro will fail if thread allocation didn't succeed |
910 // \note EGLI_ENTER_RET macro will fail if thread allocation didn't succeed |
909 CEGLThread* thread = getThread(); |
|
910 |
911 |
911 surface->Lock(); |
912 surface->Lock(); |
912 //TODO: client apis |
913 //TODO: client apis |
913 if( surface->RemoveRef() ) |
914 if( surface->RemoveRef() ) |
914 { |
915 { |
1204 { |
1205 { |
1205 // All threads destroyed from process => it's not a process any more |
1206 // All threads destroyed from process => it's not a process any more |
1206 state->RemoveProcess( process->Id() ); |
1207 state->RemoveProcess( process->Id() ); |
1207 process = NULL; |
1208 process = NULL; |
1208 } |
1209 } |
1209 #else |
1210 #endif |
1210 releaseState(); |
1211 releaseState(); |
1211 #endif |
|
1212 return EGL_TRUE; |
1212 return EGL_TRUE; |
1213 } |
1213 } |
1214 |
1214 |
1215 EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer( |
1215 EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer( |
1216 EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, |
1216 EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, |
1938 delete nativeFuncs; |
1938 delete nativeFuncs; |
1939 EGLI_LEAVE_RET( EGL_FALSE, EGL_BAD_ALLOC ); |
1939 EGLI_LEAVE_RET( EGL_FALSE, EGL_BAD_ALLOC ); |
1940 } |
1940 } |
1941 context->SetNativeGLFucntions( nativeFuncs ); |
1941 context->SetNativeGLFucntions( nativeFuncs ); |
1942 } |
1942 } |
1943 EGLINativeDisplayType drawDC = NULL; |
1943 EGLINativeDisplayType drawDC = 0; |
1944 EGLINativeDisplayType readDC = NULL; |
1944 EGLINativeDisplayType readDC = 0; |
1945 if( drawSurface->Type() == CEGLSurface::PBUFFER_SURFACE ) |
1945 if( drawSurface->Type() == CEGLSurface::PBUFFER_SURFACE ) |
1946 { |
1946 { |
1947 drawDC = ((CEGLPbufferSurface*)drawSurface)->NativeDisplay(); |
1947 drawDC = ((CEGLPbufferSurface*)drawSurface)->NativeDisplay(); |
1948 } |
1948 } |
1949 else if( drawSurface->Type() == CEGLSurface::WINDOW_SURFACE ) |
1949 else if( drawSurface->Type() == CEGLSurface::WINDOW_SURFACE ) |