Merge "Release doze wake lock when doze dream is stopped"

This commit is contained in:
Galia Peycheva
2023-01-27 16:49:54 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 1 deletions

View File

@@ -292,7 +292,10 @@ final class DreamController {
new int[] {ACTIVITY_TYPE_DREAM});
mListener.onDreamStopped(dream.mToken);
} else if (dream.mCanDoze && !mCurrentDream.mCanDoze) {
mListener.stopDozing(dream.mToken);
}
} finally {
Trace.traceEnd(Trace.TRACE_TAG_POWER);
}
@@ -338,6 +341,7 @@ final class DreamController {
*/
public interface Listener {
void onDreamStopped(Binder token);
void stopDozing(Binder token);
}
private final class DreamRecord implements DeathRecipient, ServiceConnection {

View File

@@ -499,7 +499,12 @@ public final class DreamManagerService extends SystemService {
}
synchronized (mLock) {
if (mCurrentDream != null && mCurrentDream.token == token && mCurrentDream.isDozing) {
if (mCurrentDream == null) {
return;
}
final boolean sameDream = mCurrentDream.token == token;
if ((sameDream && mCurrentDream.isDozing) || (!sameDream && !mCurrentDream.isDozing)) {
mCurrentDream.isDozing = false;
mDozeWakeLock.release();
mPowerManagerInternal.setDozeOverrideFromDreamManager(
@@ -768,6 +773,11 @@ public final class DreamManagerService extends SystemService {
}
}
}
@Override
public void stopDozing(Binder token) {
stopDozingInternal(token);
}
};
private final ContentObserver mDozeEnabledObserver = new ContentObserver(null) {