Merge "Release doze wake lock when doze dream is stopped" into tm-qpr-dev

This commit is contained in:
Josh Tsuji
2023-01-31 04:16:01 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 1 deletions

View File

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

View File

@@ -499,7 +499,12 @@ public final class DreamManagerService extends SystemService {
} }
synchronized (mLock) { 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; mCurrentDream.isDozing = false;
mDozeWakeLock.release(); mDozeWakeLock.release();
mPowerManagerInternal.setDozeOverrideFromDreamManager( mPowerManagerInternal.setDozeOverrideFromDreamManager(
@@ -765,6 +770,11 @@ public final class DreamManagerService extends SystemService {
} }
} }
} }
@Override
public void stopDozing(Binder token) {
stopDozingInternal(token);
}
}; };
private final ContentObserver mDozeEnabledObserver = new ContentObserver(null) { private final ContentObserver mDozeEnabledObserver = new ContentObserver(null) {