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