103e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian/* 203e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * Copyright (C) 2012 The Android Open Source Project 303e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * 403e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 503e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * you may not use this file except in compliance with the License. 603e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * You may obtain a copy of the License at 703e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * 803e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 903e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * 1003e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * Unless required by applicable law or agreed to in writing, software 1103e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 1203e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1303e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * See the License for the specific language governing permissions and 1403e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian * limitations under the License. 1503e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian */ 1603e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian 1703e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian#include <stdint.h> 1803e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian#include <sys/types.h> 1903e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian 2003e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian#include <cutils/log.h> 2103e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian#include <utils/Errors.h> 2203e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian 23ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi#include <binder/IServiceManager.h> 24ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi#include <powermanager/IPowerManager.h> 25ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi#include <powermanager/PowerManager.h> 26ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi 2703e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian#include "PowerHAL.h" 2803e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian 2903e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopiannamespace android { 3003e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian// --------------------------------------------------------------------------- 3103e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian 3203e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopianstatus_t PowerHAL::vsyncHint(bool enabled) { 33ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi Mutex::Autolock _l(mlock); 34ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi if (mPowerManager == NULL) { 35ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi const String16 serviceName("power"); 36ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi sp<IBinder> bs = defaultServiceManager()->checkService(serviceName); 37ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi if (bs == NULL) { 38ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi return NAME_NOT_FOUND; 394098f03d5c9fb8522279ca04da70bec6793b2caaRuchi Kandoi } 40ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi mPowerManager = interface_cast<IPowerManager>(bs); 41ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi } 42ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi status_t status = mPowerManager->powerHint(POWER_HINT_VSYNC, enabled ? 1 : 0); 43ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi if(status == DEAD_OBJECT) { 44ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi mPowerManager = NULL; 4503e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian } 46ef472ec40a0fbb0ef96b79bef846f20b73da4971Ruchi Kandoi return status; 4703e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian} 4803e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian 4903e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian// --------------------------------------------------------------------------- 5003e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian}; // namespace android 5103e407270c7ad76632f982c886d0776bed9e9b4cMathias Agopian 52