X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/35f1f4f7ea3c88fa680ba69de487f67967ac51d1..12b5f4b4d2d8a07962da7ba3b78c8c1ec2634a67:/src/common/glcmn.cpp diff --git a/src/common/glcmn.cpp b/src/common/glcmn.cpp index 0d85eab14c..4f5f9c6025 100644 --- a/src/common/glcmn.cpp +++ b/src/common/glcmn.cpp @@ -52,14 +52,14 @@ wxGLCanvasBase::wxGLCanvasBase() SetBackgroundStyle(wxBG_STYLE_CUSTOM); } -void wxGLCanvasBase::SetCurrent(const wxGLContext& context) const +bool wxGLCanvasBase::SetCurrent(const wxGLContext& context) const { // although on MSW it works even if the window is still hidden, it doesn't // work in other ports (notably X11-based ones) and documentation mentions // that SetCurrent() can only be called for a shown window, so check for it wxASSERT_MSG( IsShownOnScreen(), _T("can't make hidden GL canvas current") ); - context.SetCurrent(*wx_static_cast(const wxGLCanvas *, this)); + return context.SetCurrent(*static_cast(this)); } bool wxGLCanvasBase::SetColour(const wxString& colour) @@ -115,5 +115,32 @@ void wxGLCanvasBase::OnSize(wxSizeEvent& WXUNUSED(event)) #endif // WXWIN_COMPATIBILITY_2_8 +/* static */ +bool wxGLCanvasBase::IsExtensionInList(const char *list, const char *extension) +{ + if ( !list ) + return false; + + for ( const char *p = list; *p; p++ ) + { + // advance up to the next possible match + p = wxStrstr(p, extension); + if ( !p ) + break; + + // check that the extension appears at the beginning/ending of the list + // or is preceded/followed by a space to avoid mistakenly finding + // "glExtension" in a list containing some "glFunkyglExtension" + if ( (p == list || p[-1] == ' ') ) + { + char c = p[strlen(extension)]; + if ( c == '\0' || c == ' ' ) + return true; + } + } + + return false; +} + #endif // wxUSE_GLCANVAS