[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