avmedia/source/viewer/mediawindow_impl.cxx | 4 + chart2/Library_chartcontroller.mk | 1 chart2/source/controller/main/ChartController.cxx | 3 + chart2/source/controller/main/ChartWindow.cxx | 35 ++++++++++++-- chart2/source/controller/main/ChartWindow.hxx | 9 ++- chart2/source/model/main/ChartModel.cxx | 1 chart2/source/view/charttypes/GL3DBarChart.cxx | 54 +++++++++++++--------- chart2/source/view/inc/AbstractShapeFactory.hxx | 2 chart2/source/view/inc/GL3DBarChart.hxx | 6 +- chart2/source/view/inc/OpenglShapeFactory.hxx | 2 chart2/source/view/inc/ShapeFactory.hxx | 2 chart2/source/view/main/ChartView.cxx | 16 +++++- chart2/source/view/main/DummyXShape.hxx | 1 chart2/source/view/main/OpenglShapeFactory.cxx | 6 ++ sc/source/ui/drawfunc/fuins2.cxx | 18 ------- 15 files changed, 104 insertions(+), 56 deletions(-)
New commits: commit cbc50c90ad63f0e59b8cf3bbfb6b5b1f61db09b9 Author: Zolnai Tamás <tamas.zol...@collabora.com> Date: Sun Jul 20 09:52:04 2014 +0200 Fix OpenGL chart reinitializing Problem after ChartWindow was disabled and enabled again, OpenGL content was lost. Two things: -After setting a new OpenGLWindow the corresponding IRenderer must be set (x3DWindowProvider->update) -InitOpenGL() call should not depend on DummyChart, but on OpenGLWindow (OpenGLContext). Change-Id: If74e1945de9973d3921ceea1ca6fef39311add7a diff --git a/chart2/source/controller/main/ChartWindow.cxx b/chart2/source/controller/main/ChartWindow.cxx index 37335c4..40e6933 100644 --- a/chart2/source/controller/main/ChartWindow.cxx +++ b/chart2/source/controller/main/ChartWindow.cxx @@ -64,6 +64,7 @@ ChartWindow::ChartWindow( ChartController* pController, Window* pParent, WinBits uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider(pController->getModel(), uno::UNO_QUERY_THROW); sal_uInt64 nWindowPtr = reinterpret_cast<sal_uInt64>(m_pOpenGLWindow); x3DWindowProvider->setWindow(nWindowPtr); + x3DWindowProvider->update(); } ChartWindow::~ChartWindow() @@ -72,6 +73,7 @@ ChartWindow::~ChartWindow() { uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider(m_pWindowController->getModel(), uno::UNO_QUERY_THROW); x3DWindowProvider->setWindow(0); + x3DWindowProvider->update(); } delete m_pOpenGLWindow; } diff --git a/chart2/source/view/inc/AbstractShapeFactory.hxx b/chart2/source/view/inc/AbstractShapeFactory.hxx index 9cb3e47..3e55165 100644 --- a/chart2/source/view/inc/AbstractShapeFactory.hxx +++ b/chart2/source/view/inc/AbstractShapeFactory.hxx @@ -238,7 +238,7 @@ public: /** * Only necessary for stateless implementations */ - virtual void render(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xRootShape) = 0; + virtual void render(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xRootShape, bool bInitOpenGL = true) = 0; virtual bool preRender(OpenGLWindow* pWindow) = 0; virtual void postRender(OpenGLWindow* pWindow) = 0; diff --git a/chart2/source/view/inc/OpenglShapeFactory.hxx b/chart2/source/view/inc/OpenglShapeFactory.hxx index 896249e..7907d0d 100644 --- a/chart2/source/view/inc/OpenglShapeFactory.hxx +++ b/chart2/source/view/inc/OpenglShapeFactory.hxx @@ -184,7 +184,7 @@ public: virtual void setPageSize( com::sun::star::uno::Reference < com::sun::star::drawing::XShapes > xChartShapes, const com::sun::star::awt::Size& rSize ) SAL_OVERRIDE; - virtual void render(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xDrawPage) SAL_OVERRIDE; + virtual void render(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xDrawPage, bool bInitOpenGL = true) SAL_OVERRIDE; virtual bool preRender(OpenGLWindow* pWindow) SAL_OVERRIDE; virtual void postRender(OpenGLWindow* pWindow) SAL_OVERRIDE; diff --git a/chart2/source/view/inc/ShapeFactory.hxx b/chart2/source/view/inc/ShapeFactory.hxx index 171daad..480c1b1 100644 --- a/chart2/source/view/inc/ShapeFactory.hxx +++ b/chart2/source/view/inc/ShapeFactory.hxx @@ -197,7 +197,7 @@ public: /** * not necessary right now */ - virtual void render(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > ) SAL_OVERRIDE {} + virtual void render(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes >, bool ) SAL_OVERRIDE {} virtual bool preRender(OpenGLWindow*) SAL_OVERRIDE { return true; } virtual void postRender(OpenGLWindow*) SAL_OVERRIDE {} diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index 8dc8046..d6f0430 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -166,6 +166,7 @@ public: virtual void scroll(long nDelta) SAL_OVERRIDE; virtual void contextDestroyed() SAL_OVERRIDE; + const OpenGLWindow* getOpenGLWindow() const; void updateOpenGLWindow(); private: ChartView* mpView; @@ -208,6 +209,11 @@ void GL2DRenderer::contextDestroyed() mbContextDestroyed = true; } +const OpenGLWindow* GL2DRenderer::getOpenGLWindow() const +{ + return mpWindow; +} + void GL2DRenderer::updateOpenGLWindow() { if(mbContextDestroyed) @@ -2765,7 +2771,7 @@ void ChartView::render() bool bRender = pShapeFactory->preRender(pWindow); if(bRender) { - pShapeFactory->render(mxRootShape); + pShapeFactory->render(mxRootShape, pWindow != mp2DRenderer->getOpenGLWindow()); pShapeFactory->postRender(pWindow); } } diff --git a/chart2/source/view/main/DummyXShape.hxx b/chart2/source/view/main/DummyXShape.hxx index ee9e1af..54f5df4 100644 --- a/chart2/source/view/main/DummyXShape.hxx +++ b/chart2/source/view/main/DummyXShape.hxx @@ -395,6 +395,7 @@ public: virtual void render() SAL_OVERRIDE; void clear(); + void invalidateInit() { mbNotInit = true; } TextCache& getTextCache() { return maTextCache;} private: diff --git a/chart2/source/view/main/OpenglShapeFactory.cxx b/chart2/source/view/main/OpenglShapeFactory.cxx index c486f01..a26024e 100644 --- a/chart2/source/view/main/OpenglShapeFactory.cxx +++ b/chart2/source/view/main/OpenglShapeFactory.cxx @@ -446,9 +446,13 @@ uno::Reference< drawing::XShape > return pText; } -void OpenglShapeFactory::render(uno::Reference< drawing::XShapes > xRootShape) +void OpenglShapeFactory::render(uno::Reference< drawing::XShapes > xRootShape, bool bInitOpenGL) { dummy::DummyChart& rChart = dynamic_cast<dummy::DummyChart&>(*xRootShape.get()); + if(bInitOpenGL) + { + rChart.invalidateInit(); + } rChart.render(); } commit 46cea34638b371570073c0e86f79969753c543ed Author: Jan Holesovsky <ke...@collabora.com> Date: Sat May 17 04:32:58 2014 +0200 opengl charts: Move the init from sc to chart2, to have the right parent. Change-Id: I1e23329345e00e7d8e1f269c832e84d015824c0a diff --git a/chart2/Library_chartcontroller.mk b/chart2/Library_chartcontroller.mk index b7e86bf..9657998 100644 --- a/chart2/Library_chartcontroller.mk +++ b/chart2/Library_chartcontroller.mk @@ -43,6 +43,7 @@ $(eval $(call gb_Library_use_libraries,chartcontroller,\ ucbhelper \ utl \ vcl \ + vclopengl \ $(gb_UWINAPI) \ )) diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index b57045d..d5eca79 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -726,6 +726,9 @@ void SAL_CALL ChartController::dispose() //--release all resources and references { + uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider(getModel(), uno::UNO_QUERY_THROW); + x3DWindowProvider->setWindow(0); + uno::Reference< util::XModeChangeBroadcaster > xViewBroadcaster( m_xChartView, uno::UNO_QUERY ); if( xViewBroadcaster.is() ) xViewBroadcaster->removeModeChangeListener(this); diff --git a/chart2/source/controller/main/ChartWindow.cxx b/chart2/source/controller/main/ChartWindow.cxx index 917d69e..37335c4 100644 --- a/chart2/source/controller/main/ChartWindow.cxx +++ b/chart2/source/controller/main/ChartWindow.cxx @@ -22,8 +22,11 @@ #include "HelpIds.hrc" #include <vcl/help.hxx> +#include <vcl/openglwin.hxx> #include <vcl/settings.hxx> +#include <com/sun/star/chart2/X3DChartWindowProvider.hpp> + using namespace ::com::sun::star; namespace @@ -42,10 +45,11 @@ namespace namespace chart { -ChartWindow::ChartWindow( WindowController* pWindowController, Window* pParent, WinBits nStyle ) +ChartWindow::ChartWindow( ChartController* pController, Window* pParent, WinBits nStyle ) : Window(pParent, nStyle) - , m_pWindowController( pWindowController ) + , m_pWindowController( pController ) , m_bInPaint(false) + , m_pOpenGLWindow(new OpenGLWindow(this)) { this->SetHelpId( HID_SCH_WIN_DOCUMENT ); this->SetMapMode( MapMode(MAP_100TH_MM) ); @@ -55,10 +59,21 @@ ChartWindow::ChartWindow( WindowController* pWindowController, Window* pParent, EnableRTL( false ); if( pParent ) pParent->EnableRTL( false );// #i96215# necessary for a correct position of the context menu in rtl mode + + m_pOpenGLWindow->Show(); + uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider(pController->getModel(), uno::UNO_QUERY_THROW); + sal_uInt64 nWindowPtr = reinterpret_cast<sal_uInt64>(m_pOpenGLWindow); + x3DWindowProvider->setWindow(nWindowPtr); } ChartWindow::~ChartWindow() { + if (m_pWindowController && m_pWindowController->getModel().is()) + { + uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider(m_pWindowController->getModel(), uno::UNO_QUERY_THROW); + x3DWindowProvider->setWindow(0); + } + delete m_pOpenGLWindow; } void ChartWindow::clear() @@ -79,10 +94,18 @@ void ChartWindow::PrePaint() void ChartWindow::Paint( const Rectangle& rRect ) { m_bInPaint = true; - if( m_pWindowController ) - m_pWindowController->execute_Paint( rRect ); + if (m_pOpenGLWindow && m_pOpenGLWindow->IsVisible()) + { + m_pOpenGLWindow->Paint(rRect); + } + else if (m_pWindowController) + { + m_pWindowController->execute_Paint(rRect); + } else + { Window::Paint( rRect ); + } m_bInPaint = false; } @@ -124,6 +147,8 @@ void ChartWindow::Resize() m_pWindowController->execute_Resize(); else Window::Resize(); + + m_pOpenGLWindow->SetSizePixel(GetSizePixel()); } void ChartWindow::Activate() diff --git a/chart2/source/controller/main/ChartWindow.hxx b/chart2/source/controller/main/ChartWindow.hxx index ec5c05b..ee5884f 100644 --- a/chart2/source/controller/main/ChartWindow.hxx +++ b/chart2/source/controller/main/ChartWindow.hxx @@ -21,10 +21,12 @@ #include <vcl/window.hxx> +class OpenGLWindow; + namespace chart { -class WindowController; +class ChartController; /** The ChartWindow collects events from the window and forwards them the to the controller thus the controller can perform appropriate actions @@ -33,7 +35,7 @@ thus the controller can perform appropriate actions class ChartWindow : public Window { public: - ChartWindow( WindowController* pWindowController, Window* pParent, WinBits nStyle ); + ChartWindow( ChartController* pController, Window* pParent, WinBits nStyle ); virtual ~ChartWindow(); void clear(); @@ -63,8 +65,9 @@ public: virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible() SAL_OVERRIDE; private: - WindowController* m_pWindowController; + ChartController* m_pWindowController; bool m_bInPaint; + OpenGLWindow* m_pOpenGLWindow; void adjustHighContrastMode(); }; diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx index 2d2a848..0fb584b 100644 --- a/chart2/source/model/main/ChartModel.cxx +++ b/chart2/source/model/main/ChartModel.cxx @@ -1412,7 +1412,6 @@ void ChartModel::setWindow( const sal_uInt64 nWindowPtr ) { void* pPtr = (void*)nWindowPtr; OpenGLWindow* pWindow = reinterpret_cast<OpenGLWindow*>(pPtr); - assert(pWindow); mpOpenGLWindow = pWindow; } diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 62e5ec9..f786c09 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -47,8 +47,8 @@ void RenderThread::renderFrame() if(!mpChart->mbValidContext) return; - mpChart->mrWindow.getContext().makeCurrent(); - Size aSize = mpChart->mrWindow.GetSizePixel(); + mpChart->mpWindow->getContext().makeCurrent(); + Size aSize = mpChart->mpWindow->GetSizePixel(); mpChart->mpRenderer->SetSize(aSize); if(mpChart->mbNeedsNewRender) { @@ -64,7 +64,7 @@ void RenderThread::renderFrame() } mpChart->mpRenderer->ProcessUnrenderedShape(mpChart->mbNeedsNewRender); mpChart->mbNeedsNewRender = false; - mpChart->mrWindow.getContext().swapBuffers(); + mpChart->mpWindow->getContext().swapBuffers(); } @@ -127,10 +127,10 @@ void RenderAnimationThread::execute() GL3DBarChart::GL3DBarChart( const css::uno::Reference<css::chart2::XChartType>& xChartType, - OpenGLWindow& rWindow) : + OpenGLWindow* pWindow) : mxChartType(xChartType), mpRenderer(new opengl3D::OpenGL3DRenderer()), - mrWindow(rWindow), + mpWindow(pWindow), mpCamera(NULL), mbValidContext(true), mpTextCache(new opengl3D::TextCache()), @@ -142,9 +142,13 @@ GL3DBarChart::GL3DBarChart( mbNeedsNewRender(true), mbCameraInit(false) { - Size aSize = mrWindow.GetSizePixel(); + Size aSize; + if (mpWindow) + { + mpWindow->setRenderer(this); + Size aSize = mpWindow->GetSizePixel(); + } mpRenderer->SetSize(aSize); - mrWindow.setRenderer(this); mpRenderer->init(); } @@ -162,8 +166,8 @@ GL3DBarChart::~GL3DBarChart() if(mpRenderThread.is()) mpRenderThread->join(); osl::MutexGuard aGuard(maMutex); - if(mbValidContext) - mrWindow.setRenderer(NULL); + if(mbValidContext && mpWindow) + mpWindow->setRenderer(NULL); } namespace { @@ -288,7 +292,7 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer BarInformation(glm::vec3(nXPos, nYPos, float(nVal/nMaxVal)), nVal, nIndex, nSeriesIndex))); - maShapes.push_back(new opengl3D::Bar(mpRenderer.get(), aBarPosition, nColor, nId)); + //maShapes.push_back(new opengl3D::Bar(mpRenderer.get(), aBarPosition, nColor, nId)); nId += ID_STEP; } @@ -403,10 +407,10 @@ void GL3DBarChart::update() { if(mpRenderThread.is()) mpRenderThread->join(); - Size aSize = mrWindow.GetSizePixel(); - mrWindow.getContext().setWinSize(aSize); + Size aSize = mpWindow->GetSizePixel(); + mpWindow->getContext().setWinSize(aSize); mpRenderThread = rtl::Reference<RenderThread>(new RenderOneFrameThread(this)); - mrWindow.getContext().resetCurrent(); + mpWindow->getContext().resetCurrent(); mpRenderThread->launch(); } @@ -438,10 +442,10 @@ void GL3DBarChart::moveToDefault() if(mpRenderThread.is()) mpRenderThread->join(); - Size aSize = mrWindow.GetSizePixel(); - mrWindow.getContext().setWinSize(aSize); + Size aSize = mpWindow->GetSizePixel(); + mpWindow->getContext().setWinSize(aSize); mpRenderThread = rtl::Reference<RenderThread>(new RenderAnimationThread(this, maCameraPosition, maDefaultCameraPosition, STEPS)); - mrWindow.getContext().resetCurrent(); + mpWindow->getContext().resetCurrent(); mpRenderThread->launch(); /* @@ -496,10 +500,10 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons) glm::vec3 maTargetPosition = rBarInfo.maPos; maTargetPosition.z += 240; maTargetPosition.y += BAR_SIZE_Y / 2.0f; - Size aSize = mrWindow.GetSizePixel(); - mrWindow.getContext().setWinSize(aSize); + Size aSize = mpWindow->GetSizePixel(); + mpWindow->getContext().setWinSize(aSize); mpRenderThread = rtl::Reference<RenderThread>(new RenderAnimationThread(this, maCameraPosition, maTargetPosition, STEPS)); - mrWindow.getContext().resetCurrent(); + mpWindow->getContext().resetCurrent(); mpRenderThread->launch(); /* @@ -577,11 +581,11 @@ void GL3DBarChart::moveToCorner() if(mpRenderThread.is()) mpRenderThread->join(); - Size aSize = mrWindow.GetSizePixel(); - mrWindow.getContext().setWinSize(aSize); + Size aSize = mpWindow->GetSizePixel(); + mpWindow->getContext().setWinSize(aSize); mpRenderThread = rtl::Reference<RenderThread>(new RenderAnimationThread(this, getCornerPosition(mnCornerId), maCameraPosition, STEPS)); - mrWindow.getContext().resetCurrent(); + mpWindow->getContext().resetCurrent(); mpRenderThread->launch(); // TODO: moggi: add to thread @@ -604,6 +608,12 @@ void GL3DBarChart::contextDestroyed() mbValidContext = false; } +void GL3DBarChart::setOpenGLWindow(OpenGLWindow* pWindow) +{ + if (mpWindow != pWindow) + mpWindow = pWindow; +} + } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/view/inc/GL3DBarChart.hxx b/chart2/source/view/inc/GL3DBarChart.hxx index 2517627..56bac83 100644 --- a/chart2/source/view/inc/GL3DBarChart.hxx +++ b/chart2/source/view/inc/GL3DBarChart.hxx @@ -49,7 +49,7 @@ class GL3DBarChart : public GL3DPlotterBase, public IRenderer public: GL3DBarChart( const css::uno::Reference<css::chart2::XChartType>& xChartType, - OpenGLWindow& rContext); + OpenGLWindow* pContext); virtual ~GL3DBarChart(); @@ -65,6 +65,8 @@ public: virtual void scroll(long nDelta) SAL_OVERRIDE; virtual void contextDestroyed() SAL_OVERRIDE; + void setOpenGLWindow(OpenGLWindow* pWindow); + private: void moveToCorner(); @@ -75,7 +77,7 @@ private: boost::ptr_vector<opengl3D::Renderable3DObject> maShapes; boost::scoped_ptr<opengl3D::OpenGL3DRenderer> mpRenderer; - OpenGLWindow& mrWindow; + OpenGLWindow* mpWindow; opengl3D::Camera* mpCamera; bool mbValidContext; diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index 2e8dc25..8dc8046 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -3250,7 +3250,13 @@ void ChartView::createShapes3D() if (!m_pGL3DPlotter) { - m_pGL3DPlotter.reset(new GL3DBarChart(xChartType, *pWindow)); + m_pGL3DPlotter.reset(new GL3DBarChart(xChartType, pWindow)); + } + else + { + GL3DBarChart* pChart = dynamic_cast<GL3DBarChart*>(m_pGL3DPlotter.get()); + if (pChart) + pChart->setOpenGLWindow(pWindow); } uno::Reference< XDataSeriesContainer > xDataSeriesContainer( xChartType, uno::UNO_QUERY ); diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx index fa9dbfd..0a7703d7 100644 --- a/sc/source/ui/drawfunc/fuins2.cxx +++ b/sc/source/ui/drawfunc/fuins2.cxx @@ -544,22 +544,6 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* ScDocument& rScDoc = pScDocSh->GetDocument(); bool bUndo (rScDoc.IsUndoEnabled()); - Window* pParentWindow = rData.GetActiveWin(); - OpenGLWindow* pChildWindow = new OpenGLWindow(pParentWindow); - Size aWindowSize = pChildWindow->LogicToPixel( aSize, MapMode( MAP_100TH_MM ) ); - pChildWindow->SetSizePixel(aWindowSize); - pChildWindow->Show(); - uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider( xChartModel, uno::UNO_QUERY_THROW ); - sal_uInt64 nWindowPtr = reinterpret_cast<sal_uInt64>(pChildWindow); - x3DWindowProvider->setWindow(nWindowPtr); - ScGridWindow* pGridWindow = dynamic_cast<ScGridWindow*>(pParentWindow); - if(pGridWindow) - { - pGridWindow->AddChildWindow(pChildWindow); - } - else - SAL_WARN("sc", "not a grid window. You are in serious trouble"); - if( pReqArgs ) { const SfxPoolItem* pItem; @@ -634,7 +618,6 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* // get chart position (from window size and data range) aStart = pViewSh->GetChartInsertPos( aSize, aPositionRange ); } - pChildWindow->SetPosPixel(pChildWindow->LogicToPixel(aStart, MapMode(MAP_100TH_MM))); Rectangle aRect (aStart, aSize); SdrOle2Obj* pObj = new SdrOle2Obj( svt::EmbeddedObjectRef( xObj, nAspect ), aName, aRect); @@ -729,7 +712,6 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* sal_Int16 nDialogRet = xDialog->execute(); if( nDialogRet == ui::dialogs::ExecutableDialogResults::CANCEL ) { - pGridWindow->DeleteChildWindow(pChildWindow); // leave OLE inplace mode and unmark OSL_ASSERT( pViewShell ); OSL_ASSERT( pView ); commit df5202ff193fb832d621cab3c942c5dce4e6c6b8 Author: Zolnai Tamás <tamas.zol...@collabora.com> Date: Fri Jul 18 15:58:44 2014 +0200 Avoid a warning, return early on empty URL. Change-Id: Ie4eb55fa52ee97eb98a5269658ce5183a287618b diff --git a/avmedia/source/viewer/mediawindow_impl.cxx b/avmedia/source/viewer/mediawindow_impl.cxx index c22bdcb..b608b85 100644 --- a/avmedia/source/viewer/mediawindow_impl.cxx +++ b/avmedia/source/viewer/mediawindow_impl.cxx @@ -216,6 +216,10 @@ uno::Reference< media::XPlayer > MediaWindowImpl::createPlayer( const OUString& { uno::Reference< media::XPlayer > xPlayer; + + if( rURL.isEmpty() ) + return xPlayer; + if (SvtSecurityOptions().isUntrustedReferer(rReferer)) { return xPlayer; }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits