opengl translator: fixing 2 Windows EGL issues:

- runtime segfaults
- pbuffer creation
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowsApi.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowsApi.cpp
index 11cce61..f92a010 100644
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowsApi.cpp
+++ b/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowsApi.cpp
@@ -203,7 +203,7 @@
     if(!s_wglExtProcs){
         s_wglExtProcs = new WglExtProcs();
         s_wglExtProcs->wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pixel_format","wglGetPixelFormatAttribivARB");
-        s_wglExtProcs->wglChoosePixelFormatARB      = (PFNWGLCHOOSEPIXELFORMATARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pixel_format","wglPixelFormatARB");
+        s_wglExtProcs->wglChoosePixelFormatARB      = (PFNWGLCHOOSEPIXELFORMATARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pixel_format","wglChoosePixelFormatARB");
         s_wglExtProcs->wglCreatePbufferARB          = (PFNWGLCREATEPBUFFERARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pbuffer","wglCreatePbufferARB");
         s_wglExtProcs->wglReleasePbufferDCARB       = (PFNWGLRELEASEPBUFFERDCARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pbuffer","wglReleasePbufferDCARB");
         s_wglExtProcs->wglDestroyPbufferARB         = (PFNWGLDESTROYPBUFFERARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pbuffer","wglDestroyPbufferARB");
@@ -321,8 +321,36 @@
 }
 
 static bool setPixelFormat(HDC dc,EglConfig* cfg) {
+   EGLint red,green,blue,alpha,depth,stencil;
+    bool   gotAttribs = cfg->getConfAttrib(EGL_RED_SIZE,&red)     &&
+                        cfg->getConfAttrib(EGL_GREEN_SIZE,&green) &&
+                        cfg->getConfAttrib(EGL_BLUE_SIZE,&blue)   &&
+                        cfg->getConfAttrib(EGL_ALPHA_SIZE,&alpha) &&
+                        cfg->getConfAttrib(EGL_DEPTH_SIZE,&depth) &&
+                        cfg->getConfAttrib(EGL_STENCIL_SIZE,&stencil) ;
+
+     if(!gotAttribs) return false;
+     int wglPixelFormatAttribs[] = {
+                                    WGL_SUPPORT_OPENGL_ARB       ,TRUE,
+                                    WGL_DRAW_TO_PBUFFER_ARB      ,TRUE,
+                                    WGL_DRAW_TO_WINDOW_ARB       ,TRUE,
+                                    WGL_COLOR_BITS_ARB           ,red+green+blue,
+                                    WGL_RED_BITS_ARB             ,red,
+                                    WGL_GREEN_BITS_ARB           ,green,
+                                    WGL_BLUE_BITS_ARB            ,blue,
+                                    WGL_ALPHA_BITS_ARB           ,alpha,
+                                    WGL_STENCIL_BITS_ARB         ,stencil,
+                                    WGL_DEPTH_BITS_ARB           ,depth,
+                                    WGL_DOUBLE_BUFFER_ARB        ,TRUE,
+                                    0
+                                   };
+    int iPixelFormat;
+    unsigned int numpf;
+    if(!s_wglExtProcs->wglChoosePixelFormatARB || !s_wglExtProcs->wglChoosePixelFormatARB(dc,wglPixelFormatAttribs, NULL, 1, &iPixelFormat, &numpf)) {
+        return false;
+    }
    EGLNativePixelFormatType frmt = cfg->nativeConfig();
-   int iPixelFormat = ChoosePixelFormat(dc,&frmt);
+   //int iPixelFormat = ChoosePixelFormat(dc,&frmt);
    if(!iPixelFormat) return false;
    return SetPixelFormat(dc,iPixelFormat,&frmt);
 }
@@ -472,6 +500,7 @@
 }
 
 bool releaseSurfaceDC(EGLNativeDisplayType dpy,HDC dc,EglSurface*srfc){
+    if(!srfc) return true;
     switch(srfc->type()){
     case EglSurface::WINDOW:
          ReleaseDC(static_cast<EGLNativeWindowType>(srfc->native()),dc);
@@ -488,15 +517,18 @@
 
 bool makeCurrent(EGLNativeDisplayType display,EglSurface* read,EglSurface* draw,EGLNativeContextType ctx) {
 
-    HDC hdcRead = getSurfaceDC(display,read);
-    HDC hdcDraw = getSurfaceDC(display,draw);
+    HDC hdcRead = read ? getSurfaceDC(display,read):0;
+    HDC hdcDraw = draw ? getSurfaceDC(display,draw):0;
     bool retVal = false;
 
-    if(!s_wglExtProcs->wglMakeContextCurrentARB ){
-        if(hdcRead == hdcDraw){
-            return wglMakeCurrent(hdcDraw,ctx);
-        }
-        if(!hdcRead || !hdcDraw) return false;
+
+    if(hdcRead == hdcDraw){
+            printf("making current read == draw\n");
+            bool ret =  wglMakeCurrent(hdcDraw,ctx);
+            printf("last error is %d\n",GetLastError());
+            return ret;
+    } else if (!s_wglExtProcs->wglMakeContextCurrentARB ) {
+        return false;
     }
     retVal = s_wglExtProcs->wglMakeContextCurrentARB(hdcDraw,hdcRead,ctx);