1c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos/* 2c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * Copyright (C) 2017 The Android Open Source Project 3c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * 4c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * Licensed under the Apache License, Version 2.0 (the "License"); 5c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * you may not use this file except in compliance with the License. 6c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * You may obtain a copy of the License at 7c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * 8c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * http://www.apache.org/licenses/LICENSE-2.0 9c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * 10c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * Unless required by applicable law or agreed to in writing, software 11c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * distributed under the License is distributed on an "AS IS" BASIS, 12c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * See the License for the specific language governing permissions and 14c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos * limitations under the License 15c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos */ 16c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 17c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roospackage com.android.systemui.util.wakelock; 18c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 19c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roosimport android.os.Handler; 20c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roosimport android.os.PowerManager; 21c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 22c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roosimport com.android.internal.util.Preconditions; 23c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 24c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roospublic class SettableWakeLock { 25c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 26c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos private final WakeLock mInner; 27c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 28c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos private boolean mAcquired; 29c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 30c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos public SettableWakeLock(WakeLock inner) { 31c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos Preconditions.checkNotNull(inner, "inner wakelock required"); 32c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 33c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos mInner = inner; 34c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos } 35c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 36c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos public synchronized boolean isAcquired() { 37c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos return mAcquired; 38c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos } 39c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos 40c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos public synchronized void setAcquired(boolean acquired) { 41c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos if (mAcquired != acquired) { 42c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos if (acquired) { 43c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos mInner.acquire(); 44c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos } else { 45c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos mInner.release(); 46c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos } 47c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos mAcquired = acquired; 48c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos } 49c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos } 50c1b50324a2286b24b691b8a7190743cbc341727eAdrian Roos} 51