Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa4cd355 authored by Jorim Jaggi's avatar Jorim Jaggi Committed by android-build-merger
Browse files

Merge "Do not hold lock when trying to get snapshot" into qt-dev am: beee882c

am: c98d8a91

Change-Id: Ib894b35caab71945e3923ed8555c073a93eefe15
parents 5150ab5b c98d8a91
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -98,7 +98,7 @@ public final class ContentSuggestionsPerUserService extends
        RemoteContentSuggestionsService service = getRemoteServiceLocked();
        RemoteContentSuggestionsService service = getRemoteServiceLocked();
        if (service != null) {
        if (service != null) {
            ActivityManager.TaskSnapshot snapshot =
            ActivityManager.TaskSnapshot snapshot =
                    mActivityTaskManagerInternal.getTaskSnapshot(taskId, false);
                    mActivityTaskManagerInternal.getTaskSnapshotNoRestore(taskId, false);
            GraphicBuffer snapshotBuffer = null;
            GraphicBuffer snapshotBuffer = null;
            int colorSpaceId = 0;
            int colorSpaceId = 0;
            if (snapshot != null) {
            if (snapshot != null) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -559,7 +559,7 @@ public abstract class ActivityTaskManagerInternal {
    /**
    /**
     * Gets bitmap snapshot of the provided task id.
     * Gets bitmap snapshot of the provided task id.
     */
     */
    public abstract ActivityManager.TaskSnapshot getTaskSnapshot(int taskId,
    public abstract ActivityManager.TaskSnapshot getTaskSnapshotNoRestore(int taskId,
            boolean reducedResolution);
            boolean reducedResolution);


    /** Returns true if uid is considered foreground for activity start purposes. */
    /** Returns true if uid is considered foreground for activity start purposes. */
+20 −15
Original line number Original line Diff line number Diff line
@@ -4521,6 +4521,14 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        enforceCallerIsRecentsOrHasPermission(READ_FRAME_BUFFER, "getTaskSnapshot()");
        enforceCallerIsRecentsOrHasPermission(READ_FRAME_BUFFER, "getTaskSnapshot()");
        final long ident = Binder.clearCallingIdentity();
        final long ident = Binder.clearCallingIdentity();
        try {
        try {
            return getTaskSnapshot(taskId, reducedResolution, true /* restoreFromDisk */);
        } finally {
            Binder.restoreCallingIdentity(ident);
        }
    }

    private ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean reducedResolution,
            boolean restoreFromDisk) {
        final TaskRecord task;
        final TaskRecord task;
        synchronized (mGlobalLock) {
        synchronized (mGlobalLock) {
            task = mRootActivityContainer.anyTaskForId(taskId,
            task = mRootActivityContainer.anyTaskForId(taskId,
@@ -4531,10 +4539,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
            }
            }
        }
        }
        // Don't call this while holding the lock as this operation might hit the disk.
        // Don't call this while holding the lock as this operation might hit the disk.
            return task.getSnapshot(reducedResolution);
        return task.getSnapshot(reducedResolution, restoreFromDisk);
        } finally {
            Binder.restoreCallingIdentity(ident);
        }
    }
    }


    @Override
    @Override
@@ -7419,10 +7424,10 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        }
        }


        @Override
        @Override
        public ActivityManager.TaskSnapshot getTaskSnapshot(int taskId, boolean reducedResolution) {
        public ActivityManager.TaskSnapshot getTaskSnapshotNoRestore(int taskId,
            synchronized (mGlobalLock) {
                boolean reducedResolution) {
                return ActivityTaskManagerService.this.getTaskSnapshot(taskId, reducedResolution);
            return ActivityTaskManagerService.this.getTaskSnapshot(taskId, reducedResolution,
            }
                    false /* restoreFromDisk */);
        }
        }


        @Override
        @Override
+3 −2
Original line number Original line Diff line number Diff line
@@ -851,11 +851,12 @@ class TaskRecord extends ConfigurationContainer {
    /**
    /**
     * DO NOT HOLD THE ACTIVITY MANAGER LOCK WHEN CALLING THIS METHOD!
     * DO NOT HOLD THE ACTIVITY MANAGER LOCK WHEN CALLING THIS METHOD!
     */
     */
    TaskSnapshot getSnapshot(boolean reducedResolution) {
    TaskSnapshot getSnapshot(boolean reducedResolution, boolean restoreFromDisk) {


        // TODO: Move this to {@link TaskWindowContainerController} once recent tasks are more
        // TODO: Move this to {@link TaskWindowContainerController} once recent tasks are more
        // synchronized between AM and WM.
        // synchronized between AM and WM.
        return mService.mWindowManager.getTaskSnapshot(taskId, userId, reducedResolution);
        return mService.mWindowManager.getTaskSnapshot(taskId, userId, reducedResolution,
                restoreFromDisk);
    }
    }


    void touchActiveTime() {
    void touchActiveTime() {
+3 −2
Original line number Original line Diff line number Diff line
@@ -3551,8 +3551,9 @@ public class WindowManagerService extends IWindowManager.Stub
        return true;
        return true;
    }
    }


    public TaskSnapshot getTaskSnapshot(int taskId, int userId, boolean reducedResolution) {
    public TaskSnapshot getTaskSnapshot(int taskId, int userId, boolean reducedResolution,
        return mTaskSnapshotController.getSnapshot(taskId, userId, true /* restoreFromDisk */,
            boolean restoreFromDisk) {
        return mTaskSnapshotController.getSnapshot(taskId, userId, restoreFromDisk,
                reducedResolution);
                reducedResolution);
    }
    }