blob: c9366a8495461794186dc8cffdb0f2fddfa0a3c5 [file] [log] [blame]
Ady Abraham5f9f9a42020-01-02 14:28:39 -08001/*
2 * Copyright 2020 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <composer-vts/2.4/GraphicsComposerCallback.h>
18
19namespace android::hardware::graphics::composer::V2_4::vts {
20
21void GraphicsComposerCallback::setVsyncAllowed(bool allowed) {
22 std::lock_guard<std::mutex> lock(mMutex);
23 mVsyncAllowed = allowed;
24}
25
26std::vector<Display> GraphicsComposerCallback::getDisplays() const {
27 std::lock_guard<std::mutex> lock(mMutex);
28 return std::vector<Display>(mDisplays.begin(), mDisplays.end());
29}
30
31int32_t GraphicsComposerCallback::getInvalidHotplugCount() const {
32 std::lock_guard<std::mutex> lock(mMutex);
33 return mInvalidHotplugCount;
34}
35
36int32_t GraphicsComposerCallback::getInvalidRefreshCount() const {
37 std::lock_guard<std::mutex> lock(mMutex);
38 return mInvalidRefreshCount;
39}
40
41int32_t GraphicsComposerCallback::getInvalidVsyncCount() const {
42 std::lock_guard<std::mutex> lock(mMutex);
43 return mInvalidVsyncCount;
44}
45
46int32_t GraphicsComposerCallback::getInvalidVsync_2_4Count() const {
47 std::lock_guard<std::mutex> lock(mMutex);
48 return mInvalidVsync_2_4Count;
49}
50
51int32_t GraphicsComposerCallback::getInvalidVsyncPeriodChangeCount() const {
52 std::lock_guard<std::mutex> lock(mMutex);
53 return mInvalidVsyncPeriodChangeCount;
54}
55
56int32_t GraphicsComposerCallback::getInvalidSeamlessPossibleCount() const {
57 std::lock_guard<std::mutex> lock(mMutex);
58 return mInvalidSeamlessPossibleCount;
59}
60
61std::optional<VsyncPeriodChangeTimeline>
62GraphicsComposerCallback::takeLastVsyncPeriodChangeTimeline() {
63 std::lock_guard<std::mutex> lock(mMutex);
64
65 std::optional<VsyncPeriodChangeTimeline> ret;
66 ret.swap(mTimeline);
67
68 return ret;
69}
70
71Return<void> GraphicsComposerCallback::onHotplug(Display display, Connection connection) {
72 std::lock_guard<std::mutex> lock(mMutex);
73
74 if (connection == Connection::CONNECTED) {
75 if (!mDisplays.insert(display).second) {
76 mInvalidHotplugCount++;
77 }
78 } else if (connection == Connection::DISCONNECTED) {
79 if (!mDisplays.erase(display)) {
80 mInvalidHotplugCount++;
81 }
82 }
83
84 return Void();
85}
86
87Return<void> GraphicsComposerCallback::onRefresh(Display display) {
88 std::lock_guard<std::mutex> lock(mMutex);
89
90 if (mDisplays.count(display) == 0) {
91 mInvalidRefreshCount++;
92 }
93
94 return Void();
95}
96
97Return<void> GraphicsComposerCallback::onVsync(Display, int64_t) {
98 std::lock_guard<std::mutex> lock(mMutex);
99
100 // On composer 2.4, onVsync is not expected at all
101 mInvalidVsyncCount++;
102
103 return Void();
104}
105
106Return<void> GraphicsComposerCallback::onVsync_2_4(Display display, int64_t, VsyncPeriodNanos) {
107 std::lock_guard<std::mutex> lock(mMutex);
108
109 if (!mVsyncAllowed || mDisplays.count(display) == 0) {
110 mInvalidVsync_2_4Count++;
111 }
112
113 return Void();
114}
115
116Return<void> GraphicsComposerCallback::onVsyncPeriodTimingChanged(
117 Display display, const VsyncPeriodChangeTimeline& updatedTimeline) {
118 std::lock_guard<std::mutex> lock(mMutex);
119
120 if (mDisplays.count(display) == 0) {
121 mInvalidVsyncPeriodChangeCount++;
122 }
123
124 mTimeline = updatedTimeline;
125
126 return Void();
127}
128
129Return<void> GraphicsComposerCallback::onSeamlessPossible(Display) {
130 std::lock_guard<std::mutex> lock(mMutex);
131
132 mInvalidSeamlessPossibleCount++;
133
134 return Void();
135}
136
137} // namespace android::hardware::graphics::composer::V2_4::vts