• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "buffer_queue_consumer.h"
17 
18 namespace OHOS {
BufferQueueConsumer(sptr<BufferQueue> & bufferQueue)19 BufferQueueConsumer::BufferQueueConsumer(sptr<BufferQueue>& bufferQueue)
20 {
21     bufferQueue_ = bufferQueue;
22     if (bufferQueue_ != nullptr) {
23         bufferQueue_->GetName(name_);
24     }
25 }
26 
~BufferQueueConsumer()27 BufferQueueConsumer::~BufferQueueConsumer()
28 {
29 }
30 
AcquireBuffer(sptr<SurfaceBuffer> & buffer,sptr<SyncFence> & fence,int64_t & timestamp,std::vector<Rect> & damages)31 GSError BufferQueueConsumer::AcquireBuffer(sptr<SurfaceBuffer>& buffer, sptr<SyncFence>& fence,
32     int64_t &timestamp, std::vector<Rect> &damages)
33 {
34     if (bufferQueue_ == nullptr) {
35         return GSERROR_INVALID_ARGUMENTS;
36     }
37     return bufferQueue_->AcquireBuffer(buffer, fence, timestamp, damages);
38 }
39 
ReleaseBuffer(sptr<SurfaceBuffer> & buffer,const sptr<SyncFence> & fence)40 GSError BufferQueueConsumer::ReleaseBuffer(sptr<SurfaceBuffer>& buffer, const sptr<SyncFence>& fence)
41 {
42     if (bufferQueue_ == nullptr) {
43         return GSERROR_INVALID_ARGUMENTS;
44     }
45     return bufferQueue_->ReleaseBuffer(buffer, fence);
46 }
47 
AttachBuffer(sptr<SurfaceBuffer> & buffer)48 GSError BufferQueueConsumer::AttachBuffer(sptr<SurfaceBuffer>& buffer)
49 {
50     int32_t timeOut = 0;
51     return AttachBuffer(buffer, timeOut);
52 }
53 
AttachBuffer(sptr<SurfaceBuffer> & buffer,int32_t timeOut)54 GSError BufferQueueConsumer::AttachBuffer(sptr<SurfaceBuffer>& buffer, int32_t timeOut)
55 {
56     if (bufferQueue_ == nullptr) {
57         return GSERROR_INVALID_ARGUMENTS;
58     }
59     return bufferQueue_->AttachBuffer(buffer, timeOut);
60 }
61 
DetachBuffer(sptr<SurfaceBuffer> & buffer)62 GSError BufferQueueConsumer::DetachBuffer(sptr<SurfaceBuffer>& buffer)
63 {
64     if (bufferQueue_ == nullptr) {
65         return GSERROR_INVALID_ARGUMENTS;
66     }
67     return bufferQueue_->DetachBuffer(buffer);
68 }
69 
RegisterSurfaceDelegator(sptr<IRemoteObject> client,sptr<Surface> cSurface)70 GSError BufferQueueConsumer::RegisterSurfaceDelegator(sptr<IRemoteObject> client, sptr<Surface> cSurface)
71 {
72     if (bufferQueue_ == nullptr) {
73         BLOGFE("RegisterSurfaceDelegator failed for nullptr bufferqueue.");
74         return GSERROR_INVALID_ARGUMENTS;
75     }
76     return bufferQueue_->RegisterSurfaceDelegator(client, cSurface);
77 }
78 
QueryIfBufferAvailable()79 bool BufferQueueConsumer::QueryIfBufferAvailable()
80 {
81     if (bufferQueue_ == nullptr) {
82         return false;
83     }
84     return bufferQueue_->QueryIfBufferAvailable();
85 }
86 
RegisterConsumerListener(sptr<IBufferConsumerListener> & listener)87 GSError BufferQueueConsumer::RegisterConsumerListener(sptr<IBufferConsumerListener>& listener)
88 {
89     if (bufferQueue_ == nullptr) {
90         return GSERROR_INVALID_ARGUMENTS;
91     }
92     return bufferQueue_->RegisterConsumerListener(listener);
93 }
94 
RegisterConsumerListener(IBufferConsumerListenerClazz * listener)95 GSError BufferQueueConsumer::RegisterConsumerListener(IBufferConsumerListenerClazz *listener)
96 {
97     if (bufferQueue_ == nullptr) {
98         return GSERROR_INVALID_ARGUMENTS;
99     }
100     return bufferQueue_->RegisterConsumerListener(listener);
101 }
102 
RegisterReleaseListener(OnReleaseFunc func)103 GSError BufferQueueConsumer::RegisterReleaseListener(OnReleaseFunc func)
104 {
105     if (bufferQueue_ == nullptr) {
106         return GSERROR_INVALID_ARGUMENTS;
107     }
108     return bufferQueue_->RegisterReleaseListener(func);
109 }
110 
RegisterDeleteBufferListener(OnDeleteBufferFunc func,bool isForUniRedraw)111 GSError BufferQueueConsumer::RegisterDeleteBufferListener(OnDeleteBufferFunc func, bool isForUniRedraw)
112 {
113     if (bufferQueue_ == nullptr) {
114         return GSERROR_INVALID_ARGUMENTS;
115     }
116     return bufferQueue_->RegisterDeleteBufferListener(func, isForUniRedraw);
117 }
118 
UnregisterConsumerListener()119 GSError BufferQueueConsumer::UnregisterConsumerListener()
120 {
121     if (bufferQueue_ == nullptr) {
122         return GSERROR_INVALID_ARGUMENTS;
123     }
124     return bufferQueue_->UnregisterConsumerListener();
125 }
126 
SetDefaultWidthAndHeight(int32_t width,int32_t height)127 GSError BufferQueueConsumer::SetDefaultWidthAndHeight(int32_t width, int32_t height)
128 {
129     if (bufferQueue_ == nullptr) {
130         return GSERROR_INVALID_ARGUMENTS;
131     }
132     return bufferQueue_->SetDefaultWidthAndHeight(width, height);
133 }
134 
SetDefaultUsage(uint32_t usage)135 GSError BufferQueueConsumer::SetDefaultUsage(uint32_t usage)
136 {
137     if (bufferQueue_ == nullptr) {
138         return GSERROR_INVALID_ARGUMENTS;
139     }
140     return bufferQueue_->SetDefaultUsage(usage);
141 }
142 
Dump(std::string & result) const143 void BufferQueueConsumer::Dump(std::string &result) const
144 {
145     if (bufferQueue_ == nullptr) {
146         return;
147     }
148     return bufferQueue_->Dump(result);
149 }
150 
GetTransform() const151 GraphicTransformType BufferQueueConsumer::GetTransform() const
152 {
153     if (bufferQueue_ == nullptr) {
154         return GraphicTransformType::GRAPHIC_ROTATE_BUTT;
155     }
156     return bufferQueue_->GetTransform();
157 }
158 
GetScalingMode(uint32_t sequence,ScalingMode & scalingMode) const159 GSError BufferQueueConsumer::GetScalingMode(uint32_t sequence, ScalingMode &scalingMode) const
160 {
161     if (bufferQueue_ == nullptr) {
162         return GSERROR_INVALID_ARGUMENTS;
163     }
164     return bufferQueue_->GetScalingMode(sequence, scalingMode);
165 }
166 
QueryMetaDataType(uint32_t sequence,HDRMetaDataType & type) const167 GSError BufferQueueConsumer::QueryMetaDataType(uint32_t sequence, HDRMetaDataType &type) const
168 {
169     if (bufferQueue_ == nullptr) {
170         return GSERROR_INVALID_ARGUMENTS;
171     }
172     return bufferQueue_->QueryMetaDataType(sequence, type);
173 }
174 
GetMetaData(uint32_t sequence,std::vector<GraphicHDRMetaData> & metaData) const175 GSError BufferQueueConsumer::GetMetaData(uint32_t sequence, std::vector<GraphicHDRMetaData> &metaData) const
176 {
177     if (bufferQueue_ == nullptr) {
178         return GSERROR_INVALID_ARGUMENTS;
179     }
180     return bufferQueue_->GetMetaData(sequence, metaData);
181 }
182 
GetMetaDataSet(uint32_t sequence,GraphicHDRMetadataKey & key,std::vector<uint8_t> & metaData) const183 GSError BufferQueueConsumer::GetMetaDataSet(uint32_t sequence, GraphicHDRMetadataKey &key,
184                                             std::vector<uint8_t> &metaData) const
185 {
186     if (bufferQueue_ == nullptr) {
187         return GSERROR_INVALID_ARGUMENTS;
188     }
189     return bufferQueue_->GetMetaDataSet(sequence, key, metaData);
190 }
191 
GetTunnelHandle() const192 sptr<SurfaceTunnelHandle> BufferQueueConsumer::GetTunnelHandle() const
193 {
194     if (bufferQueue_ == nullptr) {
195         return nullptr;
196     }
197     return bufferQueue_->GetTunnelHandle();
198 }
199 
SetPresentTimestamp(uint32_t sequence,const GraphicPresentTimestamp & timestamp)200 GSError BufferQueueConsumer::SetPresentTimestamp(uint32_t sequence, const GraphicPresentTimestamp &timestamp)
201 {
202     if (bufferQueue_ == nullptr) {
203         return GSERROR_INVALID_ARGUMENTS;
204     }
205     return bufferQueue_->SetPresentTimestamp(sequence, timestamp);
206 }
207 
GetStatus() const208 bool BufferQueueConsumer::GetStatus() const
209 {
210     return bufferQueue_->GetStatus();
211 }
212 
SetStatus(bool status)213 void BufferQueueConsumer::SetStatus(bool status)
214 {
215     bufferQueue_->SetStatus(status);
216 }
217 
OnConsumerDied()218 GSError BufferQueueConsumer::OnConsumerDied()
219 {
220     if (bufferQueue_ == nullptr) {
221         return GSERROR_INVALID_ARGUMENTS;
222     }
223     return bufferQueue_->OnConsumerDied();
224 }
225 
GoBackground()226 GSError BufferQueueConsumer::GoBackground()
227 {
228     if (bufferQueue_ == nullptr) {
229         return GSERROR_INVALID_ARGUMENTS;
230     }
231     return bufferQueue_->GoBackground();
232 }
233 } // namespace OHOS
234