Merge "fix clickable area of FAB on pre-Lollipop devices"
diff --git a/v4/java/android/support/v4/app/FragmentManager.java b/v4/java/android/support/v4/app/FragmentManager.java
index 50bc88b..caf1cfe 100644
--- a/v4/java/android/support/v4/app/FragmentManager.java
+++ b/v4/java/android/support/v4/app/FragmentManager.java
@@ -1147,6 +1147,7 @@
}
if (anim != null) {
final Fragment fragment = f;
+ final ViewGroup container = f.mContainer;
f.mAnimatingAway = f.mView;
f.mStateAfterAnimating = newState;
final View viewToAnimate = f.mView;
@@ -1156,6 +1157,7 @@
public void onAnimationEnd(Animation animation) {
super.onAnimationEnd(animation);
if (fragment.mAnimatingAway != null) {
+ container.removeView(fragment.mAnimatingAway);
fragment.mAnimatingAway = null;
moveToState(fragment, fragment.mStateAfterAnimating,
0, 0, false);
@@ -1163,8 +1165,9 @@
}
});
f.mView.startAnimation(anim);
+ } else {
+ f.mContainer.removeView(f.mView);
}
- f.mContainer.removeView(f.mView);
}
f.mContainer = null;
f.mView = null;
diff --git a/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java b/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
index 57684f8..2812b03 100644
--- a/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
+++ b/v7/recyclerview/src/android/support/v7/widget/RecyclerView.java
@@ -1541,7 +1541,7 @@
*
* @return The horizontal offset of the scrollbar's thumb
* @see android.support.v7.widget.RecyclerView.LayoutManager#computeHorizontalScrollOffset
- * (RecyclerView.Adapter)
+ * (RecyclerView.State)
*/
@Override
public int computeHorizontalScrollOffset() {
@@ -1606,7 +1606,7 @@
*
* @return The vertical offset of the scrollbar's thumb
* @see android.support.v7.widget.RecyclerView.LayoutManager#computeVerticalScrollOffset
- * (RecyclerView.Adapter)
+ * (RecyclerView.State)
*/
@Override
public int computeVerticalScrollOffset() {
diff --git a/v8/renderscript/jni/android_renderscript_RenderScript.cpp b/v8/renderscript/jni/android_renderscript_RenderScript.cpp
index eea462c..cdb3eff 100644
--- a/v8/renderscript/jni/android_renderscript_RenderScript.cpp
+++ b/v8/renderscript/jni/android_renderscript_RenderScript.cpp
@@ -1880,42 +1880,75 @@
{
LOG_API("nScriptGroupCreate, con(%p)", (RsContext)con);
+ jlong id = 0;
+
+ RsScriptKernelID* kernelsPtr;
jint kernelsLen = _env->GetArrayLength(_kernels);
jlong *jKernelsPtr = _env->GetLongArrayElements(_kernels, nullptr);
- RsScriptKernelID* kernelsPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * kernelsLen);
+
+ RsScriptKernelID* srcPtr;
+ jint srcLen = _env->GetArrayLength(_src);
+ jlong *jSrcPtr = _env->GetLongArrayElements(_src, nullptr);
+
+ RsScriptKernelID* dstkPtr;
+ jint dstkLen = _env->GetArrayLength(_dstk);
+ jlong *jDstkPtr = _env->GetLongArrayElements(_dstk, nullptr);
+
+ RsScriptKernelID* dstfPtr;
+ jint dstfLen = _env->GetArrayLength(_dstf);
+ jlong *jDstfPtr = _env->GetLongArrayElements(_dstf, nullptr);
+
+ RsType* typesPtr;
+ jint typesLen = _env->GetArrayLength(_types);
+ jlong *jTypesPtr = _env->GetLongArrayElements(_types, nullptr);
+
+ if (jKernelsPtr == nullptr) {
+ LOG_ERR("Failed to get Java array elements: kernels");
+ goto cleanup;
+ }
+ if (jSrcPtr == nullptr) {
+ LOG_ERR("Failed to get Java array elements: src");
+ goto cleanup;
+ }
+ if (jDstkPtr == nullptr) {
+ LOG_ERR("Failed to get Java array elements: dstk");
+ goto cleanup;
+ }
+ if (jDstfPtr == nullptr) {
+ LOG_ERR("Failed to get Java array elements: dstf");
+ goto cleanup;
+ }
+ if (jTypesPtr == nullptr) {
+ LOG_ERR("Failed to get Java array elements: types");
+ goto cleanup;
+ }
+
+ kernelsPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * kernelsLen);
for(int i = 0; i < kernelsLen; ++i) {
kernelsPtr[i] = (RsScriptKernelID)jKernelsPtr[i];
}
- jint srcLen = _env->GetArrayLength(_src);
- jlong *jSrcPtr = _env->GetLongArrayElements(_src, nullptr);
- RsScriptKernelID* srcPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * srcLen);
+ srcPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * srcLen);
for(int i = 0; i < srcLen; ++i) {
srcPtr[i] = (RsScriptKernelID)jSrcPtr[i];
}
- jint dstkLen = _env->GetArrayLength(_dstk);
- jlong *jDstkPtr = _env->GetLongArrayElements(_dstk, nullptr);
- RsScriptKernelID* dstkPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstkLen);
+ dstkPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstkLen);
for(int i = 0; i < dstkLen; ++i) {
dstkPtr[i] = (RsScriptKernelID)jDstkPtr[i];
}
- jint dstfLen = _env->GetArrayLength(_dstf);
- jlong *jDstfPtr = _env->GetLongArrayElements(_dstf, nullptr);
- RsScriptKernelID* dstfPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstfLen);
+ dstfPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstfLen);
for(int i = 0; i < dstfLen; ++i) {
dstfPtr[i] = (RsScriptKernelID)jDstfPtr[i];
}
- jint typesLen = _env->GetArrayLength(_types);
- jlong *jTypesPtr = _env->GetLongArrayElements(_types, nullptr);
- RsType* typesPtr = (RsType*) malloc(sizeof(RsType) * typesLen);
+ typesPtr = (RsType*) malloc(sizeof(RsType) * typesLen);
for(int i = 0; i < typesLen; ++i) {
typesPtr[i] = (RsType)jTypesPtr[i];
}
- jlong id = (jlong)(uintptr_t) dispatchTab.ScriptGroupCreate((RsContext)con,
+ id = (jlong)(uintptr_t) dispatchTab.ScriptGroupCreate((RsContext)con,
(RsScriptKernelID *)kernelsPtr, kernelsLen * sizeof(RsScriptKernelID),
(RsScriptKernelID *)srcPtr, srcLen * sizeof(RsScriptKernelID),
(RsScriptKernelID *)dstkPtr, dstkLen * sizeof(RsScriptKernelID),
@@ -1927,11 +1960,24 @@
free(dstkPtr);
free(dstfPtr);
free(typesPtr);
- _env->ReleaseLongArrayElements(_kernels, jKernelsPtr, 0);
- _env->ReleaseLongArrayElements(_src, jSrcPtr, 0);
- _env->ReleaseLongArrayElements(_dstk, jDstkPtr, 0);
- _env->ReleaseLongArrayElements(_dstf, jDstfPtr, 0);
- _env->ReleaseLongArrayElements(_types, jTypesPtr, 0);
+
+cleanup:
+ if (jKernelsPtr != nullptr) {
+ _env->ReleaseLongArrayElements(_kernels, jKernelsPtr, 0);
+ }
+ if (jSrcPtr != nullptr) {
+ _env->ReleaseLongArrayElements(_src, jSrcPtr, 0);
+ }
+ if (jDstkPtr != nullptr) {
+ _env->ReleaseLongArrayElements(_dstk, jDstkPtr, 0);
+ }
+ if (jDstfPtr != nullptr) {
+ _env->ReleaseLongArrayElements(_dstf, jDstfPtr, 0);
+ }
+ if (jTypesPtr != nullptr) {
+ _env->ReleaseLongArrayElements(_types, jTypesPtr, 0);
+ }
+
return id;
}