• 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     if (bufferQueue_ == nullptr) {
51         return GSERROR_INVALID_ARGUMENTS;
52     }
53     return bufferQueue_->AttachBuffer(buffer);
54 }
55 
DetachBuffer(sptr<SurfaceBuffer> & buffer)56 GSError BufferQueueConsumer::DetachBuffer(sptr<SurfaceBuffer>& buffer)
57 {
58     if (bufferQueue_ == nullptr) {
59         return GSERROR_INVALID_ARGUMENTS;
60     }
61     return bufferQueue_->DetachBuffer(buffer);
62 }
63 
QueryIfBufferAvailable()64 bool BufferQueueConsumer::QueryIfBufferAvailable()
65 {
66     if (bufferQueue_ == nullptr) {
67         return false;
68     }
69     return bufferQueue_->QueryIfBufferAvailable();
70 }
71 
RegisterConsumerListener(sptr<IBufferConsumerListener> & listener)72 GSError BufferQueueConsumer::RegisterConsumerListener(sptr<IBufferConsumerListener>& listener)
73 {
74     if (bufferQueue_ == nullptr) {
75         return GSERROR_INVALID_ARGUMENTS;
76     }
77     return bufferQueue_->RegisterConsumerListener(listener);
78 }
79 
RegisterConsumerListener(IBufferConsumerListenerClazz * listener)80 GSError BufferQueueConsumer::RegisterConsumerListener(IBufferConsumerListenerClazz *listener)
81 {
82     if (bufferQueue_ == nullptr) {
83         return GSERROR_INVALID_ARGUMENTS;
84     }
85     return bufferQueue_->RegisterConsumerListener(listener);
86 }
87 
RegisterReleaseListener(OnReleaseFunc func)88 GSError BufferQueueConsumer::RegisterReleaseListener(OnReleaseFunc func)
89 {
90     if (bufferQueue_ == nullptr) {
91         return GSERROR_INVALID_ARGUMENTS;
92     }
93     return bufferQueue_->RegisterReleaseListener(func);
94 }
95 
RegisterDeleteBufferListener(OnDeleteBufferFunc func,bool isForUniRedraw)96 GSError BufferQueueConsumer::RegisterDeleteBufferListener(OnDeleteBufferFunc func, bool isForUniRedraw)
97 {
98     if (bufferQueue_ == nullptr) {
99         return GSERROR_INVALID_ARGUMENTS;
100     }
101     return bufferQueue_->RegisterDeleteBufferListener(func, isForUniRedraw);
102 }
103 
UnregisterConsumerListener()104 GSError BufferQueueConsumer::UnregisterConsumerListener()
105 {
106     if (bufferQueue_ == nullptr) {
107         return GSERROR_INVALID_ARGUMENTS;
108     }
109     return bufferQueue_->UnregisterConsumerListener();
110 }
111 
SetDefaultWidthAndHeight(int32_t width,int32_t height)112 GSError BufferQueueConsumer::SetDefaultWidthAndHeight(int32_t width, int32_t height)
113 {
114     if (bufferQueue_ == nullptr) {
115         return GSERROR_INVALID_ARGUMENTS;
116     }
117     return bufferQueue_->SetDefaultWidthAndHeight(width, height);
118 }
119 
SetDefaultUsage(uint32_t usage)120 GSError BufferQueueConsumer::SetDefaultUsage(uint32_t usage)
121 {
122     if (bufferQueue_ == nullptr) {
123         return GSERROR_INVALID_ARGUMENTS;
124     }
125     return bufferQueue_->SetDefaultUsage(usage);
126 }
127 
Dump(std::string & result) const128 void BufferQueueConsumer::Dump(std::string &result) const
129 {
130     if (bufferQueue_ == nullptr) {
131         return;
132     }
133     return bufferQueue_->Dump(result);
134 }
135 
GetTransform() const136 GraphicTransformType BufferQueueConsumer::GetTransform() const
137 {
138     if (bufferQueue_ == nullptr) {
139         return GraphicTransformType::GRAPHIC_ROTATE_BUTT;
140     }
141     return bufferQueue_->GetTransform();
142 }
143 
GetScalingMode(uint32_t sequence,ScalingMode & scalingMode) const144 GSError BufferQueueConsumer::GetScalingMode(uint32_t sequence, ScalingMode &scalingMode) const
145 {
146     if (bufferQueue_ == nullptr) {
147         return GSERROR_INVALID_ARGUMENTS;
148     }
149     return bufferQueue_->GetScalingMode(sequence, scalingMode);
150 }
151 
QueryMetaDataType(uint32_t sequence,HDRMetaDataType & type) const152 GSError BufferQueueConsumer::QueryMetaDataType(uint32_t sequence, HDRMetaDataType &type) const
153 {
154     if (bufferQueue_ == nullptr) {
155         return GSERROR_INVALID_ARGUMENTS;
156     }
157     return bufferQueue_->QueryMetaDataType(sequence, type);
158 }
159 
GetMetaData(uint32_t sequence,std::vector<GraphicHDRMetaData> & metaData) const160 GSError BufferQueueConsumer::GetMetaData(uint32_t sequence, std::vector<GraphicHDRMetaData> &metaData) const
161 {
162     if (bufferQueue_ == nullptr) {
163         return GSERROR_INVALID_ARGUMENTS;
164     }
165     return bufferQueue_->GetMetaData(sequence, metaData);
166 }
167 
GetMetaDataSet(uint32_t sequence,GraphicHDRMetadataKey & key,std::vector<uint8_t> & metaData) const168 GSError BufferQueueConsumer::GetMetaDataSet(uint32_t sequence, GraphicHDRMetadataKey &key,
169                                             std::vector<uint8_t> &metaData) const
170 {
171     if (bufferQueue_ == nullptr) {
172         return GSERROR_INVALID_ARGUMENTS;
173     }
174     return bufferQueue_->GetMetaDataSet(sequence, key, metaData);
175 }
176 
GetTunnelHandle() const177 sptr<SurfaceTunnelHandle> BufferQueueConsumer::GetTunnelHandle() const
178 {
179     if (bufferQueue_ == nullptr) {
180         return nullptr;
181     }
182     return bufferQueue_->GetTunnelHandle();
183 }
184 
SetPresentTimestamp(uint32_t sequence,const GraphicPresentTimestamp & timestamp)185 GSError BufferQueueConsumer::SetPresentTimestamp(uint32_t sequence, const GraphicPresentTimestamp &timestamp)
186 {
187     if (bufferQueue_ == nullptr) {
188         return GSERROR_INVALID_ARGUMENTS;
189     }
190     return bufferQueue_->SetPresentTimestamp(sequence, timestamp);
191 }
192 
GetStatus() const193 bool BufferQueueConsumer::GetStatus() const
194 {
195     return bufferQueue_->GetStatus();
196 }
197 
SetStatus(bool status)198 void BufferQueueConsumer::SetStatus(bool status)
199 {
200     bufferQueue_->SetStatus(status);
201 }
202 
OnConsumerDied()203 GSError BufferQueueConsumer::OnConsumerDied()
204 {
205     if (bufferQueue_ == nullptr) {
206         return GSERROR_INVALID_ARGUMENTS;
207     }
208     return bufferQueue_->OnConsumerDied();
209 }
210 
GoBackground()211 GSError BufferQueueConsumer::GoBackground()
212 {
213     if (bufferQueue_ == nullptr) {
214         return GSERROR_INVALID_ARGUMENTS;
215     }
216     return bufferQueue_->GoBackground();
217 }
218 } // namespace OHOS
219