Add non-inline SkRTreeFactory constructor to fix clang-cl
authorbrucedawson <brucedawson@chromium.org>
Sat, 6 Feb 2016 20:40:56 +0000 (12:40 -0800)
committerCommit bot <commit-bot@chromium.org>
Sat, 6 Feb 2016 20:40:56 +0000 (12:40 -0800)
When Chromium is switched to build with VS 2015 that switches clang-cl
to build in -fmsc-version=1900 mode. This causes some changes in
importing of constructors and vftables which leads to link errors in
blink_platform.dll. Adding a non-inline constructor makes 1900 mode
behave consistently with 1800 mode and avoids the link error.

The root cause needs investigation but this will unblock the VS 2015
switch.

BUG=440500,498544
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1676833002

Review URL: https://codereview.chromium.org/1676833002

include/core/SkBBHFactory.h
src/core/SkBBHFactory.cpp

index ca70404..6e56449 100644 (file)
@@ -23,6 +23,7 @@ public:
 
 class SK_API SkRTreeFactory : public SkBBHFactory {
 public:
+    SkRTreeFactory();
     SkBBoxHierarchy* operator()(const SkRect& bounds) const override;
 private:
     typedef SkBBHFactory INHERITED;
index e8534ca..b10dc98 100644 (file)
@@ -14,3 +14,7 @@ SkBBoxHierarchy* SkRTreeFactory::operator()(const SkRect& bounds) const {
     SkScalar aspectRatio = bounds.width() / bounds.height();
     return new SkRTree(aspectRatio);
 }
+
+// TODO(thakis@chromium): remove once HTTP://llvm.org/26506 is fixed
+SkRTreeFactory::SkRTreeFactory() {
+}