X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fx11%2Ffg_state_x11.c;h=79a7ac93fa3993415a6f97e28ebb81f12626fbb1;hb=6b36c1d54fc34b2ead05d4bfb4ad9bcdae7246b5;hp=976531978c102440305fe7c6dd200d93f69e8050;hpb=b744f1401b990f642e96d4c65cc86eca5224efd1;p=freeglut diff --git a/src/x11/fg_state_x11.c b/src/x11/fg_state_x11.c index 9765319..79a7ac9 100644 --- a/src/x11/fg_state_x11.c +++ b/src/x11/fg_state_x11.c @@ -26,7 +26,12 @@ */ #include -#include "../fg_internal.h" +#include "fg_internal.h" +#ifdef EGL_VERSION_1_0 +#include "egl/fg_state_egl.h" +#else +#include "x11/fg_state_x11_glx.h" +#endif int fgPlatformGlutDeviceGet ( GLenum eWhat ) { @@ -83,15 +88,23 @@ int fgPlatformGlutGet ( GLenum eWhat ) case GLUT_WINDOW_HEADER_HEIGHT: { int x, y; - Window w; + Window p,w; if( fgStructure.CurrentWindow == NULL ) return 0; + if (fgStructure.CurrentWindow->Parent) + /* For child window, we should return relative to upper-left + * of parent's client area. + */ + p = fgStructure.CurrentWindow->Parent->Window.Handle; + else + p = fgDisplay.pDisplay.RootWindow; + XTranslateCoordinates( fgDisplay.pDisplay.Display, fgStructure.CurrentWindow->Window.Handle, - fgDisplay.pDisplay.RootWindow, + p, 0, 0, &x, &y, &w); switch ( eWhat ) @@ -100,7 +113,8 @@ int fgPlatformGlutGet ( GLenum eWhat ) case GLUT_WINDOW_Y: return y; } - if ( w == 0 ) + if ( w == 0 || fgStructure.CurrentWindow->Parent) + /* logic below needs w, and child windows don't have borders */ return 0; XTranslateCoordinates( fgDisplay.pDisplay.Display, @@ -150,6 +164,7 @@ int fgPlatformGlutGet ( GLenum eWhat ) else { XVisualInfo * visualInfo; + int result; #ifdef EGL_VERSION_1_0 EGLint vid = 0; XVisualInfo visualTemplate; @@ -161,13 +176,15 @@ int fgPlatformGlutGet ( GLenum eWhat ) visualTemplate.visualid = vid; visualInfo = XGetVisualInfo(fgDisplay.pDisplay.Display, VisualIDMask, &visualTemplate, &num_visuals); #else + { const GLXFBConfig fbconfig = fgStructure.CurrentWindow->Window.pContext.FBConfig; visualInfo = glXGetVisualFromFBConfig( fgDisplay.pDisplay.Display, fbconfig ); + } #endif - const int result = visualInfo->visual->map_entries; + result = visualInfo->visual->map_entries; XFree(visualInfo);