[kicad/f13/master] - Fix 3D viewer crash (BZ #693008)
Alain Portal
dionysos at fedoraproject.org
Mon Apr 4 18:31:33 UTC 2011
commit 97af5ec8a05c0ef4a1e459164259b52fa760117d
Author: Alain Portal <alain.portal at free.fr>
Date: Mon Apr 4 20:31:29 2011 +0200
- Fix 3D viewer crash (BZ #693008)
kicad-2011.01.28-3DViewer-crash.patch | 89 +++++++++++++++++++++++++++++++++
kicad.spec | 7 ++-
2 files changed, 95 insertions(+), 1 deletions(-)
---
diff --git a/kicad-2011.01.28-3DViewer-crash.patch b/kicad-2011.01.28-3DViewer-crash.patch
new file mode 100644
index 0000000..2c9c4f4
--- /dev/null
+++ b/kicad-2011.01.28-3DViewer-crash.patch
@@ -0,0 +1,89 @@
+diff -ru kicad-2011.01.28-2.rev2795/3d-viewer/3d_canvas.cpp kicad-2011.01.28-3.rev2795/3d-viewer/3d_canvas.cpp
+--- kicad-2011.01.28-2.rev2795/3d-viewer/3d_canvas.cpp 2011-03-01 20:24:25.000000000 +0100
++++ kicad-2011.01.28-3.rev2795/3d-viewer/3d_canvas.cpp 2011-04-04 19:12:49.000000000 +0200
+@@ -73,9 +73,9 @@
+ Pcb3D_GLCanvas::OnPopUpMenu )
+ END_EVENT_TABLE()
+
+-Pcb3D_GLCanvas::Pcb3D_GLCanvas( WinEDA3D_DrawFrame* parent ) :
+-#if wxCHECK_VERSION( 2, 9, 0 )
+- wxGLCanvas( parent, -1, NULL, wxDefaultPosition, wxDefaultSize,
++Pcb3D_GLCanvas::Pcb3D_GLCanvas( WinEDA3D_DrawFrame* parent, int* attribList ) :
++#if wxCHECK_VERSION( 2, 7, 0 )
++ wxGLCanvas( parent, -1, attribList, wxDefaultPosition, wxDefaultSize,
+ wxFULL_REPAINT_ON_RESIZE )
+ #else
+ wxGLCanvas( parent, -1, wxDefaultPosition, wxDefaultSize,
+@@ -87,7 +87,7 @@
+ m_Parent = parent;
+ m_ortho = false;
+
+-#if wxCHECK_VERSION( 2, 9, 0 )
++#if wxCHECK_VERSION( 2, 7, 0 )
+
+ // Explicitly create a new rendering context instance for this canvas.
+ m_glRC = new wxGLContext( this );
+@@ -101,7 +101,7 @@
+ {
+ ClearLists();
+ m_init = FALSE;
+-#if wxCHECK_VERSION( 2, 9, 0 )
++#if wxCHECK_VERSION( 2, 7, 0 )
+ delete m_glRC;
+ #endif
+ }
+diff -ru kicad-2011.01.28-2.rev2795/3d-viewer/3d_draw.cpp kicad-2011.01.28-3.rev2795/3d-viewer/3d_draw.cpp
+--- kicad-2011.01.28-2.rev2795/3d-viewer/3d_draw.cpp 2011-03-01 20:24:25.000000000 +0100
++++ kicad-2011.01.28-3.rev2795/3d-viewer/3d_draw.cpp 2011-04-04 19:14:26.000000000 +0200
+@@ -55,7 +55,11 @@
+
+ void Pcb3D_GLCanvas::Redraw( bool finish )
+ {
+-#if wxCHECK_VERSION( 2, 9, 0 )
++ /* SwapBuffer requires the window to be shown before calling */
++ if( !IsShown() )
++ return;
++
++#if wxCHECK_VERSION( 2, 7, 0 )
+ SetCurrent( *m_glRC );
+ #else
+ SetCurrent();
+@@ -96,7 +100,7 @@
+ }
+
+ glFlush();
+- if( finish )
++ if( finish );
+ glFinish();
+ SwapBuffers();
+ }
+diff -ru kicad-2011.01.28-2.rev2795/3d-viewer/3d_frame.cpp kicad-2011.01.28-3.rev2795/3d-viewer/3d_frame.cpp
+--- kicad-2011.01.28-2.rev2795/3d-viewer/3d_frame.cpp 2011-03-01 20:24:25.000000000 +0100
++++ kicad-2011.01.28-3.rev2795/3d-viewer/3d_frame.cpp 2011-04-04 19:15:05.000000000 +0200
+@@ -78,7 +78,8 @@
+ ReCreateVToolbar();
+
+ // Make a Pcb3D_GLCanvas
+- m_Canvas = new Pcb3D_GLCanvas( this );
++ int attrs[] = { WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0 };
++ m_Canvas = new Pcb3D_GLCanvas( this, attrs );
+
+ m_auimgr.SetManagedWindow( this );
+
+diff -ru kicad-2011.01.28-2.rev2795/3d-viewer/3d_viewer.h kicad-2011.01.28-3.rev2795/3d-viewer/3d_viewer.h
+--- kicad-2011.01.28-2.rev2795/3d-viewer/3d_viewer.h 2011-03-01 20:24:25.000000000 +0100
++++ kicad-2011.01.28-3.rev2795/3d-viewer/3d_viewer.h 2011-04-04 19:15:55.000000000 +0200
+@@ -141,11 +141,11 @@
+ /// Tracks whether to use Orthographic or Perspective projection
+ //TODO: Does this belong here, or in WinEDA3D_DrawFrame ???
+ bool m_ortho;
+-#if wxCHECK_VERSION( 2, 9, 0 )
++#if wxCHECK_VERSION( 2, 7, 0 )
+ wxGLContext* m_glRC;
+ #endif
+ public:
+- Pcb3D_GLCanvas( WinEDA3D_DrawFrame* parent );
++ Pcb3D_GLCanvas( WinEDA3D_DrawFrame* parent, int* attribList = 0 );
+ ~Pcb3D_GLCanvas();
+
+ void ClearLists();
diff --git a/kicad.spec b/kicad.spec
index c38d09f..562f496 100644
--- a/kicad.spec
+++ b/kicad.spec
@@ -1,6 +1,6 @@
Name: kicad
Version: 2011.01.28
-Release: 2.rev2765%{?dist}
+Release: 3.rev2765%{?dist}
Summary: Electronic schematic diagrams and printed circuit board artwork
Summary(fr): Saisie de schéma électronique et routage de circuit imprimé
@@ -23,6 +23,7 @@ Source6: %{name}-icons.tar.bz2
Patch10: %{name}-%{version}-real-version.patch
Patch11: %{name}-%{version}-fix-build.patch
+Patch12: %{name}-%{version}-3DViewer-crash.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -177,6 +178,7 @@ Documentation and tutorials for Kicad in Chinese
%patch10 -p0 -b .real-version
%patch11 -p1 -b .fix-build
+%patch12 -p1 -b .3Dviewer-crash
#kicad-doc.noarch: W: file-not-utf8 /usr/share/doc/kicad/AUTHORS.txt
iconv -f iso8859-1 -t utf-8 AUTHORS.txt > AUTHORS.conv && mv -f AUTHORS.conv AUTHORS.txt
@@ -398,6 +400,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%changelog
+* Mon Apr 4 2011 Alain Portal <alain.portal[AT]univ-montp2[DOT]fr> 2011.01.28-3.rev2765
+- Fix 3D viewer crash (BZ #693008)
+
* Wed Mar 23 2011 Alain Portal <alain.portal[AT]univ-montp2[DOT]fr> 2011.01.28-2.rev2765
- Add missing library
More information about the scm-commits
mailing list