#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 )
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 )
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,
else
{
XVisualInfo * visualInfo;
+ int result;
#ifdef EGL_VERSION_1_0
EGLint vid = 0;
XVisualInfo visualTemplate;
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);