/////////////////////////////////////////////////////////////////////////////
// Name: glcanvas.cpp
-// Purpose: wxGLCanvas, for using OpenGL with wxWindows 2.0 for Motif.
+// Purpose: wxGLCanvas, for using OpenGL with wxWindows
// Uses the GLX extension.
// Author: Julian Smart and Wolfram Gloger
// Modified by:
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "glcanvas.h"
#endif
#if wxUSE_GLCANVAS
-#error Sorry, wxGLCanvas does not work yet with wxX11
-
#include "wx/glcanvas.h"
#include "wx/utils.h"
#include "wx/app.h"
#ifdef __VMS
# pragma message disable nosimpint
#endif
-#include <Xm/Xm.h>
+#include <X11/Xlib.h>
#ifdef __VMS
# pragma message enable nosimpint
#endif
-#include "wx/motif/private.h"
+#include "wx/x11/private.h"
+
+// DLL options compatibility check:
+#include "wx/build.h"
+WX_CHECK_BUILD_OPTIONS("wxGL")
+
+static inline WXWindow wxGetClientAreaWindow(wxWindow* win)
+{
+#ifdef __WXMOTIF__
+ return win->GetClientXWindow();
+#else
+ return win->GetClientAreaWindow();
+#endif
+}
#ifdef OLD_MESA
// workaround for bug in Mesa's glx.c
if (m_glContext)
{
Display* display = (Display*) wxGetDisplay();
- glXSwapBuffers(display, (Window) m_window->GetClientAreaWindow());
+ glXSwapBuffers(display, (Window) wxGetClientAreaWindow(m_window));
}
}
if (m_glContext)
{
Display* display = (Display*) wxGetDisplay();
- glXMakeCurrent(display, (Window) m_window->GetClientAreaWindow(),
+ glXMakeCurrent(display, (Window) wxGetClientAreaWindow(m_window),
m_glContext );;
}
}
the_colour->Green(),
the_colour->Blue());
} else {
+#ifdef __WXMOTIF__
+ the_colour->AllocColour(m_window->GetXDisplay());
+#else
the_colour->CalcPixel(wxTheApp->GetMainColormap(wxGetDisplay()));
+#endif
GLint pix = (GLint)the_colour->GetPixel();
if(pix == -1)
{
} else {
// By default, we use the visual of xwindow
// NI: is this really senseful ? opengl in e.g. color index mode ?
- XGetWindowAttributes(display, (Window) GetClientAreaWindow(), &xwa);
+ XGetWindowAttributes(display, (Window)wxGetClientAreaWindow(this), &xwa);
vi_templ.visualid = XVisualIDFromVisual(xwa.visual);
vi = XGetVisualInfo(display, VisualIDMask, &vi_templ, &n);
if(!vi) return FALSE;