am bbbdc458: am 829a2e5b: Merge "opengl translator: fixed EGL regression"

* commit 'bbbdc458bdbf557a4a2af90a414db1ab8ab638e2':
  opengl translator: fixed EGL regression
This commit is contained in:
David Turner
2011-07-08 10:52:04 -07:00
committed by Android Git Automerger
2 changed files with 15 additions and 5 deletions

View File

@@ -399,11 +399,13 @@ bool validNativeWin(EGLNativeDisplayType dpy,EGLNativeWindowType win) {
}
bool validNativeWin(EGLNativeDisplayType dpy,EGLNativeSurfaceType win) {
if (!win) return false;
return validNativeWin(dpy,win->getHwnd());
}
bool validNativePixmap(EGLNativeDisplayType dpy,EGLNativeSurfaceType pix) {
BITMAP bm;
if (!pix) return false;
return GetObject(pix->getBmap(), sizeof(BITMAP), (LPSTR)&bm);
}
@@ -465,6 +467,7 @@ EGLNativeSurfaceType createPbufferSurface(EGLNativeDisplayType display,EglConfig
}
bool releasePbuffer(EGLNativeDisplayType display,EGLNativeSurfaceType pb) {
if (!pb) return false;
if(!s_wglExtProcs->wglReleasePbufferDCARB || !s_wglExtProcs->wglDestroyPbufferARB) return false;
if(!s_wglExtProcs->wglReleasePbufferDCARB(pb->getPbuffer(),pb->getDC()) || !s_wglExtProcs->wglDestroyPbufferARB(pb->getPbuffer())){
DWORD err = GetLastError();
@@ -524,7 +527,7 @@ bool makeCurrent(EGLNativeDisplayType display,EglSurface* read,EglSurface* draw,
}
void swapBuffers(EGLNativeDisplayType display,EGLNativeSurfaceType srfc){
if(!SwapBuffers(srfc->getDC())) {
if(srfc && !SwapBuffers(srfc->getDC())) {
DWORD err = GetLastError();
}
}

View File

@@ -175,6 +175,7 @@ bool validNativeWin(EGLNativeDisplayType dpy,EGLNativeWindowType win) {
}
bool validNativeWin(EGLNativeDisplayType dpy,EGLNativeSurfaceType win) {
if (!win) return false;
return validNativeWin(dpy,win->srfc());
}
@@ -183,7 +184,7 @@ bool validNativePixmap(EGLNativeDisplayType dpy,EGLNativeSurfaceType pix) {
int tmp;
unsigned int utmp;
ErrorHandler handler(dpy);
if(!XGetGeometry(dpy,pix->srfc(),&root,&tmp,&tmp,&utmp,&utmp,&utmp,&utmp)) return false;
if(!XGetGeometry(dpy,pix ? pix->srfc() : NULL,&root,&tmp,&tmp,&utmp,&utmp,&utmp,&utmp)) return false;
return handler.getLastError() == 0;
}
@@ -227,6 +228,7 @@ EGLNativeSurfaceType createPbufferSurface(EGLNativeDisplayType dpy,EglConfig* cf
}
bool releasePbuffer(EGLNativeDisplayType dis,EGLNativeSurfaceType pb) {
if (!pb) return false;
glXDestroyPbuffer(dis,pb->srfc());
return true;
@@ -258,7 +260,9 @@ bool makeCurrent(EGLNativeDisplayType dpy,EglSurface* read,EglSurface* draw,EGLN
}
void swapBuffers(EGLNativeDisplayType dpy,EGLNativeSurfaceType srfc){
if (srfc) {
glXSwapBuffers(dpy,srfc->srfc());
}
}
void waitNative() {
@@ -273,7 +277,7 @@ void swapInterval(EGLNativeDisplayType dpy,EGLNativeSurfaceType win,int interval
if(strstr(extensions,"EXT_swap_control")) {
glXSwapIntervalEXT = (GLXSWAPINTERVALEXT)glXGetProcAddress((const GLubyte*)"glXSwapIntervalEXT");
}
if(glXSwapIntervalEXT) {
if(glXSwapIntervalEXT && win) {
glXSwapIntervalEXT(dpy,win->srfc(),interval);
}
}
@@ -286,5 +290,8 @@ EGLNativeSurfaceType createPixmapSurface(EGLNativePixmapType pix){
return new SrfcInfo(pix,SrfcInfo::PIXMAP);
}
void destroySurface(EGLNativeSurfaceType srfc){};
void destroySurface(EGLNativeSurfaceType srfc){
delete srfc;
};
};