EXTRALIBS_GUI = @EXTRALIBS_GUI@
EXTRALIBS_OPENGL = @EXTRALIBS_OPENGL@
EXTRALIBS_SDL = @EXTRALIBS_SDL@
+CXXWARNINGS = @CXXWARNINGS@
HOST_SUFFIX = @HOST_SUFFIX@
wx_top_builddir = @wx_top_builddir@
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
-DwxUSE_BASE=1 -DWXMAKINGDLL -I$(top_srcdir)/src/stc/scintilla/include \
-I$(top_srcdir)/src/stc/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
- $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
MONODLL_OBJECTS = \
monodll_appbase.o \
monodll_arcall.o \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
-DwxUSE_BASE=1 -I$(top_srcdir)/src/stc/scintilla/include \
-I$(top_srcdir)/src/stc/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
- $(CPPFLAGS) $(CXXFLAGS)
+ $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
MONOLIB_OBJECTS = \
monolib_appbase.o \
monolib_arcall.o \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DwxUSE_GUI=0 -DWXMAKINGDLL_BASE -DwxUSE_BASE=1 $(PIC_FLAG) $(CPPFLAGS) \
- $(CXXFLAGS)
+ -DwxUSE_GUI=0 -DWXMAKINGDLL_BASE -DwxUSE_BASE=1 $(PIC_FLAG) $(CXXWARNINGS) \
+ $(CPPFLAGS) $(CXXFLAGS)
BASEDLL_OBJECTS = \
$(__basedll___win32rc) \
basedll_appbase.o \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DwxUSE_GUI=0 -DwxUSE_BASE=1 $(CPPFLAGS) $(CXXFLAGS)
+ -DwxUSE_GUI=0 -DwxUSE_BASE=1 $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
BASELIB_OBJECTS = \
baselib_appbase.o \
baselib_arcall.o \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DwxUSE_GUI=0 -DWXUSINGDLL \
- -DWXMAKINGDLL_NET $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXMAKINGDLL_NET $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
NETDLL_OBJECTS = \
$(__netdll___win32rc) \
netdll_fs_inet.o \
NETLIB_CXXFLAGS = $(__netlib_PCH_INC) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
- $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DwxUSE_GUI=0 $(CPPFLAGS) \
- $(CXXFLAGS)
+ $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DwxUSE_GUI=0 \
+ $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
NETLIB_OBJECTS = \
netlib_fs_inet.o \
netlib_ftp.o \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DWXUSINGDLL -DWXMAKINGDLL_CORE -DwxUSE_BASE=0 $(PIC_FLAG) $(CPPFLAGS) \
- $(CXXFLAGS)
+ -DWXUSINGDLL -DWXMAKINGDLL_CORE -DwxUSE_BASE=0 $(PIC_FLAG) $(CXXWARNINGS) \
+ $(CPPFLAGS) $(CXXFLAGS)
COREDLL_OBJECTS = \
$(__coredll___win32rc) \
coredll_event.o \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DwxUSE_BASE=0 $(CPPFLAGS) $(CXXFLAGS)
+ -DwxUSE_BASE=0 $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
CORELIB_OBJECTS = \
corelib_event.o \
corelib_fs_mem.o \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DWXUSINGDLL \
- -DWXMAKINGDLL_ADV $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXMAKINGDLL_ADV $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
ADVDLL_OBJECTS = \
$(__advdll___win32rc) \
$(__ADVANCED_SRC_OBJECTS_2) \
ADVLIB_CXXFLAGS = $(__advlib_PCH_INC) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
- $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CPPFLAGS) $(CXXFLAGS)
+ $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
ADVLIB_OBJECTS = \
$(__ADVANCED_SRC_OBJECTS_3) \
$(__PLUGIN_ADV_SRC_OBJECTS_3)
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DWXUSINGDLL -DWXMAKINGDLL_MEDIA $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXUSINGDLL -DWXMAKINGDLL_MEDIA $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
MEDIADLL_OBJECTS = \
$(__mediadll___win32rc) \
mediadll_mediactrlcmn.o \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- $(CPPFLAGS) $(CXXFLAGS)
+ $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
MEDIALIB_OBJECTS = \
medialib_mediactrlcmn.o \
$(__MEDIA_PLATFORM_SRC_OBJECTS_3)
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DwxUSE_GUI=0 -DWXUSINGDLL -DWXMAKINGDLL_ODBC $(PIC_FLAG) $(CPPFLAGS) \
- $(CXXFLAGS)
+ -DwxUSE_GUI=0 -DWXUSINGDLL -DWXMAKINGDLL_ODBC $(PIC_FLAG) $(CXXWARNINGS) \
+ $(CPPFLAGS) $(CXXFLAGS)
ODBCDLL_OBJECTS = \
$(__odbcdll___win32rc) \
odbcdll_db.o \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DwxUSE_GUI=0 $(CPPFLAGS) $(CXXFLAGS)
+ -DwxUSE_GUI=0 $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
ODBCLIB_OBJECTS = \
odbclib_db.o \
odbclib_dbtable.o
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DWXUSINGDLL -DWXMAKINGDLL_DBGRID $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXUSINGDLL -DWXMAKINGDLL_DBGRID $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
DBGRIDDLL_OBJECTS = \
$(__dbgriddll___win32rc) \
dbgriddll_dbgrid.o
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- $(CPPFLAGS) $(CXXFLAGS)
+ $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
DBGRIDLIB_OBJECTS = \
dbgridlib_dbgrid.o
DBGRIDLIB_ODEP = $(___pch_wxprec_dbgridlib_wx_wxprec_h_gch___depname)
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DWXUSINGDLL -DWXMAKINGDLL_HTML $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXUSINGDLL -DWXMAKINGDLL_HTML $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
HTMLDLL_OBJECTS = \
$(__htmldll___win32rc) \
$(__HTML_SRC_PLATFORM_OBJECTS_2) \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- $(CPPFLAGS) $(CXXFLAGS)
+ $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
HTMLLIB_OBJECTS = \
$(__HTML_SRC_PLATFORM_OBJECTS_3) \
htmllib_helpctrl.o \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DWXUSINGDLL \
- -DWXMAKINGDLL_QA $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXMAKINGDLL_QA $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
QADLL_OBJECTS = \
$(__qadll___win32rc) \
qadll_debugrpt.o \
QALIB_CXXFLAGS = $(__qalib_PCH_INC) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
- $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CPPFLAGS) $(CXXFLAGS)
+ $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
QALIB_OBJECTS = \
qalib_debugrpt.o \
qalib_dbgrptg.o
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DwxUSE_GUI=0 -DWXUSINGDLL \
- -DWXMAKINGDLL_XML $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXMAKINGDLL_XML $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
XMLDLL_OBJECTS = \
$(__xmldll___win32rc) \
xmldll_xml.o \
XMLLIB_CXXFLAGS = $(__xmllib_PCH_INC) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
- $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DwxUSE_GUI=0 $(CPPFLAGS) \
- $(CXXFLAGS)
+ $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DwxUSE_GUI=0 \
+ $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
XMLLIB_OBJECTS = \
xmllib_xml.o \
xmllib_xtixml.o
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DWXUSINGDLL \
- -DWXMAKINGDLL_XRC $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXMAKINGDLL_XRC $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
XRCDLL_OBJECTS = \
$(__xrcdll___win32rc) \
xrcdll_xh_animatctrl.o \
XRCLIB_CXXFLAGS = $(__xrclib_PCH_INC) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
- $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CPPFLAGS) $(CXXFLAGS)
+ $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
XRCLIB_OBJECTS = \
xrclib_xh_animatctrl.o \
xrclib_xh_bmp.o \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DWXUSINGDLL \
- -DWXMAKINGDLL_AUI $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXMAKINGDLL_AUI $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
AUIDLL_OBJECTS = \
$(__auidll___win32rc) \
auidll_framemanager.o \
AUILIB_CXXFLAGS = $(__auilib_PCH_INC) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
- $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CPPFLAGS) $(CXXFLAGS)
+ $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
AUILIB_OBJECTS = \
auilib_framemanager.o \
auilib_dockart.o \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- -DWXUSINGDLL -DWXMAKINGDLL_RICHTEXT $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXUSINGDLL -DWXMAKINGDLL_RICHTEXT $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
RICHTEXTDLL_OBJECTS = \
$(__richtextdll___win32rc) \
richtextdll_richtextctrl.o \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) \
$(__INC_ZLIB_p) $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
- $(CPPFLAGS) $(CXXFLAGS)
+ $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
RICHTEXTLIB_OBJECTS = \
richtextlib_richtextctrl.o \
richtextlib_richtextbuffer.o \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
-I$(top_srcdir)/src/stc/scintilla/include \
-I$(top_srcdir)/src/stc/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
- -DWXUSINGDLL -DWXMAKINGDLL_STC $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXUSINGDLL -DWXMAKINGDLL_STC $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
STCDLL_OBJECTS = \
$(__stcdll___win32rc) \
stcdll_stc.o \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) \
-I$(top_srcdir)/src/stc/scintilla/include \
-I$(top_srcdir)/src/stc/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
- $(CPPFLAGS) $(CXXFLAGS)
+ $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
STCLIB_OBJECTS = \
stclib_stc.o \
stclib_PlatWX.o \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) -DWXUSINGDLL \
- -DWXMAKINGDLL_GL $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
+ -DWXMAKINGDLL_GL $(PIC_FLAG) $(CXXWARNINGS) $(CPPFLAGS) $(CXXFLAGS)
GLDLL_OBJECTS = \
$(__gldll___win32rc) \
gldll_glcmn.o \
GLLIB_CXXFLAGS = $(__gllib_PCH_INC) -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
- $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CPPFLAGS) $(CXXFLAGS)
+ $(__INC_ODBC_p) $(__INC_REGEX_p) $(__INC_EXPAT_p) $(CXXWARNINGS) $(CPPFLAGS) \
+ $(CXXFLAGS)
GLLIB_OBJECTS = \
gllib_glcmn.o \
$(__OPENGL_SRC_PLATFORM_OBJECTS_1)
@COND_TOOLKIT_WINCE@NET_WINCE_HDR = wx/msw/wince/net.h
@COND_TOOLKIT_MSW@MSW_HTML_HDR = wx/msw/helpbest.h
@COND_TOOLKIT_COCOA@OPENGL_HDR_PLATFORM = wx/cocoa/glcanvas.h
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@OPENGL_HDR_PLATFORM = wx/gtk1/glcanvas.h
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@OPENGL_HDR_PLATFORM = wx/gtk/glcanvas.h
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@OPENGL_HDR_PLATFORM \
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ = wx/gtk1/glcanvas.h wx/unix/glx11.h
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@OPENGL_HDR_PLATFORM \
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ = wx/gtk/glcanvas.h wx/unix/glx11.h
@COND_TOOLKIT_MAC@OPENGL_HDR_PLATFORM = wx/mac/glcanvas.h \
@COND_TOOLKIT_MAC@ wx/mac/carbon/glcanvas.h
-@COND_TOOLKIT_MOTIF@OPENGL_HDR_PLATFORM = wx/x11/glcanvas.h
+@COND_TOOLKIT_MOTIF@OPENGL_HDR_PLATFORM = wx/x11/glcanvas.h wx/unix/glx11.h
@COND_TOOLKIT_MSW@OPENGL_HDR_PLATFORM = wx/msw/glcanvas.h
@COND_TOOLKIT_WINCE@OPENGL_HDR_PLATFORM = wx/msw/glcanvas.h
-@COND_TOOLKIT_X11@OPENGL_HDR_PLATFORM = wx/x11/glcanvas.h
+@COND_TOOLKIT_X11@OPENGL_HDR_PLATFORM = wx/x11/glcanvas.h wx/unix/glx11.h
COND_TOOLKIT__BASE_MACOSX_HDR = \
wx/unix/apptbase.h \
wx/unix/apptrait.h \
@COND_PLATFORM_WIN32_1@__gldll___win32rc = gldll_version_rc.o
@COND_TOOLKIT_COCOA@__OPENGL_SRC_PLATFORM_OBJECTS = gldll_glcanvas.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@__OPENGL_SRC_PLATFORM_OBJECTS \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ = gldll_glcanvas.o
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ = gldll_glcanvas.o gldll_glx11.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__OPENGL_SRC_PLATFORM_OBJECTS \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ = gldll_glcanvas.o
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ = gldll_glcanvas.o gldll_glx11.o
@COND_TOOLKIT_MAC@__OPENGL_SRC_PLATFORM_OBJECTS = gldll_glcanvas.o
-@COND_TOOLKIT_MOTIF@__OPENGL_SRC_PLATFORM_OBJECTS = gldll_glcanvas.o
+@COND_TOOLKIT_MOTIF@__OPENGL_SRC_PLATFORM_OBJECTS = \
+@COND_TOOLKIT_MOTIF@ gldll_glcanvas.o gldll_glx11.o
@COND_TOOLKIT_MSW@__OPENGL_SRC_PLATFORM_OBJECTS = gldll_glcanvas.o
@COND_TOOLKIT_PM@__OPENGL_SRC_PLATFORM_OBJECTS = gldll_glcanvas.o
@COND_TOOLKIT_WINCE@__OPENGL_SRC_PLATFORM_OBJECTS = gldll_glcanvas.o
-@COND_TOOLKIT_X11@__OPENGL_SRC_PLATFORM_OBJECTS = gldll_glcanvas.o
+@COND_TOOLKIT_X11@__OPENGL_SRC_PLATFORM_OBJECTS = \
+@COND_TOOLKIT_X11@ gldll_glcanvas.o gldll_glx11.o
COND_MONOLITHIC_0___WXLIBGLDEP_CORE_p = \
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_MONOLITHIC_0@__WXLIBGLDEP_CORE_p = $(COND_MONOLITHIC_0___WXLIBGLDEP_CORE_p)
@COND_USE_PCH_1@ = .pch/wxprec_gllib/wx/wxprec.h.gch
@COND_TOOLKIT_COCOA@__OPENGL_SRC_PLATFORM_OBJECTS_1 = gllib_glcanvas.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@__OPENGL_SRC_PLATFORM_OBJECTS_1 \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ = gllib_glcanvas.o
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ = gllib_glcanvas.o gllib_glx11.o
@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__OPENGL_SRC_PLATFORM_OBJECTS_1 \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ = gllib_glcanvas.o
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ = gllib_glcanvas.o gllib_glx11.o
@COND_TOOLKIT_MAC@__OPENGL_SRC_PLATFORM_OBJECTS_1 = gllib_glcanvas.o
-@COND_TOOLKIT_MOTIF@__OPENGL_SRC_PLATFORM_OBJECTS_1 = gllib_glcanvas.o
+@COND_TOOLKIT_MOTIF@__OPENGL_SRC_PLATFORM_OBJECTS_1 = \
+@COND_TOOLKIT_MOTIF@ gllib_glcanvas.o gllib_glx11.o
@COND_TOOLKIT_MSW@__OPENGL_SRC_PLATFORM_OBJECTS_1 = gllib_glcanvas.o
@COND_TOOLKIT_PM@__OPENGL_SRC_PLATFORM_OBJECTS_1 = gllib_glcanvas.o
@COND_TOOLKIT_WINCE@__OPENGL_SRC_PLATFORM_OBJECTS_1 = gllib_glcanvas.o
-@COND_TOOLKIT_X11@__OPENGL_SRC_PLATFORM_OBJECTS_1 = gllib_glcanvas.o
+@COND_TOOLKIT_X11@__OPENGL_SRC_PLATFORM_OBJECTS_1 = \
+@COND_TOOLKIT_X11@ gllib_glcanvas.o gllib_glx11.o
@COND_SHARED_1@____wxgl_namedll_DEP = $(__gldll___depname)
@COND_SHARED_0@____wxgl_namelib_DEP = $(__gllib___depname)
COND_WITH_PLUGIN_SDL_1___sound_sdl___depname = \
@COND_TOOLKIT_PM@gldll_glcanvas.o: $(srcdir)/src/os2/glcanvas.cpp $(GLDLL_ODEP)
@COND_TOOLKIT_PM@ $(CXXC) -c -o $@ $(GLDLL_CXXFLAGS) $(srcdir)/src/os2/glcanvas.cpp
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@gldll_glx11.o: $(srcdir)/src/unix/glx11.cpp $(GLDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ $(CXXC) -c -o $@ $(GLDLL_CXXFLAGS) $(srcdir)/src/unix/glx11.cpp
+
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@gldll_glx11.o: $(srcdir)/src/unix/glx11.cpp $(GLDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ $(CXXC) -c -o $@ $(GLDLL_CXXFLAGS) $(srcdir)/src/unix/glx11.cpp
+
+@COND_TOOLKIT_MOTIF@gldll_glx11.o: $(srcdir)/src/unix/glx11.cpp $(GLDLL_ODEP)
+@COND_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(GLDLL_CXXFLAGS) $(srcdir)/src/unix/glx11.cpp
+
+@COND_TOOLKIT_X11@gldll_glx11.o: $(srcdir)/src/unix/glx11.cpp $(GLDLL_ODEP)
+@COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(GLDLL_CXXFLAGS) $(srcdir)/src/unix/glx11.cpp
+
gllib_glcmn.o: $(srcdir)/src/common/glcmn.cpp $(GLLIB_ODEP)
$(CXXC) -c -o $@ $(GLLIB_CXXFLAGS) $(srcdir)/src/common/glcmn.cpp
@COND_TOOLKIT_PM@gllib_glcanvas.o: $(srcdir)/src/os2/glcanvas.cpp $(GLLIB_ODEP)
@COND_TOOLKIT_PM@ $(CXXC) -c -o $@ $(GLLIB_CXXFLAGS) $(srcdir)/src/os2/glcanvas.cpp
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@gllib_glx11.o: $(srcdir)/src/unix/glx11.cpp $(GLLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ $(CXXC) -c -o $@ $(GLLIB_CXXFLAGS) $(srcdir)/src/unix/glx11.cpp
+
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@gllib_glx11.o: $(srcdir)/src/unix/glx11.cpp $(GLLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ $(CXXC) -c -o $@ $(GLLIB_CXXFLAGS) $(srcdir)/src/unix/glx11.cpp
+
+@COND_TOOLKIT_MOTIF@gllib_glx11.o: $(srcdir)/src/unix/glx11.cpp $(GLLIB_ODEP)
+@COND_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(GLLIB_CXXFLAGS) $(srcdir)/src/unix/glx11.cpp
+
+@COND_TOOLKIT_X11@gllib_glx11.o: $(srcdir)/src/unix/glx11.cpp $(GLLIB_ODEP)
+@COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(GLLIB_CXXFLAGS) $(srcdir)/src/unix/glx11.cpp
+
sound_sdl_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp
$(CXXC) -c -o $@ $(SOUND_SDL_CXXFLAGS) $(srcdir)/src/unix/sound_sdl.cpp
src/generic/calctrl.cpp
src/generic/datavgen.cpp
src/generic/datectlg.cpp
-<!-- src/generic/editlbox.cpp -->
+ <!-- src/generic/editlbox.cpp -->
src/generic/grid.cpp
src/generic/gridctrl.cpp
src/generic/gridsel.cpp
wx/dataview.h
wx/dateevt.h
wx/dcbuffer.h
-<!-- wx/editlbox.h -->
+ <!-- wx/editlbox.h -->
wx/generic/aboutdlgg.h
wx/generic/animate.h
wx/generic/bmpcbox.h
src/common/glcmn.cpp
<if cond="TOOLKIT=='MAC'">src/mac/carbon/glcanvas.cpp</if>
<if cond="TOOLKIT=='COCOA'">src/cocoa/glcanvas.mm</if>
- <if cond="TOOLKIT=='GTK' and TOOLKIT_VERSION=='2'">src/gtk/glcanvas.cpp</if>
- <if cond="TOOLKIT=='GTK' and TOOLKIT_VERSION==''">src/gtk1/glcanvas.cpp</if>
+ <if cond="TOOLKIT=='GTK' and TOOLKIT_VERSION=='2'">
+ src/gtk/glcanvas.cpp
+ src/unix/glx11.cpp
+ </if>
+ <if cond="TOOLKIT=='GTK' and TOOLKIT_VERSION==''">
+ src/gtk1/glcanvas.cpp
+ src/unix/glx11.cpp
+ </if>
<if cond="TOOLKIT=='MSW'">src/msw/glcanvas.cpp</if>
<if cond="TOOLKIT=='WINCE'">src/msw/glcanvas.cpp</if>
- <if cond="TOOLKIT=='MOTIF'">src/x11/glcanvas.cpp</if>
- <if cond="TOOLKIT=='X11'">src/x11/glcanvas.cpp</if>
+ <if cond="TOOLKIT=='MOTIF'">src/x11/glcanvas.cpp src/unix/glx11.cpp</if>
+ <if cond="TOOLKIT=='X11'">src/x11/glcanvas.cpp src/unix/glx11.cpp</if>
<if cond="TOOLKIT=='PM'">src/os2/glcanvas.cpp</if>
</set>
<set var="OPENGL_HDR_PLATFORM" hints="files">
<if cond="TOOLKIT=='MAC'">wx/mac/glcanvas.h wx/mac/carbon/glcanvas.h</if>
<if cond="TOOLKIT=='COCOA'">wx/cocoa/glcanvas.h</if>
- <if cond="TOOLKIT=='GTK' and TOOLKIT_VERSION=='2'">wx/gtk/glcanvas.h</if>
- <if cond="TOOLKIT=='GTK' and TOOLKIT_VERSION==''">wx/gtk1/glcanvas.h</if>
+ <if cond="TOOLKIT=='GTK' and TOOLKIT_VERSION=='2'">
+ wx/gtk/glcanvas.h
+ wx/unix/glx11.h
+ </if>
+ <if cond="TOOLKIT=='GTK' and TOOLKIT_VERSION==''">
+ wx/gtk1/glcanvas.h
+ wx/unix/glx11.h
+ </if>
<if cond="TOOLKIT=='MSW'">wx/msw/glcanvas.h</if>
<if cond="TOOLKIT=='WINCE'">wx/msw/glcanvas.h</if>
- <if cond="TOOLKIT=='MOTIF'">wx/x11/glcanvas.h</if>
- <if cond="TOOLKIT=='X11'">wx/x11/glcanvas.h</if>
+ <if cond="TOOLKIT=='MOTIF'">wx/x11/glcanvas.h wx/unix/glx11.h</if>
+ <if cond="TOOLKIT=='X11'">wx/x11/glcanvas.h wx/unix/glx11.h</if>
</set>
<set var="OPENGL_HDR" hints="files">
#endif // WXWIN_COMPATIBILITY_2_8
};
+// ----------------------------------------------------------------------------
+// wxGLApp: a special wxApp subclass for OpenGL applications which must be used
+// to select a visual compatible with the given attributes
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_GL wxGLAppBase : public wxApp
+{
+public:
+ wxGLAppBase() : wxApp() { }
+
+ // use this in the constructor of the user-derived wxGLApp class to
+ // determine if an OpenGL rendering context with these attributes
+ // is available - returns true if so, false if not.
+ virtual bool InitGLVisual(const int *attribList) = 0;
+};
+
#if defined(__WXMSW__)
#include "wx/msw/glcanvas.h"
#elif defined(__WXMOTIF__) || defined(__WXX11__)
#error "wxGLCanvas not supported in this wxWidgets port"
#endif
-class WXDLLIMPEXP_GL wxGLApp : public wxApp
+// wxMac and wxMSW don't need anything extra in wxGLAppBase, so declare it here
+#ifndef wxGL_APP_DEFINED
+
+class WXDLLIMPEXP_GL wxGLApp : public wxGLAppBase
{
public:
- wxGLApp() : wxApp() { }
+ wxGLApp() : wxGLAppBase() { }
- // use this in the constructor of the user-derived wxGLApp class to
- // determine if an OpenGL rendering context with these attributes
- // is available - returns true if so, false if not.
- bool InitGLVisual(const int *attribList);
+ virtual bool InitGLVisual(const int *attribList);
private:
DECLARE_DYNAMIC_CLASS(wxGLApp)
};
+#endif // !wxGL_APP_DEFINED
+
#endif // wxUSE_GLCANVAS
#endif // _WX_GLCANVAS_H_BASE_
bool IsInAssert() const { return m_isInAssert; }
#endif // __WXDEBUG__
+ // GTK-specific methods
+ // -------------------
+
+ // this can be overridden to return a specific visual to be used for GTK+
+ // instead of the default one (it's used by wxGLApp)
+ //
+ // must return XVisualInfo pointer (it is not freed by caller)
+ virtual void *GetXVisualInfo() { return NULL; }
+
+
+ // implementation only from now on
+ // -------------------------------
+
guint m_idleTag;
// temporarily disable idle events
void SuspendIdleCallback();
- // Used by the the wxGLApp and wxGLCanvas class for GL-based X visual
- // selection.
- void *m_glVisualInfo; // this is actually an XVisualInfo*
- void *m_glFBCInfo; // this is actually an GLXFBConfig*
// This returns the current visual: either that used by wxRootWindow
// or the XVisualInfo* for SGI.
GdkVisual *GetGdkVisual();
-
+
private:
// true if we're inside an assert modal dialog
#ifdef __WXDEBUG__
#ifndef _WX_GLCANVAS_H_
#define _WX_GLCANVAS_H_
-extern "C"
-{
- #include <GL/gl.h>
- #include <GL/glx.h>
- #include <GL/glu.h>
-}
-
-//---------------------------------------------------------------------------
-// wxGLContext
-//---------------------------------------------------------------------------
-
-
-class WXDLLEXPORT wxGLContext : public wxGLContextBase
-{
-public:
- wxGLContext(wxWindow* win, const wxGLContext* other = NULL);
- virtual ~wxGLContext();
-
- virtual void SetCurrent(const wxGLCanvas& win) const;
-
-private:
- GLXContext m_glContext;
-
- DECLARE_CLASS(wxGLContext)
-};
+#include "wx/unix/glx11.h"
//---------------------------------------------------------------------------
// wxGLCanvas
//---------------------------------------------------------------------------
-class WXDLLEXPORT wxGLCanvas : public wxGLCanvasBase
+class WXDLLEXPORT wxGLCanvas : public wxGLCanvasX11
{
public:
wxGLCanvas(wxWindow *parent,
const int *attribList = NULL,
const wxPalette& palette = wxNullPalette);
- virtual ~wxGLCanvas();
-
- // implement wxGLCanvasBase methods
+ // implement wxGLCanvasX11 methods
// --------------------------------
- virtual void SwapBuffers();
-
-
- // GTK-specific helpers
- // --------------------
-
- // return GLX version: 13 means 1.3
- static int GetGLXVersion();
+ virtual Window GetXWindow() const;
// deprecated methods
// implementation from now on
void OnInternalIdle();
- void *m_vi; // actually an XVisualInfo*
- GLXFBConfig *m_fbc;
- bool m_canFreeVi;
- bool m_canFreeFBC;
GtkWidget *m_glWidget;
bool m_exposed;
const bool m_createImplicitContext;
#endif // WXWIN_COMPATIBILITY_2_8
- // returns an XVisualInfo* based on desired GL attributes;
- // returns NULL if an appropriate visual is not found. The
- // caller is reponsible for using XFree() to deallocate
- // the returned structure.
- static void* ChooseGLVisual(const int *attribList);
- static void* ChooseGLFBC(const int *attribList);
- static void GetGLAttribListFromWX(const int *wx_attribList, int *gl_attribList );
-
private:
DECLARE_CLASS(wxGLCanvas)
};
#ifndef _WX_GLCANVAS_H_
#define _WX_GLCANVAS_H_
-extern "C"
-{
- #include <GL/gl.h>
- #include <GL/glx.h>
- #include <GL/glu.h>
-}
-
-//---------------------------------------------------------------------------
-// wxGLContext
-//---------------------------------------------------------------------------
-
-
-class WXDLLEXPORT wxGLContext : public wxGLContextBase
-{
-public:
- wxGLContext(wxWindow* win, const wxGLContext* other = NULL);
- virtual ~wxGLContext();
-
- virtual void SetCurrent(const wxGLCanvas& win) const;
-
-private:
- GLXContext m_glContext;
-
- DECLARE_CLASS(wxGLContext)
-};
+#include "wx/unix/glx11.h"
//---------------------------------------------------------------------------
// wxGLCanvas
//---------------------------------------------------------------------------
-class WXDLLEXPORT wxGLCanvas : public wxGLCanvasBase
+class WXDLLEXPORT wxGLCanvas : public wxGLCanvasX11
{
public:
wxGLCanvas(wxWindow *parent,
const int *attribList = NULL,
const wxPalette& palette = wxNullPalette);
- virtual ~wxGLCanvas();
-
- // implement wxGLCanvasBase methods
- // --------------------------------
+ // implement wxGLCanvasX11 methods
+ // -------------------------------
- virtual void SwapBuffers();
-
-
- // GTK-specific helpers
- // --------------------
-
- // return GLX version: 13 means 1.3
- static int GetGLXVersion();
+ virtual Window GetXWindow() const;
// deprecated methods
virtual void OnInternalIdle();
- void *m_vi; // actually an XVisualInfo*
- GLXFBConfig *m_fbc;
- bool m_canFreeVi;
- bool m_canFreeFBC;
GtkWidget *m_glWidget;
#if WXWIN_COMPATIBILITY_2_8
const bool m_createImplicitContext;
#endif // WXWIN_COMPATIBILITY_2_8
- // returns an XVisualInfo* based on desired GL attributes;
- // returns NULL if an appropriate visual is not found. The
- // caller is reponsible for using XFree() to deallocate
- // the returned structure.
- static void* ChooseGLVisual(const int *attribList);
- static void* ChooseGLFBC(const int *attribList);
- static void GetGLAttribListFromWX(const int *wx_attribList, int *gl_attribList );
-
private:
DECLARE_CLASS(wxGLCanvas)
};
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/unix/glx11.h
+// Purpose: class common for all X11-based wxGLCanvas implementations
+// Author: Vadim Zeitlin
+// Created: 2007-04-15
+// RCS-ID: $Id$
+// Copyright: (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_UNIX_GLX11_H_
+#define _WX_UNIX_GLX11_H_
+
+#include <GL/glx.h>
+
+// ----------------------------------------------------------------------------
+// wxGLContext
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxGLContext : public wxGLContextBase
+{
+public:
+ wxGLContext(wxGLCanvas *win, const wxGLContext *other = NULL);
+ virtual ~wxGLContext();
+
+ virtual void SetCurrent(const wxGLCanvas& win) const;
+
+private:
+ // attach context to the drawable or unset it (if NULL)
+ static void MakeCurrent(GLXDrawable drawable, GLXContext context);
+
+ GLXContext m_glContext;
+
+ DECLARE_CLASS(wxGLContext)
+};
+
+// ----------------------------------------------------------------------------
+// wxGLCanvasX11
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxGLCanvasX11 : public wxGLCanvasBase
+{
+public:
+ // initialization and dtor
+ // -----------------------
+
+ // default ctor doesn't do anything, InitVisual() must be called
+ wxGLCanvasX11();
+
+ // initializes the XVisualInfo corresponding to the given attributes
+ bool InitVisual(const int *attribList);
+
+ // frees XVisualInfo info
+ virtual ~wxGLCanvasX11();
+
+
+ // implement wxGLCanvasBase methods
+ // --------------------------------
+
+ virtual void SwapBuffers();
+
+
+ // X11-specific methods
+ // --------------------
+
+ // return GLX version: 13 means 1.3 &c
+ static int GetGLXVersion();
+
+ // get the X11 handle of this window
+ virtual Window GetXWindow() const = 0;
+
+
+ // override some wxWindow methods
+ // ------------------------------
+
+ // return true only if the window is realized: OpenGL context can't be
+ // created until we are
+ virtual bool IsShownOnScreen() const;
+
+
+ // implementation only from now on
+ // -------------------------------
+
+ // get the GLXFBConfig/XVisualInfo we use
+ GLXFBConfig *GetGLXFBConfig() const { return m_fbc; }
+ XVisualInfo *GetXVisualInfo() const { return m_vi; }
+
+ // initialize the global default GL visual, return false if matching visual
+ // not found
+ static bool InitDefaultVisualInfo(const int *attribList);
+
+ // get the default GL X11 visual (may be NULL, shouldn't be freed by caller)
+ static XVisualInfo *GetDefaultXVisualInfo() { return ms_glVisualInfo; }
+
+ // free the global GL visual, called by wxGLApp
+ static void FreeDefaultVisualInfo();
+
+private:
+ // fills in glattrs with attributes defined by wxattrs which must be
+ // 0-terminated if it is non-NULL
+ //
+ // n is the max size of glattrs, false is returned if we overflow it, it
+ // should be at least 16 to accommodate the default attributes
+ static bool ConvertWXAttrsToGL(const int *wxattrs, int *glattrs, size_t n);
+
+ // initializes XVisualInfo (in any case) and, if supported, GLXFBConfig
+ //
+ // returns false if XVisualInfo couldn't be initialized, otherwise caller
+ // is responsible for freeing the pointers
+ static bool InitXVisualInfo(const int *attribList,
+ GLXFBConfig **pFBC, XVisualInfo **pXVisual);
+
+
+ // this is only used if it's supported i.e. if GL >= 1.3
+ GLXFBConfig *m_fbc;
+
+ // used for all GL versions, obtained from GLXFBConfig for GL >= 1.3
+ XVisualInfo *m_vi;
+
+ // the global/default versions of the above
+ static GLXFBConfig *ms_glFBCInfo;
+ static XVisualInfo *ms_glVisualInfo;
+};
+
+// ----------------------------------------------------------------------------
+// wxGLApp
+// ----------------------------------------------------------------------------
+
+// this is used in wx/glcanvas.h, prevent it from defining a generic wxGLApp
+#define wxGL_APP_DEFINED
+
+class wxGLApp : public wxGLAppBase
+{
+public:
+ wxGLApp();
+
+ // implement wxGLAppBase method
+ virtual bool InitGLVisual(const int *attribList)
+ {
+ return wxGLCanvasX11::InitDefaultVisualInfo(attribList);
+ }
+
+ // and implement this wxGTK::wxApp method too
+ virtual void *GetXVisualInfo()
+ {
+ return wxGLCanvasX11::GetDefaultXVisualInfo();
+ }
+
+ // and override this wxApp method to clean up
+ virtual int OnExit()
+ {
+ wxGLCanvasX11::FreeDefaultVisualInfo();
+
+ return wxGLAppBase::OnExit();
+ }
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxGLApp);
+};
+
+#endif // _WX_UNIX_GLX11_H_
+
#ifndef _WX_GLCANVAS_H_
#define _WX_GLCANVAS_H_
-#include "wx/gdicmn.h"
+#include "wx/unix/glx11.h"
-#include <GL/glx.h>
-
-//---------------------------------------------------------------------------
-// classes
-//---------------------------------------------------------------------------
-
-class WXDLLEXPORT wxGLContext : public wxGLContextBase
-{
-public:
- wxGLContext(wxGLCanvas *win, const wxGLContext *other = NULL);
- virtual ~wxGLContext();
-
- virtual void SetCurrent(const wxGLCanvas& win) const;
-
-private:
- GLXContext m_glContext;
-
- DECLARE_CLASS(wxGLContext)
-};
-
-
-class WXDLLEXPORT wxGLCanvas : public wxGLCanvasBase
+class WXDLLEXPORT wxGLCanvas : public wxGLCanvasX11
{
public:
wxGLCanvas(wxWindow *parent,
const int *attribList = NULL,
const wxPalette& palette = wxNullPalette);
- virtual ~wxGLCanvas();
-
- virtual void SwapBuffers();
-
+ // implement wxGLCanvasX11 methods
+ // --------------------------------
- // implementation
- void *m_vi;
+ virtual Window GetXWindow() const;
protected:
virtual int GetColourIndex(const wxColour& col);
m_idleTag = 0;
g_isIdle = true;
wxapp_install_idle_handler();
-
- // this is NULL for a "regular" wxApp, but is set (and freed) by a wxGLApp
- m_glVisualInfo = (void *) NULL;
- m_glFBCInfo = (void *) NULL;
}
wxApp::~wxApp()
{
if (m_idleTag)
g_source_remove( m_idleTag );
-
- if (m_glFBCInfo)
- XFree(m_glFBCInfo);
- if (m_glVisualInfo)
- XFree(m_glVisualInfo);
}
bool wxApp::OnInitGui()
// if this is a wxGLApp (derived from wxApp), and we've already
// chosen a specific visual, then derive the GdkVisual from that
- if (m_glVisualInfo != NULL)
+ if ( GetXVisualInfo() )
{
GdkVisual* vis = gtk_widget_get_default_visual();
{
GdkVisual *visual = NULL;
- if (m_glVisualInfo)
- visual = gdkx_visual_get( ((XVisualInfo *) m_glVisualInfo)->visualid );
+ XVisualInfo *xvi = (XVisualInfo *)GetXVisualInfo();
+ if ( xvi )
+ visual = gdkx_visual_get( xvi->visualid );
else
visual = gdk_drawable_get_visual( wxGetRootWindow()->window );
#include "wx/gtk/win_gtk.h"
#include "wx/gtk/private.h"
-//---------------------------------------------------------------------------
-// global data
-//---------------------------------------------------------------------------
-
-XVisualInfo *g_vi = (XVisualInfo*) NULL;
-
-// ----------------------------------------------------------------------------
-// helper functions
-// ----------------------------------------------------------------------------
-
-// wrapper around glXMakeContextCurrent/glXMakeCurrent depending on GLX
-// version
-static void wxMakeContextCurrent(GLXDrawable drawable, GLXContext context)
-{
- if (wxGLCanvas::GetGLXVersion() >= 13)
- glXMakeContextCurrent( GDK_DISPLAY(), drawable, drawable, context);
- else // GLX <= 1.2 doesn't have glXMakeContextCurrent()
- glXMakeCurrent( GDK_DISPLAY(), drawable, context);
-}
-
-//---------------------------------------------------------------------------
-// wxGLContext
-//---------------------------------------------------------------------------
-
-IMPLEMENT_CLASS(wxGLContext,wxObject)
-
-wxGLContext::wxGLContext(wxWindow* win, const wxGLContext* other)
-{
- wxGLCanvas *gc = (wxGLCanvas*) win;
-
- if (wxGLCanvas::GetGLXVersion() >= 13)
- {
- GLXFBConfig *fbc = gc->m_fbc;
- wxCHECK_RET( fbc, _T("invalid GLXFBConfig for OpenGl") );
- m_glContext = glXCreateNewContext( GDK_DISPLAY(), fbc[0], GLX_RGBA_TYPE,
- other ? other->m_glContext : None,
- GL_TRUE );
- }
- else // GLX <= 1.2
- {
- XVisualInfo *vi = (XVisualInfo *) gc->m_vi;
- wxCHECK_RET( vi, _T("invalid visual for OpenGl") );
- m_glContext = glXCreateContext( GDK_DISPLAY(), vi,
- other ? other->m_glContext : None,
- GL_TRUE );
- }
-
- wxASSERT_MSG( m_glContext, _T("Couldn't create OpenGl context") );
-}
-
-wxGLContext::~wxGLContext()
-{
- if ( !m_glContext )
- return;
-
- if ( m_glContext == glXGetCurrentContext() )
- wxMakeContextCurrent(None, NULL);
-
- glXDestroyContext( GDK_DISPLAY(), m_glContext );
-}
-
-void wxGLContext::SetCurrent(const wxGLCanvas& win) const
-{
- if ( !m_glContext )
- return;
-
- GdkWindow *window = GTK_PIZZA(win.m_wxwindow)->bin_window;
- wxCHECK_RET( window, _T("window must be shown") );
-
- wxMakeContextCurrent(GDK_WINDOW_XWINDOW(window), m_glContext);
-}
-
-
#if WXWIN_COMPATIBILITY_2_8
//-----------------------------------------------------------------------------
m_exposed = false;
m_noExpose = true;
m_nativeSizeEvent = true;
- m_fbc = NULL;
- m_vi = NULL;
- if (wxGLCanvas::GetGLXVersion() >= 13)
- {
- // GLX >= 1.3 uses a GLXFBConfig
- GLXFBConfig * fbc = NULL;
- if (wxTheApp->m_glFBCInfo != NULL)
- {
- fbc = (GLXFBConfig *) wxTheApp->m_glFBCInfo;
- m_canFreeFBC = false; // owned by wxTheApp - don't free upon destruction
- }
- else
- {
- fbc = (GLXFBConfig *) wxGLCanvas::ChooseGLFBC(attribList);
- m_canFreeFBC = true;
- }
- m_fbc = fbc; // save for later use
- wxCHECK_MSG( m_fbc, false, _T("required FBConfig couldn't be found") );
- }
+ if ( !InitVisual(attribList) )
+ return false;
- XVisualInfo *vi = NULL;
- if (wxTheApp->m_glVisualInfo != NULL)
- {
- vi = (XVisualInfo *)wxTheApp->m_glVisualInfo;
- m_canFreeVi = false; // owned by wxTheApp - don't free upon destruction
- }
- else
- {
- if (wxGLCanvas::GetGLXVersion() >= 13)
- // GLX >= 1.3
- vi = glXGetVisualFromFBConfig(GDK_DISPLAY(), m_fbc[0]);
- else
- // GLX <= 1.2
- vi = (XVisualInfo *) ChooseGLVisual(attribList);
-
- m_canFreeVi = true;
- }
+ XVisualInfo * const xvi = GetXVisualInfo();
- m_vi = vi; // save for later use
-
- wxCHECK_MSG( m_vi, false, _T("required visual couldn't be found") );
GdkVisual *visual;
GdkColormap *colormap;
colormap = gdk_screen_get_default_colormap(screen);
visual = gdk_colormap_get_visual(colormap);
- if (GDK_VISUAL_XVISUAL(visual)->visualid != vi->visualid)
+ if (GDK_VISUAL_XVISUAL(visual)->visualid != xvi->visualid)
{
- visual = gdk_x11_screen_lookup_visual( screen, vi->visualid );
+ visual = gdk_x11_screen_lookup_visual( screen, xvi->visualid );
colormap = gdk_colormap_new(visual, FALSE);
}
else
#endif // GTK+ >= 2.2
{
- visual = gdkx_visual_get( vi->visualid );
+ visual = gdkx_visual_get( xvi->visualid );
colormap = gdk_colormap_new( visual, TRUE );
gtk_widget_push_colormap( colormap );
return true;
}
-wxGLCanvas::~wxGLCanvas()
-{
- GLXFBConfig * fbc = (GLXFBConfig *) m_fbc;
- if (fbc && m_canFreeFBC)
- XFree( fbc );
-
- XVisualInfo *vi = (XVisualInfo *) m_vi;
- if (vi && m_canFreeVi)
- XFree( vi );
-}
-
-void* wxGLCanvas::ChooseGLVisual(const int *attribList)
-{
- int data[512];
- GetGLAttribListFromWX( attribList, data );
-
- Display *dpy = GDK_DISPLAY();
-
- return glXChooseVisual( dpy, DefaultScreen(dpy), data );
-}
-
-void* wxGLCanvas::ChooseGLFBC(const int *attribList)
-{
- int data[512];
- GetGLAttribListFromWX( attribList, data );
-
- int returned;
- return glXChooseFBConfig( GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY()),
- data, &returned );
-}
-
-
-void
-wxGLCanvas::GetGLAttribListFromWX(const int *wx_attribList, int *gl_attribList)
-{
- if ( !wx_attribList )
- {
- if (wxGLCanvas::GetGLXVersion() >= 13)
- {
- // leave GLX >= 1.3 choose the default attributes
- gl_attribList[0] = 0;
- }
- else // GLX < 1.3
- {
- int i = 0;
- // default settings if attriblist = 0
- gl_attribList[i++] = GLX_RGBA;
- gl_attribList[i++] = GLX_DOUBLEBUFFER;
- gl_attribList[i++] = GLX_DEPTH_SIZE; gl_attribList[i++] = 1;
- gl_attribList[i++] = GLX_RED_SIZE; gl_attribList[i++] = 1;
- gl_attribList[i++] = GLX_GREEN_SIZE; gl_attribList[i++] = 1;
- gl_attribList[i++] = GLX_BLUE_SIZE; gl_attribList[i++] = 1;
- gl_attribList[i++] = GLX_ALPHA_SIZE; gl_attribList[i++] = 0;
- gl_attribList[i++] = None;
- }
- }
- else // have non-default attributes
- {
- int arg=0, p=0;
- while( (wx_attribList[arg]!=0) && (p<510) )
- {
- switch( wx_attribList[arg++] )
- {
- case WX_GL_RGBA:
- if (wxGLCanvas::GetGLXVersion() <= 12)
- {
- // for GLX >= 1.3, GLX_RGBA is useless (setting this flags will crash on most opengl implm)
- gl_attribList[p++] = GLX_RGBA;
- }
- break;
- case WX_GL_BUFFER_SIZE:
- gl_attribList[p++] = GLX_BUFFER_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_LEVEL:
- gl_attribList[p++] = GLX_LEVEL;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_DOUBLEBUFFER:
- gl_attribList[p++] = GLX_DOUBLEBUFFER;
- gl_attribList[p++] = 1;
- break;
- case WX_GL_STEREO:
- gl_attribList[p++] = GLX_STEREO;
- break;
- case WX_GL_AUX_BUFFERS:
- gl_attribList[p++] = GLX_AUX_BUFFERS;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_RED:
- gl_attribList[p++] = GLX_RED_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_GREEN:
- gl_attribList[p++] = GLX_GREEN_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_BLUE:
- gl_attribList[p++] = GLX_BLUE_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ALPHA:
- gl_attribList[p++] = GLX_ALPHA_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_DEPTH_SIZE:
- gl_attribList[p++] = GLX_DEPTH_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_STENCIL_SIZE:
- gl_attribList[p++] = GLX_STENCIL_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ACCUM_RED:
- gl_attribList[p++] = GLX_ACCUM_RED_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ACCUM_GREEN:
- gl_attribList[p++] = GLX_ACCUM_GREEN_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ACCUM_BLUE:
- gl_attribList[p++] = GLX_ACCUM_BLUE_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ACCUM_ALPHA:
- gl_attribList[p++] = GLX_ACCUM_ALPHA_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- default:
- break;
- }
- }
-
- gl_attribList[p] = 0;
- }
-}
-
-/* static */
-int wxGLCanvas::GetGLXVersion()
-{
- static int s_glxVersion = 0;
- if ( s_glxVersion == 0 )
- {
- // check the GLX version
- int glxMajorVer, glxMinorVer;
- bool ok = glXQueryVersion(GDK_DISPLAY(), &glxMajorVer, &glxMinorVer);
- wxASSERT_MSG( ok, _T("GLX version not found") );
- if (!ok)
- s_glxVersion = 10; // 1.0 by default
- else
- s_glxVersion = glxMajorVer*10 + glxMinorVer;
- }
-
- return s_glxVersion;
-}
-
-void wxGLCanvas::SwapBuffers()
+Window wxGLCanvas::GetXWindow() const
{
GdkWindow *window = GTK_PIZZA(m_wxwindow)->bin_window;
- glXSwapBuffers( GDK_DISPLAY(), GDK_WINDOW_XWINDOW( window ) );
+ return window ? GDK_WINDOW_XWINDOW(window) : 0;
}
void wxGLCanvas::OnInternalIdle()
#endif // WXWIN_COMPATIBILITY_2_8
-//---------------------------------------------------------------------------
-// wxGLApp
-//---------------------------------------------------------------------------
-
-bool wxGLApp::InitGLVisual(const int *attribList)
-{
- if ( wxGLCanvas::GetGLXVersion() >= 13 )
- {
- if (m_glFBCInfo)
- XFree(m_glFBCInfo);
- m_glFBCInfo = wxGLCanvas::ChooseGLFBC(attribList);
-
- if ( !m_glFBCInfo )
- return false;
-
- if (m_glVisualInfo)
- XFree(m_glVisualInfo);
- m_glVisualInfo = glXGetVisualFromFBConfig(GDK_DISPLAY(), ((GLXFBConfig *)m_glFBCInfo)[0]);
- }
- else // GLX <= 1.2
- {
- if (m_glVisualInfo)
- XFree(m_glVisualInfo);
- m_glVisualInfo = wxGLCanvas::ChooseGLVisual(attribList);
- }
-
- return m_glVisualInfo != NULL;
-}
-
#endif // wxUSE_GLCANVAS
#include "wx/gtk1/win_gtk.h"
#include "wx/gtk1/private.h"
-//---------------------------------------------------------------------------
-// global data
-//---------------------------------------------------------------------------
-
-XVisualInfo *g_vi = (XVisualInfo*) NULL;
-
//-----------------------------------------------------------------------------
// idle system
//-----------------------------------------------------------------------------
extern void wxapp_install_idle_handler();
extern bool g_isIdle;
-// ----------------------------------------------------------------------------
-// helper functions
-// ----------------------------------------------------------------------------
-
-// wrapper around glXMakeContextCurrent/glXMakeCurrent depending on GLX
-// version
-static void wxMakeContextCurrent(GLXDrawable drawable, GLXContext context)
-{
- if (wxGLCanvas::GetGLXVersion() >= 13)
- glXMakeContextCurrent( GDK_DISPLAY(), drawable, drawable, context);
- else // GLX <= 1.2 doesn't have glXMakeContextCurrent()
- glXMakeCurrent( GDK_DISPLAY(), drawable, context);
-}
-
-//---------------------------------------------------------------------------
-// wxGLContext
-//---------------------------------------------------------------------------
-
-IMPLEMENT_CLASS(wxGLContext,wxObject)
-
-wxGLContext::wxGLContext(wxWindow* win, const wxGLContext* other)
-{
- wxGLCanvas *gc = (wxGLCanvas*) win;
-
- if (wxGLCanvas::GetGLXVersion() >= 13)
- {
- GLXFBConfig *fbc = gc->m_fbc;
- wxCHECK_RET( fbc, _T("invalid GLXFBConfig for OpenGl") );
- m_glContext = glXCreateNewContext( GDK_DISPLAY(), fbc[0], GLX_RGBA_TYPE,
- other ? other->m_glContext : None,
- GL_TRUE );
- }
- else // GLX <= 1.2
- {
- XVisualInfo *vi = (XVisualInfo *) gc->m_vi;
- wxCHECK_RET( vi, _T("invalid visual for OpenGl") );
- m_glContext = glXCreateContext( GDK_DISPLAY(), vi,
- other ? other->m_glContext : None,
- GL_TRUE );
- }
-
- wxASSERT_MSG( m_glContext, _T("Couldn't create OpenGl context") );
-}
-
-wxGLContext::~wxGLContext()
-{
- if ( !m_glContext )
- return;
-
- if ( m_glContext == glXGetCurrentContext() )
- wxMakeContextCurrent(None, NULL);
-
- glXDestroyContext( GDK_DISPLAY(), m_glContext );
-}
-
-void wxGLContext::SetCurrent(const wxGLCanvas& win) const
-{
- if ( !m_glContext )
- return;
-
- GdkWindow *window = GTK_PIZZA(win.m_wxwindow)->bin_window;
- wxCHECK_RET( window, _T("window must be shown") );
-
- wxMakeContextCurrent(GDK_WINDOW_XWINDOW(window), m_glContext);
-}
-
-
#if WXWIN_COMPATIBILITY_2_8
//-----------------------------------------------------------------------------
{
m_noExpose = true;
m_nativeSizeEvent = true;
- m_fbc = NULL;
- m_vi = NULL;
-
- if (wxGLCanvas::GetGLXVersion() >= 13)
- {
- // GLX >= 1.3 uses a GLXFBConfig
- GLXFBConfig * fbc = NULL;
- if (wxTheApp->m_glFBCInfo != NULL)
- {
- fbc = (GLXFBConfig *) wxTheApp->m_glFBCInfo;
- m_canFreeFBC = false; // owned by wxTheApp - don't free upon destruction
- }
- else
- {
- fbc = (GLXFBConfig *) wxGLCanvas::ChooseGLFBC(attribList);
- m_canFreeFBC = true;
- }
- m_fbc = fbc; // save for later use
- wxCHECK_MSG( m_fbc, false, _T("required FBConfig couldn't be found") );
- }
-
- XVisualInfo *vi = NULL;
- if (wxTheApp->m_glVisualInfo != NULL)
- {
- vi = (XVisualInfo *)wxTheApp->m_glVisualInfo;
- m_canFreeVi = false; // owned by wxTheApp - don't free upon destruction
- }
- else
- {
- if (wxGLCanvas::GetGLXVersion() >= 13)
- // GLX >= 1.3
- vi = glXGetVisualFromFBConfig(GDK_DISPLAY(), m_fbc[0]);
- else
- // GLX <= 1.2
- vi = (XVisualInfo *) ChooseGLVisual(attribList);
-
- m_canFreeVi = true;
- }
- m_vi = vi; // save for later use
+ if ( !InitVisual(attribList) )
+ return false;
- wxCHECK_MSG( m_vi, false, _T("required visual couldn't be found") );
- GdkVisual *visual;
- GdkColormap *colormap;
-
- visual = gdkx_visual_get( vi->visualid );
- colormap = gdk_colormap_new( visual, TRUE );
+ GdkVisual *visual = gdkx_visual_get( GetXVisualInfo()->visualid );
+ GdkColormap *colormap = gdk_colormap_new( visual, TRUE );
gtk_widget_push_colormap( colormap );
gtk_widget_push_visual( visual );
return true;
}
-wxGLCanvas::~wxGLCanvas()
-{
- GLXFBConfig * fbc = (GLXFBConfig *) m_fbc;
- if (fbc && m_canFreeFBC)
- XFree( fbc );
-
- XVisualInfo *vi = (XVisualInfo *) m_vi;
- if (vi && m_canFreeVi)
- XFree( vi );
-}
-
-void* wxGLCanvas::ChooseGLVisual(const int *attribList)
-{
- int data[512];
- GetGLAttribListFromWX( attribList, data );
-
- Display *dpy = GDK_DISPLAY();
-
- return glXChooseVisual( dpy, DefaultScreen(dpy), data );
-}
-
-void* wxGLCanvas::ChooseGLFBC(const int *attribList)
-{
- int data[512];
- GetGLAttribListFromWX( attribList, data );
-
- int returned;
- return glXChooseFBConfig( GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY()),
- data, &returned );
-}
-
-
-void
-wxGLCanvas::GetGLAttribListFromWX(const int *wx_attribList, int *gl_attribList)
-{
- if ( !wx_attribList )
- {
- if (wxGLCanvas::GetGLXVersion() >= 13)
- {
- // leave GLX >= 1.3 choose the default attributes
- gl_attribList[0] = 0;
- }
- else // GLX < 1.3
- {
- int i = 0;
- // default settings if attriblist = 0
- gl_attribList[i++] = GLX_RGBA;
- gl_attribList[i++] = GLX_DOUBLEBUFFER;
- gl_attribList[i++] = GLX_DEPTH_SIZE; gl_attribList[i++] = 1;
- gl_attribList[i++] = GLX_RED_SIZE; gl_attribList[i++] = 1;
- gl_attribList[i++] = GLX_GREEN_SIZE; gl_attribList[i++] = 1;
- gl_attribList[i++] = GLX_BLUE_SIZE; gl_attribList[i++] = 1;
- gl_attribList[i++] = GLX_ALPHA_SIZE; gl_attribList[i++] = 0;
- gl_attribList[i++] = None;
- }
- }
- else // have non-default attributes
- {
- int arg=0, p=0;
- while( (wx_attribList[arg]!=0) && (p<510) )
- {
- switch( wx_attribList[arg++] )
- {
- case WX_GL_RGBA:
- if (wxGLCanvas::GetGLXVersion() <= 12)
- {
- // for GLX >= 1.3, GLX_RGBA is useless (setting this flags will crash on most opengl implm)
- gl_attribList[p++] = GLX_RGBA;
- }
- break;
- case WX_GL_BUFFER_SIZE:
- gl_attribList[p++] = GLX_BUFFER_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_LEVEL:
- gl_attribList[p++] = GLX_LEVEL;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_DOUBLEBUFFER:
- gl_attribList[p++] = GLX_DOUBLEBUFFER;
- gl_attribList[p++] = 1;
- break;
- case WX_GL_STEREO:
- gl_attribList[p++] = GLX_STEREO;
- break;
- case WX_GL_AUX_BUFFERS:
- gl_attribList[p++] = GLX_AUX_BUFFERS;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_RED:
- gl_attribList[p++] = GLX_RED_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_GREEN:
- gl_attribList[p++] = GLX_GREEN_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_BLUE:
- gl_attribList[p++] = GLX_BLUE_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ALPHA:
- gl_attribList[p++] = GLX_ALPHA_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_DEPTH_SIZE:
- gl_attribList[p++] = GLX_DEPTH_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_STENCIL_SIZE:
- gl_attribList[p++] = GLX_STENCIL_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ACCUM_RED:
- gl_attribList[p++] = GLX_ACCUM_RED_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ACCUM_GREEN:
- gl_attribList[p++] = GLX_ACCUM_GREEN_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ACCUM_BLUE:
- gl_attribList[p++] = GLX_ACCUM_BLUE_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- case WX_GL_MIN_ACCUM_ALPHA:
- gl_attribList[p++] = GLX_ACCUM_ALPHA_SIZE;
- gl_attribList[p++] = wx_attribList[arg++];
- break;
- default:
- break;
- }
- }
-
- gl_attribList[p] = 0;
- }
-}
-
-/* static */
-int wxGLCanvas::GetGLXVersion()
-{
- static int s_glxVersion = 0;
- if ( s_glxVersion == 0 )
- {
- // check the GLX version
- int glxMajorVer, glxMinorVer;
- bool ok = glXQueryVersion(GDK_DISPLAY(), &glxMajorVer, &glxMinorVer);
- wxASSERT_MSG( ok, _T("GLX version not found") );
- if (!ok)
- s_glxVersion = 10; // 1.0 by default
- else
- s_glxVersion = glxMajorVer*10 + glxMinorVer;
- }
-
- return s_glxVersion;
-}
-
-void wxGLCanvas::SwapBuffers()
+Window wxGLCanvas::GetXWindow() const
{
GdkWindow *window = GTK_PIZZA(m_wxwindow)->bin_window;
- glXSwapBuffers( GDK_DISPLAY(), GDK_WINDOW_XWINDOW( window ) );
+ return window ? GDK_WINDOW_XWINDOW(window) : 0;
}
void wxGLCanvas::OnInternalIdle()
#endif // WXWIN_COMPATIBILITY_2_8
-//---------------------------------------------------------------------------
-// wxGLApp
-//---------------------------------------------------------------------------
-
-bool wxGLApp::InitGLVisual(const int *attribList)
-{
- if ( wxGLCanvas::GetGLXVersion() >= 13 )
- {
- if (m_glFBCInfo)
- XFree(m_glFBCInfo);
- m_glFBCInfo = wxGLCanvas::ChooseGLFBC(attribList);
-
- if ( !m_glFBCInfo )
- return false;
-
- if (m_glVisualInfo)
- XFree(m_glVisualInfo);
- m_glVisualInfo = glXGetVisualFromFBConfig(GDK_DISPLAY(), ((GLXFBConfig *)m_glFBCInfo)[0]);
- }
- else // GLX <= 1.2
- {
- if (m_glVisualInfo)
- XFree(m_glVisualInfo);
- m_glVisualInfo = wxGLCanvas::ChooseGLVisual(attribList);
- }
-
- return m_glVisualInfo != NULL;
-}
-
#endif // wxUSE_GLCANVAS
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: src/univ/glx11.cpp
+// Purpose: code common to all X11-based wxGLCanvas implementations
+// Author: Vadim Zeitlin
+// Created: 2007-04-15
+// RCS-ID: $Id$
+// Copyright: (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#if wxUSE_GLCANVAS
+
+#ifndef WX_PRECOMP
+#endif //WX_PRECOMP
+
+#include "wx/glcanvas.h"
+
+// ============================================================================
+// wxGLContext implementation
+// ============================================================================
+
+IMPLEMENT_CLASS(wxGLContext, wxObject)
+
+wxGLContext::wxGLContext(wxGLCanvas *gc, const wxGLContext *other)
+{
+ if ( wxGLCanvas::GetGLXVersion() >= 13 )
+ {
+ GLXFBConfig *fbc = gc->GetGLXFBConfig();
+ wxCHECK_RET( fbc, _T("invalid GLXFBConfig for OpenGL") );
+
+ m_glContext = glXCreateNewContext( wxGetX11Display(), fbc[0], GLX_RGBA_TYPE,
+ other ? other->m_glContext : None,
+ GL_TRUE );
+ }
+ else // GLX <= 1.2
+ {
+ XVisualInfo *vi = gc->GetXVisualInfo();
+ wxCHECK_RET( vi, _T("invalid visual for OpenGL") );
+
+ m_glContext = glXCreateContext( wxGetX11Display(), vi,
+ other ? other->m_glContext : None,
+ GL_TRUE );
+ }
+
+ wxASSERT_MSG( m_glContext, _T("Couldn't create OpenGL context") );
+}
+
+wxGLContext::~wxGLContext()
+{
+ if ( !m_glContext )
+ return;
+
+ if ( m_glContext == glXGetCurrentContext() )
+ MakeCurrent(None, NULL);
+
+ glXDestroyContext( wxGetX11Display(), m_glContext );
+}
+
+void wxGLContext::SetCurrent(const wxGLCanvas& win) const
+{
+ if ( !m_glContext )
+ return;
+
+ const Window xid = win.GetXWindow();
+ wxCHECK_RET( xid, _T("window must be shown") );
+
+ MakeCurrent(xid, m_glContext);
+}
+
+// wrapper around glXMakeContextCurrent/glXMakeCurrent depending on GLX
+// version
+/* static */
+void wxGLContext::MakeCurrent(GLXDrawable drawable, GLXContext context)
+{
+ if (wxGLCanvas::GetGLXVersion() >= 13)
+ glXMakeContextCurrent( wxGetX11Display(), drawable, drawable, context);
+ else // GLX <= 1.2 doesn't have glXMakeContextCurrent()
+ glXMakeCurrent( wxGetX11Display(), drawable, context);
+}
+
+// ============================================================================
+// wxGLCanvasX11 implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// initialization methods and dtor
+// ----------------------------------------------------------------------------
+
+wxGLCanvasX11::wxGLCanvasX11()
+{
+ m_fbc = NULL;
+ m_vi = NULL;
+}
+
+bool wxGLCanvasX11::InitVisual(const int *attribList)
+{
+ return InitXVisualInfo(attribList, &m_fbc, &m_vi);
+}
+
+wxGLCanvasX11::~wxGLCanvasX11()
+{
+ if ( m_fbc && m_fbc != ms_glFBCInfo )
+ XFree(m_fbc);
+
+ if ( m_vi && m_vi != ms_glVisualInfo )
+ XFree(m_vi);
+}
+
+// ----------------------------------------------------------------------------
+// working with GL attributes
+// ----------------------------------------------------------------------------
+
+bool
+wxGLCanvasX11::ConvertWXAttrsToGL(const int *wxattrs, int *glattrs, size_t n)
+{
+ wxCHECK_MSG( n >= 16, false, _T("GL attributes buffer too small") );
+
+ if ( !wxattrs )
+ {
+ if ( GetGLXVersion() >= 13 )
+ {
+ // leave GLX >= 1.3 choose the default attributes
+ glattrs[0] = None;
+ }
+ else // GLX < 1.3
+ {
+ // default settings if attriblist = 0
+ size_t i = 0;
+ glattrs[i++] = GLX_RGBA;
+ glattrs[i++] = GLX_DOUBLEBUFFER;
+ glattrs[i++] = GLX_DEPTH_SIZE; glattrs[i++] = 1;
+ glattrs[i++] = GLX_RED_SIZE; glattrs[i++] = 1;
+ glattrs[i++] = GLX_GREEN_SIZE; glattrs[i++] = 1;
+ glattrs[i++] = GLX_BLUE_SIZE; glattrs[i++] = 1;
+ glattrs[i++] = GLX_ALPHA_SIZE; glattrs[i++] = 0;
+ glattrs[i++] = None;
+
+ wxASSERT_MSG( i < n, _T("GL attributes buffer too small") );
+ }
+ }
+ else // have non-default attributes
+ {
+ size_t p = 0;
+ for ( int arg = 0; wxattrs[arg] != 0; )
+ {
+ // check if we have any space left, knowing that we may insert 2
+ // more elements during this loop iteration and we always need to
+ // terminate the list with None (hence -3)
+ if ( p >= n - 2 )
+ return false;
+
+ // notice that for boolean attributes we use "continue" in the
+ // switch to skip the assignment of the attribute value at the end
+ // of the loop which is done for integer attributes
+ switch ( wxattrs[arg++] )
+ {
+ case WX_GL_RGBA:
+ // for GLX >= 1.3, GLX_RGBA is useless and apparently
+ // harmful for some implementations
+ //
+ // FIXME: is this true?
+ if ( GetGLXVersion() <= 12 )
+ {
+ glattrs[p++] = GLX_RGBA;
+ }
+ continue;
+
+ case WX_GL_BUFFER_SIZE:
+ glattrs[p++] = GLX_BUFFER_SIZE;
+ break;
+
+ case WX_GL_LEVEL:
+ glattrs[p++] = GLX_LEVEL;
+ break;
+
+ case WX_GL_DOUBLEBUFFER:
+ glattrs[p++] = GLX_DOUBLEBUFFER;
+ continue;
+
+ case WX_GL_STEREO:
+ glattrs[p++] = GLX_STEREO;
+ break;
+
+ case WX_GL_AUX_BUFFERS:
+ glattrs[p++] = GLX_AUX_BUFFERS;
+ break;
+
+ case WX_GL_MIN_RED:
+ glattrs[p++] = GLX_RED_SIZE;
+ break;
+
+ case WX_GL_MIN_GREEN:
+ glattrs[p++] = GLX_GREEN_SIZE;
+ break;
+
+ case WX_GL_MIN_BLUE:
+ glattrs[p++] = GLX_BLUE_SIZE;
+ break;
+
+ case WX_GL_MIN_ALPHA:
+ glattrs[p++] = GLX_ALPHA_SIZE;
+ break;
+
+ case WX_GL_DEPTH_SIZE:
+ glattrs[p++] = GLX_DEPTH_SIZE;
+ break;
+
+ case WX_GL_STENCIL_SIZE:
+ glattrs[p++] = GLX_STENCIL_SIZE;
+ break;
+
+ case WX_GL_MIN_ACCUM_RED:
+ glattrs[p++] = GLX_ACCUM_RED_SIZE;
+ break;
+
+ case WX_GL_MIN_ACCUM_GREEN:
+ glattrs[p++] = GLX_ACCUM_GREEN_SIZE;
+ break;
+
+ case WX_GL_MIN_ACCUM_BLUE:
+ glattrs[p++] = GLX_ACCUM_BLUE_SIZE;
+ break;
+
+ case WX_GL_MIN_ACCUM_ALPHA:
+ glattrs[p++] = GLX_ACCUM_ALPHA_SIZE;
+ break;
+
+ default:
+ wxLogDebug(_T("Unsupported OpenGL attribute %d"),
+ wxattrs[arg - 1]);
+ continue;
+ }
+
+ // copy attribute value as is
+ glattrs[p++] = wxattrs[arg++];
+ }
+
+ glattrs[p] = None;
+ }
+
+ return true;
+}
+
+/* static */
+bool
+wxGLCanvasX11::InitXVisualInfo(const int *attribList,
+ GLXFBConfig **pFBC,
+ XVisualInfo **pXVisual)
+{
+ int data[512];
+ if ( !ConvertWXAttrsToGL(attribList, data, WXSIZEOF(data)) )
+ return false;
+
+ Display * const dpy = wxGetX11Display();
+
+ if ( GetGLXVersion() >= 13 )
+ {
+ int returned;
+ *pFBC = glXChooseFBConfig(dpy, DefaultScreen(dpy), data, &returned);
+
+ if ( *pFBC )
+ {
+ *pXVisual = glXGetVisualFromFBConfig(wxGetX11Display(), **pFBC);
+ if ( !*pXVisual )
+ {
+ XFree(*pFBC);
+ *pFBC = NULL;
+ }
+ }
+ }
+ else // GLX <= 1.2
+ {
+ *pFBC = NULL;
+ *pXVisual = glXChooseVisual(dpy, DefaultScreen(dpy), data);
+ }
+
+ return *pXVisual != NULL;
+}
+
+// ----------------------------------------------------------------------------
+// default visual management
+// ----------------------------------------------------------------------------
+
+XVisualInfo *wxGLCanvasX11::ms_glVisualInfo = NULL;
+GLXFBConfig *wxGLCanvasX11::ms_glFBCInfo = NULL;
+
+/* static */
+bool wxGLCanvasX11::InitDefaultVisualInfo(const int *attribList)
+{
+ FreeDefaultVisualInfo();
+
+ return InitXVisualInfo(attribList, &ms_glFBCInfo, &ms_glVisualInfo);
+}
+
+/* static */
+void wxGLCanvasX11::FreeDefaultVisualInfo()
+{
+ if ( ms_glFBCInfo )
+ {
+ XFree(ms_glFBCInfo);
+ ms_glFBCInfo = NULL;
+ }
+
+ if ( ms_glVisualInfo )
+ {
+ XFree(ms_glVisualInfo);
+ ms_glVisualInfo = NULL;
+ }
+}
+
+// ----------------------------------------------------------------------------
+// other GL methods
+// ----------------------------------------------------------------------------
+
+/* static */
+int wxGLCanvasX11::GetGLXVersion()
+{
+ static int s_glxVersion = 0;
+ if ( s_glxVersion == 0 )
+ {
+ // check the GLX version
+ int glxMajorVer, glxMinorVer;
+ bool ok = glXQueryVersion(wxGetX11Display(), &glxMajorVer, &glxMinorVer);
+ wxASSERT_MSG( ok, _T("GLX version not found") );
+ if (!ok)
+ s_glxVersion = 10; // 1.0 by default
+ else
+ s_glxVersion = glxMajorVer*10 + glxMinorVer;
+ }
+
+ return s_glxVersion;
+}
+
+void wxGLCanvasX11::SwapBuffers()
+{
+ const Window xid = GetXWindow();
+ wxCHECK_RET( xid, _T("window must be shown") );
+
+ glXSwapBuffers(wxGetX11Display(), xid);
+}
+
+bool wxGLCanvasX11::IsShownOnScreen() const
+{
+ return GetXWindow() && wxGLCanvasBase::IsShownOnScreen();
+}
+
+#endif // wxUSE_GLCANVAS
+
#include "wx/glcanvas.h"
#ifndef WX_PRECOMP
- #include "wx/log.h"
#include "wx/app.h"
#include "wx/utils.h"
#endif
-#ifdef __VMS
-# pragma message disable nosimpint
-#endif
-#include <X11/Xlib.h>
-#ifdef __VMS
-# pragma message enable nosimpint
-#endif
-#include "wx/x11/private.h"
-
-// ----------------------------------------------------------------------------
-// local functions
-// ----------------------------------------------------------------------------
-
-static inline Window wxGetClientAreaWindow(const wxWindow* win)
-{
- return (Window)win->
-#ifdef __WXMOTIF__
- GetClientXWindow();
-#else
- GetClientAreaWindow();
-#endif
-}
-
// ============================================================================
// implementation
// ============================================================================
-// ----------------------------------------------------------------------------
-// wxGLContext
-// ----------------------------------------------------------------------------
-
-IMPLEMENT_CLASS(wxGLContext, wxObject)
-
-wxGLContext::wxGLContext(wxGLCanvas *win, const wxGLContext *other)
-{
- XVisualInfo *vi = (XVisualInfo *) win->m_vi;
- wxASSERT_MSG( vi, wxT("invalid visual in wxGLCanvas") );
-
- m_glContext = glXCreateContext( (Display *)wxGetDisplay(),
- vi,
- other ? other->m_glContext : None,
- GL_TRUE);
-
- wxASSERT_MSG( m_glContext, wxT("Couldn't create OpenGL context") );
-}
-
-wxGLContext::~wxGLContext()
-{
- if (!m_glContext)
- return;
-
- if (m_glContext == glXGetCurrentContext())
- {
- glXMakeCurrent( (Display*) wxGetDisplay(), None, NULL);
- }
-
- glXDestroyContext( (Display*) wxGetDisplay(), m_glContext );
-}
-
-void wxGLContext::SetCurrent(const wxGLCanvas& win) const
-{
- if (m_glContext)
- {
- Display* display = (Display*) wxGetDisplay();
- glXMakeCurrent(display, wxGetClientAreaWindow(&win), m_glContext);
- }
-}
-
-// ----------------------------------------------------------------------------
-// wxGLCanvas
-// ----------------------------------------------------------------------------
-
IMPLEMENT_CLASS(wxGLCanvas, wxWindow)
wxGLCanvas::wxGLCanvas(wxWindow *parent,
const int *attribList,
const wxPalette& palette)
{
- m_vi = NULL;
-
if ( !wxWindow::Create(parent, id, pos, size, style, name) )
return false;
- XVisualInfo *vi, vi_templ;
- XWindowAttributes xwa;
- int val, n;
-
- Display* display = (Display*) wxGetDisplay();
-
- // Check for the presence of the GLX extension
- if(!glXQueryExtension(display, NULL, NULL))
- {
- wxLogDebug(wxT("wxGLCanvas: GLX extension is missing"));
+ if ( !InitVisual(attribList) )
return false;
- }
-
- if(attribList) {
- int data[512], arg=0, p=0;
-
- while( (attribList[arg]!=0) && (p<512) )
- {
- switch( attribList[arg++] )
- {
- case WX_GL_RGBA: data[p++] = GLX_RGBA; break;
- case WX_GL_BUFFER_SIZE:
- data[p++]=GLX_BUFFER_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_LEVEL:
- data[p++]=GLX_LEVEL; data[p++]=attribList[arg++]; break;
- case WX_GL_DOUBLEBUFFER: data[p++] = GLX_DOUBLEBUFFER; break;
- case WX_GL_STEREO: data[p++] = GLX_STEREO; break;
- case WX_GL_AUX_BUFFERS:
- data[p++]=GLX_AUX_BUFFERS; data[p++]=attribList[arg++]; break;
- case WX_GL_MIN_RED:
- data[p++]=GLX_RED_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_MIN_GREEN:
- data[p++]=GLX_GREEN_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_MIN_BLUE:
- data[p++]=GLX_BLUE_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_MIN_ALPHA:
- data[p++]=GLX_ALPHA_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_DEPTH_SIZE:
- data[p++]=GLX_DEPTH_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_STENCIL_SIZE:
- data[p++]=GLX_STENCIL_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_MIN_ACCUM_RED:
- data[p++]=GLX_ACCUM_RED_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_MIN_ACCUM_GREEN:
- data[p++]=GLX_ACCUM_GREEN_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_MIN_ACCUM_BLUE:
- data[p++]=GLX_ACCUM_BLUE_SIZE; data[p++]=attribList[arg++]; break;
- case WX_GL_MIN_ACCUM_ALPHA:
- data[p++]=GLX_ACCUM_ALPHA_SIZE; data[p++]=attribList[arg++]; break;
- default:
- break;
- }
- }
- data[p] = 0;
-
- // Get an appropriate visual
- vi = glXChooseVisual(display, DefaultScreen(display), data);
- if(!vi) return false;
-
- // Here we should make sure that vi is the same visual as the
- // one used by the xwindow drawable in wxCanvas. However,
- // there is currently no mechanism for this in wx_canvs.cc.
- }
- else // default attributes
- {
- // By default, we use the visual of xwindow
- XGetWindowAttributes(display, wxGetClientAreaWindow(this), &xwa);
- vi_templ.visualid = XVisualIDFromVisual(xwa.visual);
- vi = XGetVisualInfo(display, VisualIDMask, &vi_templ, &n);
- if(!vi) return false;
- glXGetConfig(display, vi, GLX_USE_GL, &val);
- if(!val) return false;
- }
-
- m_vi = vi; // safe for later use
-
- wxCHECK_MSG( m_vi, false, wxT("required visual couldn't be found") );
return true;
}
-wxGLCanvas::~wxGLCanvas()
-{
- XVisualInfo *vi = (XVisualInfo *) m_vi;
-
- if (vi)
- XFree( vi );
-}
-
-void wxGLCanvas::SwapBuffers()
+Window wxGLCanvas::GetXWindow() const
{
- glXSwapBuffers((Display *)wxGetDisplay(), wxGetClientAreaWindow(this));
+ return (Window)
+#ifdef __WXMOTIF__
+ GetClientXWindow();
+#else
+ GetClientAreaWindow();
+#endif
}
int wxGLCanvas::GetColourIndex(const wxColour& col_)