OpenGLWindow typeinfo unavailable without HAVE_FEATURE_OPENGL

Change-Id: Ie06c1121502db9b1a869f657f70d3b45db610e2f
diff --git a/chart2/inc/ChartModel.hxx b/chart2/inc/ChartModel.hxx
index 0599922..da23683 100644
--- a/chart2/inc/ChartModel.hxx
+++ b/chart2/inc/ChartModel.hxx
@@ -19,6 +19,8 @@
#ifndef INCLUDED_CHART2_INC_CHARTMODEL_HXX
#define INCLUDED_CHART2_INC_CHARTMODEL_HXX

#include <config_features.h>

#include "LifeTime.hxx"

#include <com/sun/star/frame/XModel.hpp>
@@ -467,13 +469,17 @@ public:
    void getNextTimePoint();
    void setTimeBasedRange(sal_Int32 nStart, sal_Int32 nEnd);

#if HAVE_FEATURE_OPENGL
    OpenGLWindow* getOpenGLWindow() { return mpOpenGLWindow;}
#endif

private:
    sal_Int32 mnStart;
    sal_Int32 mnEnd;
    bool bSet;
#if HAVE_FEATURE_OPENGL
    VclPtr<OpenGLWindow> mpOpenGLWindow;
#endif
};

}  // namespace chart
diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx
index f7a19f1..f76bb9f 100644
--- a/chart2/source/model/main/ChartModel.cxx
+++ b/chart2/source/model/main/ChartModel.cxx
@@ -107,8 +107,10 @@ ChartModel::ChartModel(uno::Reference<uno::XComponentContext > const & xContext)
                "com.sun.star.xml.NamespaceMap", "com.sun.star.comp.chart.XMLNameSpaceMap" ), uno::UNO_QUERY)
    , mnStart(0)
    , mnEnd(0)
    ,bSet(false)
    , bSet(false)
#if HAVE_FEATURE_OPENGL
    , mpOpenGLWindow(nullptr)
#endif
{
    osl_atomic_increment(&m_refCount);
    {
@@ -151,7 +153,9 @@ ChartModel::ChartModel( const ChartModel & rOther )
    , mnStart(rOther.mnStart)
    , mnEnd(rOther.mnEnd)
    , bSet(false)
#if HAVE_FEATURE_OPENGL
    , mpOpenGLWindow(nullptr)
#endif
{
    osl_atomic_increment(&m_refCount);
    {
@@ -1350,8 +1354,12 @@ void ChartModel::setTimeBasedRange(sal_Int32 nStart, sal_Int32 nEnd)

void ChartModel::setWindow( const sal_uInt64 nWindowPtr )
{
#if HAVE_FEATURE_OPENGL
    OpenGLWindow* pWindow = reinterpret_cast<OpenGLWindow*>(nWindowPtr);
    mpOpenGLWindow = pWindow;
#else
    (void)nWindowPtr;
#endif
}

void ChartModel::update()
@@ -1362,7 +1370,9 @@ void ChartModel::update()
    }
    mxChartView->setViewDirty();
    mxChartView->update();
#if HAVE_FEATURE_OPENGL
    mxChartView->updateOpenGLWindow();
#endif
}

}  // namespace chart
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 9440450..5e08015 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -1074,29 +1074,33 @@ public:

#if HAVE_FEATURE_OPENGL
    const OpenGLWindow* getOpenGLWindow() const;
#endif
    void updateOpenGLWindow();
#endif
private:
    ChartView* mpView;
    bool mbContextDestroyed;
#if HAVE_FEATURE_OPENGL
    VclPtr<OpenGLWindow> mpWindow;
#endif
};

GL2DRenderer::GL2DRenderer(ChartView* pView):
    mpView(pView),
    mbContextDestroyed(false),
    mpWindow(mpView->mrChartModel.getOpenGLWindow())
GL2DRenderer::GL2DRenderer(ChartView* pView)
    : mpView(pView)
    , mbContextDestroyed(false)
#if HAVE_FEATURE_OPENGL
    , mpWindow(mpView->mrChartModel.getOpenGLWindow())
#endif
{
}

GL2DRenderer::~GL2DRenderer()
{
    SolarMutexGuard g;
#if HAVE_FEATURE_OPENGL
    SolarMutexGuard g;
    if(!mbContextDestroyed && mpWindow)
        mpWindow->setRenderer(nullptr);
#endif
    mpWindow.reset();
#endif
}

void GL2DRenderer::update()
@@ -1129,15 +1133,12 @@ const OpenGLWindow* GL2DRenderer::getOpenGLWindow() const
    return mpWindow;
}

#endif

void GL2DRenderer::updateOpenGLWindow()
{
    if(mbContextDestroyed)
        return;

    OpenGLWindow* pWindow = mpView->mrChartModel.getOpenGLWindow();
#if HAVE_FEATURE_OPENGL
    if(pWindow != mpWindow)
    {
        if(mpWindow)
@@ -1150,10 +1151,11 @@ void GL2DRenderer::updateOpenGLWindow()
            pWindow->setRenderer(this);
        }
    }
#endif
    mpWindow = pWindow;
}

#endif

const uno::Sequence<sal_Int8>& ExplicitValueProvider::getUnoTunnelId()
{
    return theExplicitValueProviderUnoTunnelId::get().getSeq();
@@ -3315,6 +3317,7 @@ bool ChartView::createAxisTitleShapes2D( CreateShapeParam2D& rParam, const css::

void ChartView::createShapes3D()
{
#if HAVE_FEATURE_OPENGL
    OpenGLWindow* pWindow = mrChartModel.getOpenGLWindow();
    if(!pWindow)
        return;
@@ -3354,7 +3357,6 @@ void ChartView::createShapes3D()

    uno::Reference< XChartType > xChartType( aChartTypeList[0] );

#if HAVE_FEATURE_OPENGL
    if (!m_pGL3DPlotter)
    {
        m_pGL3DPlotter.reset(new GL3DBarChart(xChartType, pWindow));
@@ -3365,7 +3367,6 @@ void ChartView::createShapes3D()
        if (pChart)
            pChart->setOpenGLWindow(pWindow);
    }
#endif

    uno::Reference< XDataSeriesContainer > xDataSeriesContainer( xChartType, uno::UNO_QUERY );
    OSL_ASSERT( xDataSeriesContainer.is());
@@ -3385,19 +3386,22 @@ void ChartView::createShapes3D()

    std::unique_ptr<ExplicitCategoriesProvider> pCatProvider(new ExplicitCategoriesProvider(xCooSys, mrChartModel));

#if HAVE_FEATURE_OPENGL
    m_pGL3DPlotter->create3DShapes(aDataSeries, *pCatProvider);

    m_pGL3DPlotter->render();
#endif
}

#if HAVE_FEATURE_OPENGL

void ChartView::updateOpenGLWindow()
{
    if(!isReal3DChart())
        mp2DRenderer->updateOpenGLWindow();
}

#endif

} //namespace chart

extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index a948850..6f10373 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -31,7 +31,6 @@
#include <tools/urlobj.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/syschild.hxx>
#include <vcl/openglwin.hxx>
#include <svl/urihelper.hxx>
#include <unotools/moduleoptions.hxx>
#include <svtools/insdlg.hxx>
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index 5425f76..cb5b7f5 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -38,7 +38,6 @@
#include <unotools/moduleoptions.hxx>
#include <tools/urlobj.hxx>
#include <sfx2/docfile.hxx>
#include <vcl/openglwin.hxx>
#include <o3tl/make_unique.hxx>

#include "tabvwsh.hxx"