chart2/source/view/charttypes/GL3DBarChart.cxx | 32 ++++++++----------------- chart2/source/view/inc/GL3DBarChart.hxx | 1 2 files changed, 11 insertions(+), 22 deletions(-)
New commits: commit 4bb37f99811875179c2020e832542d3751a93312 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Thu Jul 24 02:02:06 2014 +0200 fix animation for GL3D chart Change-Id: Ibcc87329f02c435638cb31f8e969b94b729b7f31 diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 9ad381d..a07d1a9 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -664,8 +664,8 @@ void GL3DBarChart::moveToCorner() Size aSize = mrWindow.GetSizePixel(); mrWindow.getContext().setWinSize(aSize); - mpRenderThread = rtl::Reference<RenderThread>(new RenderAnimationThread(this, getCornerPosition(mnCornerId), - maCameraPosition, STEPS)); + mpRenderThread = rtl::Reference<RenderThread>(new RenderAnimationThread(this, maCameraPosition, + getCornerPosition(mnCornerId), STEPS)); mrWindow.getContext().resetCurrent(); mpRenderThread->launch(); commit d6551bde0bcd06e4ed6b9aaa47f7891e47511264 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jul 23 23:12:55 2014 +0200 avoid showing the picking frame for too long Change-Id: I58a04325ba6ae42fffddf89905c997fb9ff9fd35 diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index ebd7769..9ad381d 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -556,6 +556,8 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons) mpRenderThread->join(); nId = mpRenderer->GetPixelColorFromPoint(rPos.X(), rPos.Y()); } + // we need this update here to render one frame without picking mode being set + update(); std::map<sal_uInt32, const BarInformation>::const_iterator itr = maBarMap.find(nId); commit baaa55f5f7fc04713eb3ad2c9dd7b437dfab3074 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jul 23 23:12:08 2014 +0200 we don't need blocking user input anymore with the threaded rendering Change-Id: I9cde4c5629f2970b9c24d98897580a2442661bc2 diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 51b1297..ebd7769 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -196,7 +196,6 @@ GL3DBarChart::GL3DBarChart( mnMaxY(0), mnDistance(0.0), mnCornerId(0), - mbBlockUserInput(false), mbNeedsNewRender(true), mbCameraInit(false), mbRenderDie(false) @@ -535,9 +534,6 @@ void GL3DBarChart::moveToDefault() void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons) { - if(mbBlockUserInput) - return; - if (nButtons == MOUSE_RIGHT) { moveToDefault(); @@ -567,8 +563,6 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons) if(itr == maBarMap.end()) return; - mbBlockUserInput = true; - const BarInformation& rBarInfo = itr->second; maShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, @@ -607,10 +601,6 @@ void GL3DBarChart::render() void GL3DBarChart::mouseDragMove(const Point& rStartPos, const Point& rEndPos, sal_uInt16 ) { - if(mbBlockUserInput) - return; - - mbBlockUserInput = true; long direction = rEndPos.X() - rStartPos.X(); if(direction < 0) { diff --git a/chart2/source/view/inc/GL3DBarChart.hxx b/chart2/source/view/inc/GL3DBarChart.hxx index fcc7908..6066c6e 100644 --- a/chart2/source/view/inc/GL3DBarChart.hxx +++ b/chart2/source/view/inc/GL3DBarChart.hxx @@ -113,7 +113,6 @@ private: }; std::map<sal_uInt32, const BarInformation> maBarMap; - bool mbBlockUserInput; bool mbNeedsNewRender; bool mbCameraInit; commit 71ebaba4d283daa8a4b626f8fe1e7ff9c0e5598e Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jul 23 23:11:04 2014 +0200 that join was not necessary The join before already makes sure that the thread is not running anymore. Change-Id: I9a8eb9f436412a2bf75f72a33d23a57016394eec diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 2116ac7..51b1297 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -561,7 +561,6 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons) nId = mpRenderer->GetPixelColorFromPoint(rPos.X(), rPos.Y()); } - osl::MutexGuard aGuard(maMutex); std::map<sal_uInt32, const BarInformation>::const_iterator itr = maBarMap.find(nId); @@ -572,9 +571,6 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons) const BarInformation& rBarInfo = itr->second; - if(mpRenderThread.is()) - mpRenderThread->join(); - maShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, OUString("Value: ") + OUString::number(rBarInfo.mnVal), 0)); opengl3D::ScreenText* pScreenText = static_cast<opengl3D::ScreenText*>(&maShapes.back()); commit f62e9f40d28f0aa61109217de83d60d44a60585f Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jul 23 23:08:05 2014 +0200 prevent that deadlock by only rpotecting shared resources Again update may not be protected bt the mutex. Change-Id: I8b9862c8ecafad75eea3b9e041d3063532f7bf63 diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 4809a2f..2116ac7 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -687,11 +687,14 @@ void GL3DBarChart::moveToCorner() void GL3DBarChart::scroll(long nDelta) { - osl::MutexGuard aGuard(maMutex); + { + osl::MutexGuard aGuard(maMutex); + + glm::vec3 maDir = glm::normalize(maCameraPosition - maCameraDirection); + maCameraPosition -= (float((nDelta/10)) * maDir); + mpCamera->setPosition(maCameraPosition); + } - glm::vec3 maDir = glm::normalize(maCameraPosition - maCameraDirection); - maCameraPosition -= (float((nDelta/10)) * maDir); - mpCamera->setPosition(maCameraPosition); update(); } commit 2480abb1819188263a72b6d37e7511486f354b0b Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jul 23 23:06:58 2014 +0200 taking the mutex before calling update is a deadlock as well The mutex is unnecessary as update is calling join in the beginning anyway. Change-Id: I1dc0c415f4405b58ddbe3640fa8870bed9fefef3 diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 7d3ffd5..4809a2f 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -606,7 +606,6 @@ void GL3DBarChart::render() if (BENCH_MARK_MODE) return; - osl::MutexGuard aGuard(maMutex); update(); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits