hostsupport/hostegl/src/eglapi.cpp
branchbug235_bringup_0
changeset 67 ca7e6949bf7a
parent 56 40cc73c24bf8
child 75 82d8da1d79c7
equal deleted inserted replaced
58:021dd2b9ee6a 67:ca7e6949bf7a
    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 )