]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/glcanvas.cpp
wxRTC: save and load the 'shown' status in case there's a situation where layout...
[wxWidgets.git] / src / msw / glcanvas.cpp
index 8c9273b8a447fccfc20138a780ad40537cdf6cc3..7beb05c47c5eaea2c240a846b628bce74ccd1a89 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     04/01/98
 // Author:      Julian Smart
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -118,7 +117,7 @@ wxGLContext::wxGLContext(wxGLCanvas *win, const wxGLContext* other)
     {
         if ( !wglShareLists(other->m_glContext, m_glContext) )
         {
     {
         if ( !wglShareLists(other->m_glContext, m_glContext) )
         {
-            wxLogLastError(_T("wglShareLists"));
+            wxLogLastError(wxT("wglShareLists"));
         }
     }
 }
         }
     }
 }
@@ -133,7 +132,7 @@ bool wxGLContext::SetCurrent(const wxGLCanvas& win) const
 {
     if ( !wglMakeCurrent(win.GetHDC(), m_glContext) )
     {
 {
     if ( !wglMakeCurrent(win.GetHDC(), m_glContext) )
     {
-        wxLogLastError(_T("wglMakeCurrent"));
+        wxLogLastError(wxT("wglMakeCurrent"));
         return false;
     }
     return true;
         return false;
     }
     return true;
@@ -146,8 +145,10 @@ bool wxGLContext::SetCurrent(const wxGLCanvas& win) const
 IMPLEMENT_CLASS(wxGLCanvas, wxWindow)
 
 BEGIN_EVENT_TABLE(wxGLCanvas, wxWindow)
 IMPLEMENT_CLASS(wxGLCanvas, wxWindow)
 
 BEGIN_EVENT_TABLE(wxGLCanvas, wxWindow)
+#if wxUSE_PALETTE
     EVT_PALETTE_CHANGED(wxGLCanvas::OnPaletteChanged)
     EVT_QUERY_NEW_PALETTE(wxGLCanvas::OnQueryNewPalette)
     EVT_PALETTE_CHANGED(wxGLCanvas::OnPaletteChanged)
     EVT_QUERY_NEW_PALETTE(wxGLCanvas::OnQueryNewPalette)
+#endif
 END_EVENT_TABLE()
 
 // ----------------------------------------------------------------------------
 END_EVENT_TABLE()
 
 // ----------------------------------------------------------------------------
@@ -209,7 +210,7 @@ bool wxGLCanvas::CreateWindow(wxWindow *parent,
     DWORD msflags = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
     msflags |= MSWGetStyle(style, &exStyle);
 
     DWORD msflags = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
     msflags |= MSWGetStyle(style, &exStyle);
 
-    if ( !MSWCreate(wxApp::GetRegisteredClassName(_T("wxGLCanvas"), -1, CS_OWNDC),
+    if ( !MSWCreate(wxApp::GetRegisteredClassName(wxT("wxGLCanvas"), -1, CS_OWNDC),
                     NULL, pos, size, msflags, exStyle) )
         return false;
 
                     NULL, pos, size, msflags, exStyle) )
         return false;
 
@@ -277,7 +278,7 @@ bool wxGLCanvas::Create(wxWindow *parent,
 
             if ( !::SetPixelFormat(m_hDC, pixelFormat, &pfd) )
             {
 
             if ( !::SetPixelFormat(m_hDC, pixelFormat, &pfd) )
             {
-                wxLogLastError(_T("SetPixelFormat"));
+                wxLogLastError(wxT("SetPixelFormat"));
                 return false;
             }
         }
                 return false;
             }
         }
@@ -301,7 +302,7 @@ bool wxGLCanvas::SwapBuffers()
 {
     if ( !::SwapBuffers(m_hDC) )
     {
 {
     if ( !::SwapBuffers(m_hDC) )
     {
-        wxLogLastError(_T("SwapBuffers"));
+        wxLogLastError(wxT("SwapBuffers"));
         return false;
     }
 
         return false;
     }
 
@@ -493,12 +494,21 @@ static int ChoosePixelFormatARB(HDC hdc, const int *attribList)
 
     int pf;
     UINT numFormats = 0;
 
     int pf;
     UINT numFormats = 0;
+
     if ( !wglChoosePixelFormatARB(hdc, iAttributes, NULL, 1, &pf, &numFormats) )
     {
     if ( !wglChoosePixelFormatARB(hdc, iAttributes, NULL, 1, &pf, &numFormats) )
     {
-        wxLogLastError(_T("wglChoosePixelFormatARB"));
+        wxLogLastError(wxT("wglChoosePixelFormatARB"));
         return 0;
     }
 
         return 0;
     }
 
+    // Although TRUE is returned if no matching formats are found (see
+    // http://www.opengl.org/registry/specs/ARB/wgl_pixel_format.txt), pf is
+    // not initialized in this case so we need to check for numFormats being
+    // not 0 explicitly (however this is not an error so don't call
+    // wxLogLastError() here).
+    if ( !numFormats )
+        pf = 0;
+
     return pf;
 }
 
     return pf;
 }
 
@@ -683,13 +693,13 @@ int wxGLCanvas::DoSetup(PIXELFORMATDESCRIPTOR &pfd, const int *attribList)
 
     if ( !pixelFormat )
     {
 
     if ( !pixelFormat )
     {
-        wxLogLastError(_T("ChoosePixelFormat"));
+        wxLogLastError(wxT("ChoosePixelFormat"));
         return 0;
     }
 
     if ( !::SetPixelFormat(m_hDC, pixelFormat, &pfd) )
     {
         return 0;
     }
 
     if ( !::SetPixelFormat(m_hDC, pixelFormat, &pfd) )
     {
-        wxLogLastError(_T("SetPixelFormat"));
+        wxLogLastError(wxT("SetPixelFormat"));
         return 0;
     }
 
         return 0;
     }
 
@@ -707,14 +717,14 @@ bool wxGLCanvas::SetupPalette(const wxPalette& palette)
     const int pixelFormat = ::GetPixelFormat(m_hDC);
     if ( !pixelFormat )
     {
     const int pixelFormat = ::GetPixelFormat(m_hDC);
     if ( !pixelFormat )
     {
-        wxLogLastError(_T("GetPixelFormat"));
+        wxLogLastError(wxT("GetPixelFormat"));
         return false;
     }
 
     PIXELFORMATDESCRIPTOR pfd;
     if ( !::DescribePixelFormat(m_hDC, pixelFormat, sizeof(pfd), &pfd) )
     {
         return false;
     }
 
     PIXELFORMATDESCRIPTOR pfd;
     if ( !::DescribePixelFormat(m_hDC, pixelFormat, sizeof(pfd), &pfd) )
     {
-        wxLogLastError(_T("DescribePixelFormat"));
+        wxLogLastError(wxT("DescribePixelFormat"));
         return false;
     }
 
         return false;
     }
 
@@ -723,22 +733,22 @@ bool wxGLCanvas::SetupPalette(const wxPalette& palette)
 
     m_palette = palette;
 
 
     m_palette = palette;
 
-    if ( !m_palette.Ok() )
+    if ( !m_palette.IsOk() )
     {
         m_palette = CreateDefaultPalette();
     {
         m_palette = CreateDefaultPalette();
-        if ( !m_palette.Ok() )
+        if ( !m_palette.IsOk() )
             return false;
     }
 
     if ( !::SelectPalette(m_hDC, GetHpaletteOf(m_palette), FALSE) )
     {
             return false;
     }
 
     if ( !::SelectPalette(m_hDC, GetHpaletteOf(m_palette), FALSE) )
     {
-        wxLogLastError(_T("SelectPalette"));
+        wxLogLastError(wxT("SelectPalette"));
         return false;
     }
 
     if ( ::RealizePalette(m_hDC) == GDI_ERROR )
     {
         return false;
     }
 
     if ( ::RealizePalette(m_hDC) == GDI_ERROR )
     {
-        wxLogLastError(_T("RealizePalette"));
+        wxLogLastError(wxT("RealizePalette"));
         return false;
     }
 
         return false;
     }
 
@@ -788,7 +798,7 @@ wxPalette wxGLCanvas::CreateDefaultPalette()
 void wxGLCanvas::OnQueryNewPalette(wxQueryNewPaletteEvent& event)
 {
   /* realize palette if this is the current window */
 void wxGLCanvas::OnQueryNewPalette(wxQueryNewPaletteEvent& event)
 {
   /* realize palette if this is the current window */
-  if ( GetPalette()->Ok() ) {
+  if ( GetPalette()->IsOk() ) {
     ::UnrealizeObject((HPALETTE) GetPalette()->GetHPALETTE());
     ::SelectPalette(GetHDC(), (HPALETTE) GetPalette()->GetHPALETTE(), FALSE);
     ::RealizePalette(GetHDC());
     ::UnrealizeObject((HPALETTE) GetPalette()->GetHPALETTE());
     ::SelectPalette(GetHDC(), (HPALETTE) GetPalette()->GetHPALETTE(), FALSE);
     ::RealizePalette(GetHDC());
@@ -803,7 +813,7 @@ void wxGLCanvas::OnPaletteChanged(wxPaletteChangedEvent& event)
 {
   /* realize palette if this is *not* the current window */
   if ( GetPalette() &&
 {
   /* realize palette if this is *not* the current window */
   if ( GetPalette() &&
-       GetPalette()->Ok() && (this != event.GetChangedWindow()) )
+       GetPalette()->IsOk() && (this != event.GetChangedWindow()) )
   {
     ::UnrealizeObject((HPALETTE) GetPalette()->GetHPALETTE());
     ::SelectPalette(GetHDC(), (HPALETTE) GetPalette()->GetHPALETTE(), FALSE);
   {
     ::UnrealizeObject((HPALETTE) GetPalette()->GetHPALETTE());
     ::SelectPalette(GetHDC(), (HPALETTE) GetPalette()->GetHPALETTE(), FALSE);