1b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang/* 2cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Copyright (c) 2014 Intel Corporation 3cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 4cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Licensed under the Apache License, Version 2.0 (the "License"); 5cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// you may not use this file except in compliance with the License. 6cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// You may obtain a copy of the License at 7cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 8cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// http://www.apache.org/licenses/LICENSE-2.0 9cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// 10cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// Unless required by applicable law or agreed to in writing, software 11cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// distributed under the License is distributed on an "AS IS" BASIS, 12cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// See the License for the specific language governing permissions and 14cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika// limitations under the License. 15cd727f537d5085eec7f1b8f9c1d33922d4de75d4Prodyut Hazarika*/ 16b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#include <common/utils/HwcTrace.h> 17b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#include <Hwcomposer.h> 18b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#include <DisplayQuery.h> 19b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#include <common/observers/SoftVsyncObserver.h> 20b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang#include <DummyDevice.h> 21b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 22b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangnamespace android { 23b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangnamespace intel { 243540d325335005c6761c3557679201ae29f7c1d0Michael LentineDummyDevice::DummyDevice(uint32_t disp, Hwcomposer& hwc) 25b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang : mInitialized(false), 26b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mConnected(false), 27b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mBlank(false), 283540d325335005c6761c3557679201ae29f7c1d0Michael Lentine mDisp(disp), 29b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mHwc(hwc), 30b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mVsyncObserver(NULL), 31b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mName("Dummy") 32b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 33b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang CTRACE(); 34b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 35b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 36b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei ZhangDummyDevice::~DummyDevice() 37b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 38b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang WARN_IF_NOT_DEINIT(); 39b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 40b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 41b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::prePrepare(hwc_display_contents_1_t *display) 42b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 43b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 44b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 45b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if (!display) { 46b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 47b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 48b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 49b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang // nothing need to do for dummy display 50b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 51b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 52b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 53b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::prepare(hwc_display_contents_1_t *display) 54b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 55b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 56b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 573540d325335005c6761c3557679201ae29f7c1d0Michael Lentine if (!display || mDisp >= DEVICE_VIRTUAL) { 58b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 59b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 60b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 61b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang // skip all layers composition on dummy display 62b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if (display->flags & HWC_GEOMETRY_CHANGED) { 63b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang for (size_t i=0; i < display->numHwLayers-1; i++) { 64b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang hwc_layer_1 * player = &display->hwLayers[i]; 65b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang player->compositionType = HWC_OVERLAY; 66b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang player->flags &= ~HWC_SKIP_LAYER; 67b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 68b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 69b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 70b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 71b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 72b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 73b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::commit(hwc_display_contents_1_t *display, IDisplayContext *context) 74b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 75b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 76b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 77b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if (!display || !context) 78b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 79b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 80b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang // nothing need to do for dummy display 81b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 82b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 83b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 84b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::vsyncControl(bool enabled) 85b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 86b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 87b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return mVsyncObserver->control(enabled); 88b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 89b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 90b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::blank(bool blank) 91b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 92b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 93b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 94b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mBlank = blank; 95b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 96b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 97b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 98b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 99b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::getDisplaySize(int *width, int *height) 100b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 101b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 102b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if (!width || !height) { 1034157ee3f6fb20e0a249b9eedc06f3b16785ba31bIliyan Malchev ELOGTRACE("invalid parameters"); 104b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return false; 105b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 106b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 107b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang // TODO: make this platform specifc 108b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang *width = 1280;//720; 109b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang *height = 720;//1280; 110b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 111b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 112b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 113b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::getDisplayConfigs(uint32_t *configs, 114b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang size_t *numConfigs) 115b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 116b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 117b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if (!configs || !numConfigs) { 1184157ee3f6fb20e0a249b9eedc06f3b16785ba31bIliyan Malchev ELOGTRACE("invalid parameters"); 119b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return false; 120b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 121b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 122b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if (!mConnected) { 1234157ee3f6fb20e0a249b9eedc06f3b16785ba31bIliyan Malchev ILOGTRACE("dummy device is not connected"); 124b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return false; 125b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 126b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 127b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang *configs = 0; 128b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang *numConfigs = 1; 129b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 130b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 131b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 132b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 133b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::getDisplayAttributes(uint32_t configs, 134b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang const uint32_t *attributes, 135b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang int32_t *values) 136b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 137b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 138b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 139b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if ((configs > 0) || !attributes || !values) { 1404157ee3f6fb20e0a249b9eedc06f3b16785ba31bIliyan Malchev ELOGTRACE("invalid parameters"); 141b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return false; 142b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 143b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 144b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if (!mConnected) { 1454157ee3f6fb20e0a249b9eedc06f3b16785ba31bIliyan Malchev ILOGTRACE("dummy device is not connected"); 146b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return false; 147b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 148b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 149b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang int i = 0; 150b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang while (attributes[i] != HWC_DISPLAY_NO_ATTRIBUTE) { 151b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang switch (attributes[i]) { 152b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang case HWC_DISPLAY_VSYNC_PERIOD: 153b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang values[i] = 1e9 / 60; 154b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang break; 155b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang case HWC_DISPLAY_WIDTH: 156b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang values[i] = 1280; 157b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang break; 158b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang case HWC_DISPLAY_HEIGHT: 159b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang values[i] = 720; 160b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang break; 161b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang case HWC_DISPLAY_DPI_X: 162b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang values[i] = 0; 163b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang break; 164b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang case HWC_DISPLAY_DPI_Y: 165b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang values[i] = 0; 166b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang break; 167b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang default: 1684157ee3f6fb20e0a249b9eedc06f3b16785ba31bIliyan Malchev ELOGTRACE("unknown attribute %d", attributes[i]); 169b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang break; 170b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 171b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang i++; 172b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 173b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 174b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 175b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 176b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 177b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::compositionComplete() 178b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 179b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang RETURN_FALSE_IF_NOT_INIT(); 180b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return true; 181b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 182b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 183b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::initialize() 184b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 185b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mInitialized = true; 186b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 187b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mVsyncObserver = new SoftVsyncObserver(*this); 188b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang if (!mVsyncObserver || !mVsyncObserver->initialize()) { 189b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang DEINIT_AND_RETURN_FALSE("Failed to create Soft Vsync Observer"); 190b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mInitialized = false; 191b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang } 192b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 193b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return mInitialized; 194b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 195b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 196b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangbool DummyDevice::isConnected() const 197b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 198b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return mConnected; 199b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 200b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 201b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangconst char* DummyDevice::getName() const 202b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 203b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang return "Dummy"; 204b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 205b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 206b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangint DummyDevice::getType() const 207b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 2083540d325335005c6761c3557679201ae29f7c1d0Michael Lentine return mDisp; 209b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 210b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 211b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangvoid DummyDevice::onVsync(int64_t timestamp) 212b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 2139f04a62c6e8c91ebeb199986ae11fc5107492df2Lei Zhang if (!mConnected) 2149f04a62c6e8c91ebeb199986ae11fc5107492df2Lei Zhang return; 2159f04a62c6e8c91ebeb199986ae11fc5107492df2Lei Zhang 2163540d325335005c6761c3557679201ae29f7c1d0Michael Lentine mHwc.vsync(mDisp, timestamp); 217b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 218b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 219b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangvoid DummyDevice::dump(Dump& d) 220b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 221b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang d.append("-------------------------------------------------------------\n"); 222b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang d.append("Device Name: %s (%s)\n", mName, 223b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mConnected ? "connected" : "disconnected"); 224b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 225b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 226b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhangvoid DummyDevice::deinitialize() 227b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang{ 228b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang DEINIT_AND_DELETE_OBJ(mVsyncObserver); 229b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang mInitialized = false; 230b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} 231b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang 232452fbc109a9c585737bcac18f19aff40574c3d79Jim Bishbool DummyDevice::setPowerMode(int /*mode*/) 233452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish{ 234452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish return true; 235452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish} 236452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish 237452fbc109a9c585737bcac18f19aff40574c3d79Jim Bishint DummyDevice::getActiveConfig() 238452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish{ 239452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish return 0; 240452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish} 241452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish 242452fbc109a9c585737bcac18f19aff40574c3d79Jim Bishbool DummyDevice::setActiveConfig(int /*index*/) 243452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish{ 244452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish return false; 245452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish} 246452fbc109a9c585737bcac18f19aff40574c3d79Jim Bish 247b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} // namespace intel 248b55fbe96ff6c2b98374d2137c8e91c0ca357fdb2Lei Zhang} // namespace android 249