X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/15b239c0eb73e1b9b0dad29ced9c7435122b33d4..958b430ac786faa794bc39f408a55af483a16b41:/src/common/glcmn.cpp diff --git a/src/common/glcmn.cpp b/src/common/glcmn.cpp index faa42827c1..6b68538dc4 100644 --- a/src/common/glcmn.cpp +++ b/src/common/glcmn.cpp @@ -52,17 +52,17 @@ 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(*wx_static_cast(const wxGLCanvas *, this)); } -bool wxGLCanvasBase::SetColour(const wxChar *colour) +bool wxGLCanvasBase::SetColour(const wxString& colour) { wxColour col = wxTheColourDatabase->Find(colour); if ( !col.Ok() ) @@ -115,5 +115,29 @@ void wxGLCanvasBase::OnSize(wxSizeEvent& WXUNUSED(event)) #endif // WXWIN_COMPATIBILITY_2_8 +/* static */ +bool wxGLCanvasBase::IsExtensionInList(const char *list, const char *extension) +{ + 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