external/skia/UnpackedTarball_skia.mk | 1 external/skia/fix-gcc-x86.patch.1 | 20 +++++++++++++++++ include/sfx2/sidebar/ControllerFactory.hxx | 2 - sfx2/source/sidebar/ControllerFactory.cxx | 33 +++++++++++++++++++---------- 4 files changed, 44 insertions(+), 12 deletions(-)
New commits: commit c13f75de521cfb67ca4db431708f8cd366b23587 Author: Thorsten Behrens <thorsten.behr...@cib.de> AuthorDate: Sun Dec 29 01:08:42 2019 +0100 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Sun Dec 29 20:39:17 2019 +0100 skia: make gcc not crash for x86 builds Otherwise at least on x86, gcc bails out with an ICE: skia/third_party/skcms/src/Transform_inl.h: In function ‘void baseline::clut(const skcms_A2B*, baseline::F*, baseline::F*, baseline::F*, baseline::F)’: skia/third_party/skcms/src/Transform_inl.h:695:13: note: The ABI for passing parameters with 16-byte alignment has changed in GCC 4.6 static void clut(const skcms_A2B* a2b, F* r, F* g, F* b, F a) { ^~~~ skia/third_party/skcms/skcms.cpp: At global scope: skia/third_party/skcms/skcms.cpp:2613:1: internal compiler error: Segmentation fault } ^ Likely reason: optimizer stumbles over F being non-register-passable, c.f. https://stackoverflow.com/questions/39383193/compiling-legacy-gcc-code-with-avx-vector-warnings Fix is an obvious bandaid, but fixes build for CentOS7 devtoolset-7. I suspect though that non-avx/sse2 builds are not a supported scenario for skia, in the end... Change-Id: Iaff734de8dc8b9a6fbf868c13810074f9667720b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85933 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/external/skia/UnpackedTarball_skia.mk b/external/skia/UnpackedTarball_skia.mk index 64bfe5e2e76e..e050b9832d6b 100644 --- a/external/skia/UnpackedTarball_skia.mk +++ b/external/skia/UnpackedTarball_skia.mk @@ -25,6 +25,7 @@ skia_patches := \ Wdeprecated-copy.patch.0 \ Wdeprecated-copy-dtor.patch.0 \ fix-msvc.patch.1 \ + fix-gcc-x86.patch.1 \ $(eval $(call gb_UnpackedTarball_set_patchlevel,skia,1)) diff --git a/external/skia/fix-gcc-x86.patch.1 b/external/skia/fix-gcc-x86.patch.1 new file mode 100644 index 000000000000..d63e84499505 --- /dev/null +++ b/external/skia/fix-gcc-x86.patch.1 @@ -0,0 +1,20 @@ +--- skia/third_party/skcms/skcms.cc 2019-12-28 22:39:17.886442654 +0000 ++++ skia/third_party/skcms/skcms.cc~ 2019-12-28 22:34:34.486843710 +0000 +@@ -2051,6 +2051,7 @@ + #define N 4 + template <typename T> using V = Vec<N,T>; + using Color = float; ++ #pragma message "Fallback to float color" + #endif + + #include "src/Transform_inl.h" +--- skia/third_party/skcms/src/Transform_inl.h 2019-12-28 22:38:41.739366565 +0000 ++++ skia/third_party/skcms/src/Transform_inl.h~ 2019-12-28 22:37:41.087942963 +0000 +@@ -85,6 +85,7 @@ + // It helps codegen to call __builtin_memcpy() when we know the byte count at compile time. + #if defined(__clang__) || defined(__GNUC__) + #define SI static inline __attribute__((always_inline)) ++ #pragma message "Forcing always_inline attribute for gcc" + #else + #define SI static inline + #endif commit e02003390208ac80e1404a95a6c09e06bb84848f Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Fri Dec 27 21:09:51 2019 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Sun Dec 29 20:39:01 2019 +0100 pass in a awt::XWindow in the first place Change-Id: Ie94ba063b6f2ad98019bad21259125aabd16d93b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85879 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/sfx2/sidebar/ControllerFactory.hxx b/include/sfx2/sidebar/ControllerFactory.hxx index c54de67b5545..e84b139563a4 100644 --- a/include/sfx2/sidebar/ControllerFactory.hxx +++ b/include/sfx2/sidebar/ControllerFactory.hxx @@ -54,7 +54,7 @@ public: private: static css::uno::Reference<css::frame::XToolbarController> CreateToolBarController( - ToolBox* pToolBox, + const css::uno::Reference<css::awt::XWindow>& rToolbar, const OUString& rsCommandName, const css::uno::Reference<css::frame::XFrame>& rxFrame, const css::uno::Reference<css::frame::XController>& rxController, diff --git a/sfx2/source/sidebar/ControllerFactory.cxx b/sfx2/source/sidebar/ControllerFactory.cxx index edb29abd5280..61ed92452c54 100644 --- a/sfx2/source/sidebar/ControllerFactory.cxx +++ b/sfx2/source/sidebar/ControllerFactory.cxx @@ -27,6 +27,7 @@ #include <framework/sfxhelperfunctions.hxx> #include <vcl/commandinfoprovider.hxx> +#include <vcl/weldutils.hxx> #include <svtools/generictoolboxcontroller.hxx> #include <comphelper/processfactory.hxx> #include <toolkit/helper/vclunohelper.hxx> @@ -47,7 +48,7 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBoxController( { Reference<frame::XToolbarController> xController ( CreateToolBarController( - pToolBox, + VCLUnoHelper::GetInterface(pToolBox), rsCommandName, rxFrame, rxController, nWidth)); @@ -142,15 +143,25 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBoxController( const OUString& rsCommandName, const Reference<frame::XFrame>& rxFrame) { - Reference<frame::XToolbarController> xController; + css::uno::Reference<css::awt::XWindow> xWidget(new weld::TransportAsXWindow(&rToolbar)); - xController.set( - static_cast<XWeak*>(new svt::GenericToolboxController( - ::comphelper::getProcessComponentContext(), - rxFrame, - rToolbar, - rsCommandName)), - UNO_QUERY); + Reference<frame::XToolbarController> xController( + CreateToolBarController( + xWidget, + rsCommandName, + rxFrame, rxFrame->getController(), + -1)); + + if (!xController.is()) + { + xController.set( + static_cast<XWeak*>(new svt::GenericToolboxController( + ::comphelper::getProcessComponentContext(), + rxFrame, + rToolbar, + rsCommandName)), + UNO_QUERY); + } // Initialize the controller with eg a service factory. Reference<lang::XInitialization> xInitialization (xController, UNO_QUERY); @@ -187,7 +198,7 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBoxController( Reference<frame::XToolbarController> ControllerFactory::CreateToolBarController( - ToolBox* pToolBox, + const Reference<awt::XWindow>& rxToolbar, const OUString& rsCommandName, const Reference<frame::XFrame>& rxFrame, const Reference<frame::XController>& rxController, @@ -217,7 +228,7 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBarController( aPropertyVector.push_back( makeAny( aPropValue )); aPropValue.Name = "ParentWindow"; - aPropValue.Value <<= VCLUnoHelper::GetInterface(pToolBox); + aPropValue.Value <<= rxToolbar; aPropertyVector.push_back( makeAny( aPropValue )); if (nWidth > 0) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits