Merge pull request #1789 from wqyfavor/fix-rc-20
Fix rc 20
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
index 402e592..ab26bc3 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
+++ b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
@@ -73,6 +73,9 @@
_currentIndex = 0;
_itemViews = [[NSMutableArray alloc] init];
_scrollView = [[WXRecycleSliderScrollView alloc] init];
+ if (@available(iOS 11.0, *)) {
+ _scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
+ }
_scrollView.backgroundColor = [UIColor clearColor];
_scrollView.delegate = self;
_scrollView.showsHorizontalScrollIndicator = NO;
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
index dfe8824..a278202 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
+++ b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
@@ -903,7 +903,7 @@
}
if (!decelerate) {
_isScrolling = NO;
- [self performSelector:@selector(scrollViewDidEndDecelerating:) withObject:nil afterDelay:0.1];
+ [self performSelector:@selector(scrollViewDidEndDecelerating:) withObject:scrollView afterDelay:0.1];
}
NSHashTable *delegates = [_delegates copy];
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
index 5e7b1e7..ac014a5 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
@@ -83,6 +83,20 @@
+ (void)registerService:(NSString *)name withScript:(NSString *)serviceScript withOptions:(NSDictionary *)options;
/**
+ * @abstract Registers a component for a given name, options and js code
+ *
+ * @param name The service name to register
+ *
+ * @param options The service options to register
+ *
+ * @param serviceScript service js code to invoke
+ *
+ * @param completion Completion callback. JS is executed in asynchronously.
+ *
+ */
++ (void)registerService:(NSString *)name withScript:(NSString *)serviceScript withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion;
+
+/**
* @abstract Registers a component for a given name, options and js url
*
* @param name The service name to register
@@ -92,7 +106,21 @@
* @param serviceScriptUrl The service url to register
*
*/
-+ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl WithOptions:(NSDictionary *)options;
++ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options;
+
+/**
+ * @abstract Registers a component for a given name, options and js url
+ *
+ * @param name The service name to register
+ *
+ * @param options The service options to register
+ *
+ * @param serviceScriptUrl The service url to register
+ *
+ * @param completion Completion callback. JS is executed in asynchronously.
+ *
+ */
++ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion;
/**
* @abstract Registers a component for a given name, options and js code
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
index b5d7e00..26ca8b7 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
@@ -166,14 +166,25 @@
# pragma mark Service Register
+
+ (void)registerService:(NSString *)name withScript:(NSString *)serviceScript withOptions:(NSDictionary *)options
{
- [[WXSDKManager bridgeMgr] registerService:name withService:serviceScript withOptions:options];
+ [[WXSDKManager bridgeMgr] registerService:name withService:serviceScript withOptions:options completion:nil];
}
-+ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl WithOptions:(NSDictionary *)options
++ (void)registerService:(NSString *)name withScript:(NSString *)serviceScript withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion
{
- [[WXSDKManager bridgeMgr] registerService:name withServiceUrl:serviceScriptUrl withOptions:options];
+ [[WXSDKManager bridgeMgr] registerService:name withService:serviceScript withOptions:options completion:completion];
+}
+
++ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options
+{
+ [[WXSDKManager bridgeMgr] registerService:name withServiceUrl:serviceScriptUrl withOptions:options completion:nil];
+}
+
++ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion
+{
+ [[WXSDKManager bridgeMgr] registerService:name withServiceUrl:serviceScriptUrl withOptions:options completion:completion];
}
+ (void)unregisterService:(NSString *)name
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
index a338847..7a7dc37 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
@@ -26,6 +26,13 @@
#ifdef __cplusplus
#include "layout.h"
+typedef WeexCore::WXCoreFlexDirection WXCoreFlexDirection;
+typedef WeexCore::WXCoreFlexWrap WXCoreFlexWrap;
+typedef WeexCore::WXCoreJustifyContent WXCoreJustifyContent;
+typedef WeexCore::WXCoreAlignItems WXCoreAlignItems;
+typedef WeexCore::WXCoreAlignSelf WXCoreAlignSelf;
+typedef WeexCore::WXCorePositionType WXCorePositionType;
+
extern "C" {
#endif
bool flexIsUndefined(float value);
@@ -33,6 +40,19 @@
}
#endif
+#ifndef __cplusplus
+// Ensure that .m files can use css style enum definitions.
+#include "flex_enum.h"
+
+typedef enum WXCoreFlexDirection WXCoreFlexDirection;
+typedef enum WXCoreFlexWrap WXCoreFlexWrap;
+typedef enum WXCoreJustifyContent WXCoreJustifyContent;
+typedef enum WXCoreAlignItems WXCoreAlignItems;
+typedef enum WXCoreAlignSelf WXCoreAlignSelf;
+typedef enum WXCorePositionType WXCorePositionType;
+
+#endif
+
@interface WXComponent ()
{
@package
@@ -51,10 +71,60 @@
* @warning Subclasses must not override this.
*/
#ifdef __cplusplus
-@property(nonatomic, readonly, assign) WeexCore::WXCoreLayoutNode *flexCssNode;
+@property (nonatomic, readonly, assign) WeexCore::WXCoreLayoutNode *flexCssNode;
#endif
/**
+ * @abstract Get css style value for key. The key should be of CSS standard form.
+ * This method is for convenience use in C/ObjC environment. And if you want to
+ * retrieve all style values or in C++, you could use flexCssNode directly.
+ *
+ * Thread usage:
+ * This method should be invoked in component thread by WXPerformBlockOnComponentThread.
+ * Note that all initWithRef methods of WXComponent and its subclasses are performed in
+ * component thread by default. Therefore you can call this method directly in initWithRef.
+ *
+ * Supported keys:
+ * width, height, min-width, min-height, max-width, max-height,
+ * margin-(left/right/top/bottom)
+ * padding-(left/right/top/bottom)
+ * border-(left/right/top/bottom)-width
+ * left, right, top, bottom
+ * flex-grow
+ */
+- (float)getCssStyleValueForKey:(NSString *)key;
+
+/**
+ * @abstract Get css style flex-direction. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreFlexDirection)getCssStyleFlexDirection;
+
+/**
+ * @abstract Get css style flex-wrap. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreFlexWrap)getCssStyleFlexWrap;
+
+/**
+ * @abstract Get css style justify-content. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreJustifyContent)getCssStyleJustifyContent;
+
+/**
+ * @abstract Get css style align-items. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreAlignItems)getCssStyleAlignItems;
+
+/**
+ * @abstract Get css style align-self. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreAlignSelf)getCssStyleAlignSelf;
+
+/**
+ * @abstract Get css style position. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCorePositionType)getCssStylePositionType;
+
+/**
* @abstract Convert layout dimension value like 'left', 'width' to style value in js considering viewport and scale.
*/
- (NSString*)convertLayoutValueToStyleValue:(NSString*)valueName;
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
index 18cb24d..8afd225 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
@@ -366,6 +366,86 @@
return defaultValue;
}
+- (float)getCssStyleValueForKey:(NSString *)key
+{
+ /*
+ * width, height, min-width, min-height, max-width, max-height,
+ * margin-(left/right/top/bottom)
+ * padding-(left/right/top/bottom)
+ * border-(left/right/top/bottom)-width
+ * left, right, top, bottom
+ * flex-grow
+ */
+ WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+ if (_flexCssNode == nullptr) {
+ return NAN;
+ }
+
+ std::string ckey = [key UTF8String];
+ if (ckey == "width") return _flexCssNode->getStyleWidth();
+ if (ckey == "height") return _flexCssNode->getStyleHeight();
+ if (ckey == "min-width") return _flexCssNode->getMinWidth();
+ if (ckey == "min-height") return _flexCssNode->getMinHeight();
+ if (ckey == "max-width") return _flexCssNode->getMaxWidth();
+ if (ckey == "max-height") return _flexCssNode->getMaxHeight();
+ if (ckey == "margin-left") return _flexCssNode->getMarginLeft();
+ if (ckey == "margin-right") return _flexCssNode->getMarginRight();
+ if (ckey == "margin-top") return _flexCssNode->getMarginTop();
+ if (ckey == "margin-bottom") return _flexCssNode->getMarginBottom();
+ if (ckey == "padding-left") return _flexCssNode->getPaddingLeft();
+ if (ckey == "padding-right") return _flexCssNode->getPaddingRight();
+ if (ckey == "padding-top") return _flexCssNode->getPaddingTop();
+ if (ckey == "padding-bottom") return _flexCssNode->getPaddingBottom();
+ if (ckey == "border-left-width") return _flexCssNode->getBorderWidthLeft();
+ if (ckey == "border-right-width") return _flexCssNode->getBorderWidthRight();
+ if (ckey == "border-top-width") return _flexCssNode->getBorderWidthTop();
+ if (ckey == "border-bottom-width") return _flexCssNode->getBorderWidthBottom();
+ if (ckey == "left") return _flexCssNode->getStylePositionLeft();
+ if (ckey == "right") return _flexCssNode->getStylePositionRight();
+ if (ckey == "top") return _flexCssNode->getStylePositionTop();
+ if (ckey == "bottom") return _flexCssNode->getStylePositionBottom();
+ if (ckey == "flex-grow") return _flexCssNode->getFlex();
+
+ WXAssert(NO, @"Invalid css style key %@", key);
+ return NAN;
+}
+
+- (WXCoreFlexDirection)getCssStyleFlexDirection
+{
+ WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+ return _flexCssNode ? _flexCssNode->getFlexDirection() : kFlexDirectionColumn;
+}
+
+- (WXCoreFlexWrap)getCssStyleFlexWrap
+{
+ WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+ return _flexCssNode ? _flexCssNode->getFlexWrap() : kNoWrap;
+}
+
+- (WXCoreJustifyContent)getCssStyleJustifyContent
+{
+ WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+ return _flexCssNode ? _flexCssNode->getJustifyContent() : kJustifyFlexStart;
+}
+
+- (WXCoreAlignItems)getCssStyleAlignItems
+{
+ WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+ return _flexCssNode ? _flexCssNode->getAlignItems() : kAlignItemsStretch;
+}
+
+- (WXCoreAlignSelf)getCssStyleAlignSelf
+{
+ WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+ return _flexCssNode ? _flexCssNode->getAlignSelf() : kAlignSelfAuto;
+}
+
+- (WXCorePositionType)getCssStylePositionType
+{
+ WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+ return _flexCssNode ? _flexCssNode->getStylePositionType() : kRelative;
+}
+
- (NSString*)convertLayoutValueToStyleValue:(NSString*)valueName
{
if (_flexCssNode == nullptr) {
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h
index 3d06277..8728161 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h
@@ -102,8 +102,9 @@
* @param name : service name
* @param serviceScript : script code
* @param options : service options
+ * @param completion : completion callback
**/
-- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary *)options;
+- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion;
/**
@@ -111,9 +112,9 @@
* @param name : service name
* @param serviceScriptUrl : script url
* @param options : service options
+ * @param completion : completion callback
**/
-
--(void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options;
+-(void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion;
/**
* Unregister JS service Script
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
index a0e8e4e..f5c7a47 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
@@ -288,28 +288,41 @@
return value;
}
--(void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options
+- (void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion
{
- if (!name || !serviceScriptUrl || !options) return;
+ if (!name || !serviceScriptUrl || !options) {
+ if (completion) {
+ completion(NO);
+ }
+ return;
+ }
__weak typeof(self) weakSelf = self;
WXResourceRequest *request = [WXResourceRequest requestWithURL:serviceScriptUrl resourceType:WXResourceTypeServiceBundle referrer:@"" cachePolicy:NSURLRequestUseProtocolCachePolicy];
WXResourceLoader *serviceBundleLoader = [[WXResourceLoader alloc] initWithRequest:request];;
serviceBundleLoader.onFinished = ^(WXResourceResponse *response, NSData *data) {
__strong typeof(weakSelf) strongSelf = weakSelf;
NSString *jsServiceString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
- [strongSelf registerService:name withService:jsServiceString withOptions:options];
+ [strongSelf registerService:name withService:jsServiceString withOptions:options completion:completion];
};
serviceBundleLoader.onFailed = ^(NSError *loadError) {
WXLogError(@"No script URL found");
+ if (completion) {
+ completion(NO);
+ }
};
[serviceBundleLoader start];
}
-- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary *)options
+- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion
{
- if (!name || !serviceScript || !options) return;
+ if (!name || !serviceScript || !options) {
+ if (completion) {
+ completion(NO);
+ }
+ return;
+ }
NSString *script = [WXServiceFactory registerServiceScript:name withRawScript:serviceScript withOptions:options];
@@ -318,6 +331,9 @@
// save it when execute
[WXDebugTool cacheJsService:name withScript:serviceScript withOptions:options];
[weakSelf.bridgeCtx executeJsService:script withName:name];
+ if (completion) {
+ completion(YES);
+ }
});
}
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
index 87bc326..613abd5 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
@@ -78,7 +78,6 @@
BOOL _debugJS;
id<WXBridgeProtocol> _instanceJavaScriptContext; // sandbox javaScript context
CGFloat _defaultPixelScaleFactor;
- BOOL _bReleaseInstanceInMainThread;
BOOL _defaultDataRender;
}
@@ -118,7 +117,6 @@
_apmInstance = [[WXApmForInstance alloc] init];
_defaultPixelScaleFactor = CGFLOAT_MIN;
- _bReleaseInstanceInMainThread = YES;
_defaultDataRender = NO;
[self addObservers];
@@ -443,9 +441,6 @@
BOOL useJSCApiForCreateInstance = [[configCenter configForKey:@"iOS_weex_ext_config.useJSCApiForCreateInstance" defaultValue:@(YES) isDefault:NULL] boolValue];
[WXUtility setUseJSCApiForCreateInstance:useJSCApiForCreateInstance];
-
- //Reading config from orange for Release instance in Main Thread or not
- _bReleaseInstanceInMainThread = [[configCenter configForKey:@"iOS_weex_ext_config.releaseInstanceInMainThread" defaultValue:@(YES) isDefault:nil] boolValue];
BOOL shoudMultiContext = NO;
shoudMultiContext = [[configCenter configForKey:@"iOS_weex_ext_config.createInstanceUsingMutliContext" defaultValue:@(YES) isDefault:NULL] boolValue];
@@ -659,13 +654,9 @@
[WXCoreBridge closePage:instanceId];
// Reading config from orange for Release instance in Main Thread or not, for Bug #15172691 +{
- if (!_bReleaseInstanceInMainThread) {
+ dispatch_async(dispatch_get_main_queue(), ^{
[WXSDKManager removeInstanceforID:instanceId];
- } else {
- dispatch_async(dispatch_get_main_queue(), ^{
- [WXSDKManager removeInstanceforID:instanceId];
- });
- }
+ });
//+}
});
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
index 70a8feb..75b09d8 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
@@ -123,7 +123,7 @@
_animationInfo.target.view.layer.anchorPoint = _animationInfo.originAnchorPoint;
_animationInfo.target.view.layer.frame = originFrame;
}
- [_animationInfo.target.layer removeAllAnimations];
+ [_animationInfo.target.layer removeAnimationForKey:_animationInfo.propertyName];
if (_finishBlock) {
_finishBlock(flag);
diff --git a/ios/sdk/WeexSDK/Sources/Utility/WXThreadSafeMutableDictionary.m b/ios/sdk/WeexSDK/Sources/Utility/WXThreadSafeMutableDictionary.m
index 3c32292..6f31fb9 100644
--- a/ios/sdk/WeexSDK/Sources/Utility/WXThreadSafeMutableDictionary.m
+++ b/ios/sdk/WeexSDK/Sources/Utility/WXThreadSafeMutableDictionary.m
@@ -145,24 +145,30 @@
- (void)setObject:(id)anObject forKey:(id<NSCopying>)aKey
{
+ id originalObject = nil; // make sure that object is not released in lock
@try {
pthread_mutex_lock(&_safeThreadDictionaryMutex);
+ originalObject = [_dict objectForKey:aKey];
[_dict setObject:anObject forKey:aKey];
}
@finally {
pthread_mutex_unlock(&_safeThreadDictionaryMutex);
}
+ originalObject = nil;
}
- (void)setObject:(id)anObject forKeyedSubscript:(id <NSCopying>)key
{
+ id originalObject = nil; // make sure that object is not released in lock
@try {
pthread_mutex_lock(&_safeThreadDictionaryMutex);
+ originalObject = [_dict objectForKey:key];
[_dict setObject:anObject forKeyedSubscript:key];
}
@finally {
pthread_mutex_unlock(&_safeThreadDictionaryMutex);
}
+ originalObject = nil;
}
- (NSArray *)allKeys
@@ -189,24 +195,32 @@
- (void)removeObjectForKey:(id)aKey
{
+ id originalObject = nil; // make sure that object is not released in lock
@try {
pthread_mutex_lock(&_safeThreadDictionaryMutex);
- [_dict removeObjectForKey:aKey];
+ originalObject = [_dict objectForKey:aKey];
+ if (originalObject) {
+ [_dict removeObjectForKey:aKey];
+ }
}
@finally {
pthread_mutex_unlock(&_safeThreadDictionaryMutex);
}
+ originalObject = nil;
}
- (void)removeAllObjects
{
+ NSArray* allValues = nil; // make sure that objects are not released in lock
@try {
pthread_mutex_lock(&_safeThreadDictionaryMutex);
+ allValues = [_dict allValues];
[_dict removeAllObjects];
}
@finally {
pthread_mutex_unlock(&_safeThreadDictionaryMutex);
}
+ allValues = nil;
}
- (id)copy
diff --git a/weex_core/Source/android/wrap/native_render_object_utils_impl_android.cpp b/weex_core/Source/android/wrap/native_render_object_utils_impl_android.cpp
index 5565075..eb30d90 100644
--- a/weex_core/Source/android/wrap/native_render_object_utils_impl_android.cpp
+++ b/weex_core/Source/android/wrap/native_render_object_utils_impl_android.cpp
@@ -79,7 +79,7 @@
static void showRenderObjectLayout(RenderObject *renderObject, int level){
LOGE("RenderObject layout %s %d %p %f %f %f %f ", renderObject->type().c_str(),
- renderObject->getStypePositionType(),
+ renderObject->getStylePositionType(),
renderObject, renderObject->getLayoutHeight(), renderObject->getLayoutWidth(),
renderObject->getLayoutPositionLeft(), renderObject->getLayoutPositionRight());
@@ -171,11 +171,11 @@
jboolean waster){
RenderObject* renderObject = convert_long_to_render_object(ptr);
if(waster){
- if(renderObject->getStypePositionType() != WXCorePositionType::kFixed){
+ if(renderObject->getStylePositionType() != WXCorePositionType::kFixed){
renderObject->setStylePositionType(WXCorePositionType::kFixed);
}
}else{
- if(renderObject->getStypePositionType() != WXCorePositionType::kRelative){
+ if(renderObject->getStylePositionType() != WXCorePositionType::kRelative){
renderObject->setStylePositionType(WXCorePositionType::kRelative);
}
}
diff --git a/weex_core/Source/core/layout/flex_enum.h b/weex_core/Source/core/layout/flex_enum.h
index 9eb3676..7e439b2 100644
--- a/weex_core/Source/core/layout/flex_enum.h
+++ b/weex_core/Source/core/layout/flex_enum.h
@@ -16,12 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-#ifdef __cplusplus
#ifndef WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
#define WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
+/* These enum definitions may also be used by C files. */
+#ifdef __cplusplus
namespace WeexCore {
+#endif
/**
* MainAxis direction
@@ -120,6 +122,8 @@
kLeft,
};
+#ifdef __cplusplus
}
+#endif
+
#endif //WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
-#endif
\ No newline at end of file
diff --git a/weex_core/Source/core/layout/layout.h b/weex_core/Source/core/layout/layout.h
index 0d62edd..4b8f0c5 100644
--- a/weex_core/Source/core/layout/layout.h
+++ b/weex_core/Source/core/layout/layout.h
@@ -836,7 +836,7 @@
}
}
- inline WXCorePositionType getStypePositionType() const {
+ inline WXCorePositionType getStylePositionType() const {
return mCssStyle->mPositionType;
}
diff --git a/weex_core/Source/core/render/page/render_page.cpp b/weex_core/Source/core/render/page/render_page.cpp
index 032a0d7..119af87 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -628,13 +628,11 @@
if ((kUseVSync && this->need_layout_.load()) || !kUseVSync) {
LayoutInner();
}
- else {
#if OS_IOS
- // vsync may stopped, trigger once
- RenderAction *action = new RenderActionTriggerVSync(page_id());
- PostRenderAction(action);
+ // vsync may stopped, trigger once
+ RenderAction *action = new RenderActionTriggerVSync(page_id());
+ PostRenderAction(action);
#endif
- }
}
RenderObject *RenderPage::GetRenderObject(const std::string &ref) {