Reviewed by Sam Weinig.
- make BidiContext a RefCounted class, starting with a refcount of 1,
and share the root BidiContexts.
* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawBidiText): Use BidiContext::create().
* platform/text/BidiContext.cpp:
(WebCore::BidiContext::create): Added. For the four "root" contexts,
returns a reference to a shared static BidiContext.
* platform/text/BidiContext.h:
(WebCore::BidiContext::BidiContext):
* platform/text/BidiResolver.h:
(WebCore::::commitExplicitEmbedding): Use BidiContext::create().
* rendering/bidi.cpp:
(WebCore::RenderBlock::determineStartPosition): Ditto.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@42895 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/rendering/bidi.cpp b/WebCore/rendering/bidi.cpp
index dac6e79..c4d9246 100644
--- a/WebCore/rendering/bidi.cpp
+++ b/WebCore/rendering/bidi.cpp
@@ -1264,12 +1264,12 @@
#endif
;
- BidiContext* context = new BidiContext(ltr ? 0 : 1, ltr ? LeftToRight : RightToLeft, style()->unicodeBidi() == Override);
+ Direction direction = ltr ? LeftToRight : RightToLeft;
+ resolver.setLastStrongDir(direction);
+ resolver.setLastDir(direction);
+ resolver.setEorDir(direction);
+ resolver.setContext(BidiContext::create(ltr ? 0 : 1, direction, style()->unicodeBidi() == Override));
- resolver.setLastStrongDir(context->dir());
- resolver.setLastDir(context->dir());
- resolver.setEorDir(context->dir());
- resolver.setContext(context);
startObj = bidiFirst(this, &resolver);
}