10fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos/* 20fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * Copyright (C) 2017 The Android Open Source Project 30fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * 40fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * Licensed under the Apache License, Version 2.0 (the "License"); 50fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * you may not use this file except in compliance with the License. 60fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * You may obtain a copy of the License at 70fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * 80fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * http://www.apache.org/licenses/LICENSE-2.0 90fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * 100fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * Unless required by applicable law or agreed to in writing, software 110fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * distributed under the License is distributed on an "AS IS" BASIS, 120fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * See the License for the specific language governing permissions and 140fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * limitations under the License. 150fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos */ 160fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 170fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roospackage com.android.systemui.util.wakelock; 180fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 190fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roosimport android.os.Handler; 200fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 210fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos/** 220fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos * A wake lock that has a built in delay when releasing to give the framebuffer time to update. 230fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos */ 240fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roospublic class DelayedWakeLock implements WakeLock { 250fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 26f9583c41dce46321bdcd9cea7045a5bedbe0d59dLucas Dupin private static final long RELEASE_DELAY_MS = 140; 270fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 280fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos private final Handler mHandler; 290fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos private final WakeLock mInner; 300fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos private final Runnable mRelease; 310fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 320fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos public DelayedWakeLock(Handler h, WakeLock inner) { 330fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos mHandler = h; 340fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos mInner = inner; 350fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos mRelease = mInner::release; 360fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos } 370fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 380fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos @Override 390fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos public void acquire() { 400fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos mInner.acquire(); 410fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos } 420fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 430fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos @Override 440fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos public void release() { 450fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos mHandler.postDelayed(mRelease, RELEASE_DELAY_MS); 460fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos } 470fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos 480fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos @Override 490fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos public Runnable wrap(Runnable r) { 500fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos return WakeLock.wrapImpl(this, r); 510fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos } 520fb55aedaebd0d060254e9f8fe042fa65ce9b448Adrian Roos} 53