[haiku-commits] haiku: hrev48012 - in src/add-ons/screen_savers: glife gravity

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 13 Oct 2014 15:32:39 +0200 (CEST)

hrev48012 adds 1 changeset to branch 'master'
old head: 1883fcfcde88fdc6f60bb2f0639a2cab88919047
new head: a3cdc7c5889d45d1005b83f4403ef0d82d40b77c
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=a3cdc7c+%5E1883fcf

----------------------------------------------------------------------------

a3cdc7c: Gravity and GLife: fix crash on start.
  
  Locking the GL context from a GLView subclass constructor can't work, as
  it isn't ready yet. Move the initial setup to AttachedToWindow instead.
  
  Fixes #8898, #10469.

                                 [ Adrien Destugues <pulkomandy@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev48012
Commit:      a3cdc7c5889d45d1005b83f4403ef0d82d40b77c
URL:         http://cgit.haiku-os.org/haiku/commit/?id=a3cdc7c
Author:      Adrien Destugues <pulkomandy@xxxxxxxxx>
Date:        Mon Oct 13 13:29:46 2014 UTC

Ticket:      https://dev.haiku-os.org/ticket/8898
Ticket:      https://dev.haiku-os.org/ticket/10469

----------------------------------------------------------------------------

2 files changed, 32 insertions(+), 38 deletions(-)
src/add-ons/screen_savers/glife/GLifeView.cpp    | 39 +++++++++-----------
.../screen_savers/gravity/GravityView.cpp        | 31 +++++++---------

----------------------------------------------------------------------------

diff --git a/src/add-ons/screen_savers/glife/GLifeView.cpp 
b/src/add-ons/screen_savers/glife/GLifeView.cpp
index 9b783c3..4e511e8 100644
--- a/src/add-ons/screen_savers/glife/GLifeView.cpp
+++ b/src/add-ons/screen_savers/glife/GLifeView.cpp
@@ -24,13 +24,29 @@
 GLifeView::GLifeView(BRect rect, const char* name, ulong resizingMode,
        ulong options, GLifeState* pglsState)
        :
-       BGLView(rect, name, resizingMode, 0, options),
+       BGLView(rect, name, resizingMode, B_FRAME_EVENTS | B_WILL_DRAW, 
options),
        m_pglsState(pglsState)
 {
        // Setup the grid
        m_pglgGrid = new GLifeGrid(pglsState->GridWidth(), 
pglsState->GridHeight());
+}
+
+
+// ------------------------------------------------------
+//  GLifeView Class Destructor Definition
+GLifeView::~GLifeView(void)
+{
+       delete m_pglgGrid;
+}
 
+
+// ------------------------------------------------------
+//  GLifeView Class AttachedToWindow Definition
+void
+GLifeView::AttachedToWindow(void)
+{
        LockGL();
+       BGLView::AttachedToWindow();
        
        glClearDepth(1.0);
        glDepthFunc(GL_LESS);
@@ -43,7 +59,7 @@ GLifeView::GLifeView(BRect rect, const char* name, ulong 
resizingMode,
 #endif
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
-       gluPerspective(45.0, rect.Width() / rect.Height(), 2.0, 20000.0);
+       gluPerspective(45.0, Bounds().Width() / Bounds().Height(), 2.0, 
20000.0);
        glTranslatef(0.0, 0.0, -50.0);
        glMatrixMode(GL_MODELVIEW);
        
@@ -54,25 +70,6 @@ GLifeView::GLifeView(BRect rect, const char* name, ulong 
resizingMode,
 
 
 // ------------------------------------------------------
-//  GLifeView Class Destructor Definition
-GLifeView::~GLifeView(void)
-{
-       delete m_pglgGrid;
-}
-
-
-// ------------------------------------------------------
-//  GLifeView Class AttachedToWindow Definition
-void
-GLifeView::AttachedToWindow(void)
-{
-       LockGL();
-       BGLView::AttachedToWindow();
-       UnlockGL();
-}
-
-
-// ------------------------------------------------------
 //  GLifeView Class Draw Definition
 void
 GLifeView::Draw(BRect updateRect)
diff --git a/src/add-ons/screen_savers/gravity/GravityView.cpp 
b/src/add-ons/screen_savers/gravity/GravityView.cpp
index 3f92083..1b0dea7 100644
--- a/src/add-ons/screen_savers/gravity/GravityView.cpp
+++ b/src/add-ons/screen_savers/gravity/GravityView.cpp
@@ -29,8 +29,21 @@ GravityView::GravityView(BRect frame, Gravity* parent)
        fShade(parent->Config.ShadeID)
 {
        Particle::Initialize(fSize, fShade);
+}
+
+
+GravityView::~GravityView()
+{
+       Particle::Terminate();
+       delete fGravitySource;
+}
 
+
+void
+GravityView::AttachedToWindow()
+{
        LockGL();
+       BGLView::AttachedToWindow();
 
        glClearDepth(1.0f);
 
@@ -39,7 +52,7 @@ GravityView::GravityView(BRect frame, Gravity* parent)
 
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
-       gluPerspective(45.0f, frame.Width() / frame.Height(), 2.0f, 20000.0f);
+       gluPerspective(45.0f, Bounds().Width() / Bounds().Height(), 2.0f, 
20000.0f);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
 
@@ -51,22 +64,6 @@ GravityView::GravityView(BRect frame, Gravity* parent)
 }
 
 
-GravityView::~GravityView()
-{
-       Particle::Terminate();
-       delete fGravitySource;
-}
-
-
-void
-GravityView::AttachedToWindow()
-{
-       LockGL();
-       BGLView::AttachedToWindow();
-       UnlockGL();
-}
-
-
 void
 GravityView::DirectDraw()
 {


Other related posts:

  • » [haiku-commits] haiku: hrev48012 - in src/add-ons/screen_savers: glife gravity - pulkomandy