[Libreoffice-commits] core.git: Branch 'private/moggi/chart-lifetime-fixes' - 3 commits - chart2/source svx/source

Markus Mohrhard markus.mohrhard at collabora.co.uk
Mon Apr 14 16:49:24 PDT 2014


 chart2/source/view/main/DummyXShape.cxx                 |   10 ++++++++--
 chart2/source/view/main/DummyXShape.hxx                 |    2 ++
 chart2/source/view/main/OpenGLRender.cxx                |   14 --------------
 svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx |    5 +++++
 4 files changed, 15 insertions(+), 16 deletions(-)

New commits:
commit 55c6b04344d29cff973a7ece32a8e4ed61f73252
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Tue Apr 15 01:42:42 2014 +0200

    don't try to init OpenGLRender in the constructor
    
    wait until the context has been created and we can actually render
    
    Change-Id: I841d64ae847a2fdc74954887d3a6fcfcd06fc6a3

diff --git a/chart2/source/view/main/DummyXShape.cxx b/chart2/source/view/main/DummyXShape.cxx
index 5a0f88e..dc22de2 100644
--- a/chart2/source/view/main/DummyXShape.cxx
+++ b/chart2/source/view/main/DummyXShape.cxx
@@ -1143,11 +1143,11 @@ void DummyXShapes::render()
 }
 
 DummyChart::DummyChart(uno::Reference< drawing::XShape > xTarget):
-    m_GLRender(xTarget)
+    m_GLRender(xTarget),
+    mbNotInit(true)
 {
     SAL_INFO("chart2.opengl", "DummyXShape::DummyChart()-----test: ");
     setName("com.sun.star.chart2.shapes");
-    m_GLRender.InitOpenGL();
 }
 
 void SAL_CALL DummyChart::setPosition( const awt::Point& aPosition )
@@ -1173,6 +1173,12 @@ void SAL_CALL DummyChart::setSize( const awt::Size& aSize )
 
 void DummyChart::render()
 {
+    if(mbNotInit)
+    {
+        m_GLRender.InitOpenGL();
+        mbNotInit = false;
+    }
+
     SAL_INFO("chart2.opengl", "render chart");
     m_GLRender.prepareToRender();
 #if 0
diff --git a/chart2/source/view/main/DummyXShape.hxx b/chart2/source/view/main/DummyXShape.hxx
index b5aeb26..0cff72f 100644
--- a/chart2/source/view/main/DummyXShape.hxx
+++ b/chart2/source/view/main/DummyXShape.hxx
@@ -407,6 +407,8 @@ private:
 
 public:
     OpenGLRender m_GLRender;
+
+    bool mbNotInit;
 };
 
 class DummyGroup2D : public DummyXShapes
commit de2a419821a5b4aa39883ddfea9d6fa08cf7a857
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Tue Apr 15 01:37:45 2014 +0200

    remove the glew part in OpenGLRender.cxx
    
    The glew init part is now in vcl"s OpenGLContext class.
    
    Change-Id: I423e45cf7297df87cb8668b43f9243589b7e26ff

diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx
index 0ccb353..8ab05b7 100755
--- a/chart2/source/view/main/OpenGLRender.cxx
+++ b/chart2/source/view/main/OpenGLRender.cxx
@@ -81,8 +81,6 @@ int static checkGLError(const char *file, int line)
     return retCode;
 }
 
-static bool bGlewInit = false;
-
 #define CHECK_GL_ERROR() checkGLError(__FILE__, __LINE__)
 
 #define CHECK_GL_FRAME_BUFFER_STATUS() \
@@ -107,19 +105,7 @@ int OpenGLRender::InitOpenGL()
 {
     //TODO: moggi: get the information from the context
     mbArbMultisampleSupported = true;
-    if(!bGlewInit)
-    {
-        glewExperimental = GL_TRUE;
-        if (glewInit() != GLEW_OK)
-        {
-            SAL_WARN("chart2.opengl", "Failed to initialize GLEW");
-            return -1;
-        }
-        else
-            bGlewInit = true;
-    }
 
-    // These guys don't just check support but setup the vtables.
     if (glewIsSupported("framebuffer_object") != GLEW_OK)
     {
         SAL_WARN("chart2.opengl", "GL stack has no framebuffer support");
commit 97fc07d3039f2b94fb4b31330235916146d99b01
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Tue Apr 15 01:24:32 2014 +0200

    initialize the OpenGL context as soon as possible
    
    Change-Id: I58051695d0ca8384fb771bfc74aeb228145f77e6

diff --git a/svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx b/svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx
index 2cf0086..a4a8d90 100644
--- a/svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofopenglobj.cxx
@@ -8,6 +8,9 @@
  */
 
 #include <svx/sdr/contact/viewobjectcontactofopenglobj.hxx>
+#include <svx/sdr/contact/viewcontactofopenglobj.hxx>
+
+#include <svx/svdoopengl.hxx>
 #include <vcl/outdev.hxx>
 #include <vcl/window.hxx>
 
@@ -18,6 +21,8 @@ ViewObjectContactOfOpenGLObj::ViewObjectContactOfOpenGLObj(
     ObjectContact& rObjectContact, ViewContact& rViewContact )
     : ViewObjectContactOfSdrObj( rObjectContact, rViewContact )
 {
+    OpenGLContext& rContext = static_cast<SdrOpenGLObj&>(static_cast<ViewContactOfSdrObj&>(rViewContact).GetSdrObject()).getOpenGLContext();
+    rContext.init(getWindow());
 }
 
 ViewObjectContactOfOpenGLObj::~ViewObjectContactOfOpenGLObj()


More information about the Libreoffice-commits mailing list