Also protect creating SurfaceSession with root surface.
Change-Id: I3649f160e85367169710b36faf26c96bef0f71fe
Fix:
110922266
Test: atest CtsViewTestCases:android.view.cts.DragDropTest
}
public SurfaceSession(Surface root) {
- mNativeClient = nativeCreateScoped(root.mNativeObject);
+ synchronized (root.mLock) {
+ if (root.mNativeObject == 0) {
+ throw new IllegalStateException("Surface is not initialized or has been released");
+ }
+ mNativeClient = nativeCreateScoped(root.mNativeObject);
+ }
}
/* no user serviceable parts here ... */
Log.w(VIEW_LOG_TAG, "startDragAndDrop called on a detached view.");
return false;
}
+ if (!mAttachInfo.mViewRootImpl.mSurface.isValid()) {
+ Log.w(VIEW_LOG_TAG, "startDragAndDrop called with an invalid surface.");
+ return false;
+ }
if (data != null) {
data.prepareToLeaveProcess((flags & View.DRAG_FLAG_GLOBAL) != 0);