• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2025 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 #ifndef INTERFACES_INNERKITS_SURFACE_SURFACE_H
17 #define INTERFACES_INNERKITS_SURFACE_SURFACE_H
18 
19 #include <refbase.h>
20 
21 #include "ibuffer_consumer_listener.h"
22 #include "ibuffer_producer.h"
23 #include "surface_buffer.h"
24 #include "surface_type.h"
25 #include "surface_tunnel_handle.h"
26 
27 namespace OHOS {
28 class Surface : public RefBase {
29 public:
30     static sptr<Surface> CreateSurfaceAsConsumer(std::string name = "noname");
31     static sptr<Surface> CreateSurfaceAsProducer(sptr<IBufferProducer>& producer);
32 
33     virtual ~Surface() = default;
34 
GetProducerInitInfo(ProducerInitInfo & info)35     virtual GSError GetProducerInitInfo(ProducerInitInfo &info)
36     {
37         (void)info;
38         return GSERROR_NOT_SUPPORT;
39     }
40     virtual bool IsConsumer() const = 0;
41     virtual sptr<IBufferProducer> GetProducer() const = 0;
42 
RequestBuffer(sptr<SurfaceBuffer> & buffer,int32_t & fence,BufferRequestConfig & config)43     virtual GSError RequestBuffer(sptr<SurfaceBuffer>& buffer,
44                                   int32_t &fence, BufferRequestConfig &config)
45     {
46         (void)buffer;
47         (void)fence;
48         (void)config;
49         return GSERROR_NOT_SUPPORT;
50     }
51 
RequestBuffers(std::vector<sptr<SurfaceBuffer>> & buffers,std::vector<sptr<SyncFence>> & fences,BufferRequestConfig & config)52     virtual GSError RequestBuffers(std::vector<sptr<SurfaceBuffer>> &buffers,
53         std::vector<sptr<SyncFence>> &fences, BufferRequestConfig &config)
54     {
55         (void)buffers;
56         (void)fences;
57         (void)config;
58         return GSERROR_NOT_SUPPORT;
59     }
60 
CancelBuffer(sptr<SurfaceBuffer> & buffer)61     virtual GSError CancelBuffer(sptr<SurfaceBuffer>& buffer)
62     {
63         (void)buffer;
64         return GSERROR_NOT_SUPPORT;
65     }
66 
FlushBuffer(sptr<SurfaceBuffer> & buffer,int32_t fence,BufferFlushConfig & config)67     virtual GSError FlushBuffer(sptr<SurfaceBuffer>& buffer,
68                                 int32_t fence, BufferFlushConfig &config)
69     {
70         (void)buffer;
71         (void)fence;
72         (void)config;
73         return GSERROR_NOT_SUPPORT;
74     }
75 
AcquireBuffer(sptr<SurfaceBuffer> & buffer,int32_t & fence,int64_t & timestamp,Rect & damage)76     virtual GSError AcquireBuffer(sptr<SurfaceBuffer>& buffer, int32_t &fence,
77                                   int64_t &timestamp, Rect &damage)
78     {
79         (void)buffer;
80         (void)fence;
81         (void)timestamp;
82         (void)damage;
83         return GSERROR_NOT_SUPPORT;
84     }
ReleaseBuffer(sptr<SurfaceBuffer> & buffer,int32_t fence)85     virtual GSError ReleaseBuffer(sptr<SurfaceBuffer>& buffer, int32_t fence)
86     {
87         (void)buffer;
88         (void)fence;
89         return GSERROR_NOT_SUPPORT;
90     }
91 
RequestBuffer(sptr<SurfaceBuffer> & buffer,sptr<SyncFence> & fence,BufferRequestConfig & config)92     virtual GSError RequestBuffer(sptr<SurfaceBuffer>& buffer,
93                                   sptr<SyncFence>& fence, BufferRequestConfig &config)
94     {
95         (void)buffer;
96         (void)fence;
97         (void)config;
98         return GSERROR_NOT_SUPPORT;
99     }
FlushBuffer(sptr<SurfaceBuffer> & buffer,const sptr<SyncFence> & fence,BufferFlushConfig & config)100     virtual GSError FlushBuffer(sptr<SurfaceBuffer>& buffer,
101                                 const sptr<SyncFence>& fence, BufferFlushConfig &config)
102     {
103         (void)buffer;
104         (void)fence;
105         (void)config;
106         return GSERROR_NOT_SUPPORT;
107     }
AcquireBuffer(sptr<SurfaceBuffer> & buffer,sptr<SyncFence> & fence,int64_t & timestamp,Rect & damage)108     virtual GSError AcquireBuffer(sptr<SurfaceBuffer>& buffer, sptr<SyncFence>& fence,
109                                   int64_t &timestamp, Rect &damage)
110     {
111         (void)buffer;
112         (void)fence;
113         (void)timestamp;
114         (void)damage;
115         return GSERROR_NOT_SUPPORT;
116     }
SetLppShareFd(int fd,bool state)117     virtual GSError SetLppShareFd(int fd, bool state)
118     {
119         (void)fd;
120         (void)state;
121         return GSERROR_NOT_SUPPORT;
122     }
ReleaseBuffer(sptr<SurfaceBuffer> & buffer,const sptr<SyncFence> & fence)123     virtual GSError ReleaseBuffer(sptr<SurfaceBuffer>& buffer, const sptr<SyncFence>& fence)
124     {
125         (void)buffer;
126         (void)fence;
127         return GSERROR_NOT_SUPPORT;
128     }
129 
130     virtual GSError AttachBuffer(sptr<SurfaceBuffer>& buffer) = 0;
131 
132     virtual GSError DetachBuffer(sptr<SurfaceBuffer>& buffer) = 0;
133 
134     virtual uint32_t GetQueueSize() = 0;
135     virtual GSError SetQueueSize(uint32_t queueSize) = 0;
136 
SetDefaultWidthAndHeight(int32_t width,int32_t height)137     virtual GSError SetDefaultWidthAndHeight(int32_t width, int32_t height)
138     {
139         (void)width;
140         (void)height;
141         return GSERROR_NOT_SUPPORT;
142     }
143     virtual int32_t GetDefaultWidth() = 0;
144     virtual int32_t GetDefaultHeight() = 0;
145 
146     virtual GSError SetDefaultUsage(uint64_t usage) = 0;
147     virtual uint64_t GetDefaultUsage() = 0;
148 
149     virtual GSError SetUserData(const std::string &key, const std::string &val) = 0;
150     virtual std::string GetUserData(const std::string &key) = 0;
151 
152     virtual const std::string& GetName() = 0;
153     virtual uint64_t GetUniqueId() const = 0;
154 
RegisterConsumerListener(sptr<IBufferConsumerListener> & listener)155     virtual GSError RegisterConsumerListener(sptr<IBufferConsumerListener>& listener)
156     {
157         (void)listener;
158         return GSERROR_NOT_SUPPORT;
159     }
RegisterConsumerListener(IBufferConsumerListenerClazz * listener)160     virtual GSError RegisterConsumerListener(IBufferConsumerListenerClazz *listener)
161     {
162         (void)listener;
163         return GSERROR_NOT_SUPPORT;
164     }
RegisterReleaseListener(OnReleaseFunc func)165     virtual GSError RegisterReleaseListener(OnReleaseFunc func)
166     {
167         (void)func;
168         return GSERROR_NOT_SUPPORT;
169     }
170     virtual GSError RegisterDeleteBufferListener(OnDeleteBufferFunc func, bool isForUniRedraw = false)
171     {
172         (void)func;
173         (void)isForUniRedraw;
174         return GSERROR_NOT_SUPPORT;
175     }
UnregisterConsumerListener()176     virtual GSError UnregisterConsumerListener()
177     {
178         return GSERROR_NOT_SUPPORT;
179     }
180 
181     // Call carefully. This interface will empty all caches of the current process
182     virtual GSError CleanCache(bool cleanAll = false)
183     {
184         (void)cleanAll;
185         return GSERROR_NOT_SUPPORT;
186     }
GoBackground()187     virtual GSError GoBackground()
188     {
189         return GSERROR_NOT_SUPPORT;
190     }
SetTransform(GraphicTransformType transform)191     virtual GSError SetTransform(GraphicTransformType transform)
192     {
193         (void)transform;
194         return GSERROR_NOT_SUPPORT;
195     }
GetTransform()196     virtual GraphicTransformType GetTransform() const
197     {
198         return GraphicTransformType::GRAPHIC_ROTATE_NONE;
199     }
Connect()200     virtual GSError Connect()
201     {
202         return GSERROR_NOT_SUPPORT;
203     }
Disconnect()204     virtual GSError Disconnect()
205     {
206         return GSERROR_NOT_SUPPORT;
207     }
SetScalingMode(uint32_t sequence,ScalingMode scalingMode)208     virtual GSError SetScalingMode(uint32_t sequence, ScalingMode scalingMode)
209     {
210         (void)sequence;
211         (void)scalingMode;
212         return GSERROR_NOT_SUPPORT;
213     }
GetScalingMode(uint32_t sequence,ScalingMode & scalingMode)214     virtual GSError GetScalingMode(uint32_t sequence, ScalingMode &scalingMode)
215     {
216         (void)sequence;
217         (void)scalingMode;
218         return GSERROR_NOT_SUPPORT;
219     }
220     virtual GSError SetMetaData(uint32_t sequence, const std::vector<GraphicHDRMetaData> &metaData) = 0;
221     virtual GSError SetMetaDataSet(uint32_t sequence, GraphicHDRMetadataKey key,
222                                    const std::vector<uint8_t> &metaData) = 0;
QueryMetaDataType(uint32_t sequence,HDRMetaDataType & type)223     virtual GSError QueryMetaDataType(uint32_t sequence, HDRMetaDataType &type) const
224     {
225         (void)sequence;
226         (void)type;
227         return GSERROR_NOT_SUPPORT;
228     }
GetMetaData(uint32_t sequence,std::vector<GraphicHDRMetaData> & metaData)229     virtual GSError GetMetaData(uint32_t sequence, std::vector<GraphicHDRMetaData> &metaData) const
230     {
231         (void)sequence;
232         (void)metaData;
233         return GSERROR_NOT_SUPPORT;
234     }
GetMetaDataSet(uint32_t sequence,GraphicHDRMetadataKey & key,std::vector<uint8_t> & metaData)235     virtual GSError GetMetaDataSet(uint32_t sequence, GraphicHDRMetadataKey &key,
236                                    std::vector<uint8_t> &metaData) const
237     {
238         (void)sequence;
239         (void)key;
240         (void)metaData;
241         return GSERROR_NOT_SUPPORT;
242     }
243     virtual GSError SetTunnelHandle(const GraphicExtDataHandle *handle) = 0;
GetTunnelHandle()244     virtual sptr<SurfaceTunnelHandle> GetTunnelHandle() const
245     {
246         return nullptr;
247     }
SetPresentTimestamp(uint32_t sequence,const GraphicPresentTimestamp & timestamp)248     virtual GSError SetPresentTimestamp(uint32_t sequence, const GraphicPresentTimestamp &timestamp)
249     {
250         (void)sequence;
251         (void)timestamp;
252         return GSERROR_NOT_SUPPORT;
253     }
GetPresentTimestamp(uint32_t sequence,GraphicPresentTimestampType type,int64_t & time)254     virtual GSError GetPresentTimestamp(uint32_t sequence, GraphicPresentTimestampType type,
255                                         int64_t &time) const
256     {
257         (void)sequence;
258         (void)type;
259         (void)time;
260         return GSERROR_NOT_SUPPORT;
261     }
262 
263     virtual void Dump(std::string &result) const = 0;
264 
GetDefaultFormat()265     virtual int32_t GetDefaultFormat()
266     {
267         return 0;
268     }
SetDefaultFormat(int32_t format)269     virtual GSError SetDefaultFormat(int32_t format)
270     {
271         (void)format;
272         return GSERROR_NOT_SUPPORT;
273     }
GetDefaultColorGamut()274     virtual int32_t GetDefaultColorGamut()
275     {
276         return 0;
277     }
SetDefaultColorGamut(int32_t colorGamut)278     virtual GSError SetDefaultColorGamut(int32_t colorGamut)
279     {
280         (void)colorGamut;
281         return GSERROR_NOT_SUPPORT;
282     }
283 
GetNativeSurface()284     virtual sptr<NativeSurface> GetNativeSurface()
285     {
286         return nullptr;
287     }
288 
QueryIfBufferAvailable()289     virtual bool QueryIfBufferAvailable()
290     {
291         return false;
292     }
293     virtual GSError FlushBuffer(sptr<SurfaceBuffer>& buffer, const sptr<SyncFence>& fence,
294                                 BufferFlushConfigWithDamages &config, bool needLock = true)
295     {
296         (void)buffer;
297         (void)fence;
298         (void)config;
299         (void)needLock;
300         return GSERROR_NOT_SUPPORT;
301     }
FlushBuffers(const std::vector<sptr<SurfaceBuffer>> & buffers,const std::vector<sptr<SyncFence>> & fences,const std::vector<BufferFlushConfigWithDamages> & configs)302     virtual GSError FlushBuffers(const std::vector<sptr<SurfaceBuffer>> &buffers,
303         const std::vector<sptr<SyncFence>> &fences, const std::vector<BufferFlushConfigWithDamages> &configs)
304     {
305         (void)buffers;
306         (void)fences;
307         (void)configs;
308         return GSERROR_NOT_SUPPORT;
309     }
UnRegisterReleaseListener()310     virtual GSError UnRegisterReleaseListener()
311     {
312         return GSERROR_NOT_SUPPORT;
313     }
UnRegisterReleaseListenerBackup()314     virtual GSError UnRegisterReleaseListenerBackup()
315     {
316         return GSERROR_NOT_SUPPORT;
317     }
SetWptrNativeWindowToPSurface(void * nativeWindow)318     virtual GSError SetWptrNativeWindowToPSurface(void* nativeWindow)
319     {
320         (void)nativeWindow;
321         return GSERROR_NOT_SUPPORT;
322     }
323     virtual GSError GetLastFlushedBuffer(sptr<SurfaceBuffer>& buffer,
324         sptr<SyncFence>& fence, float matrix[16], bool isUseNewMatrix = false)
325     {
326         (void)buffer;
327         (void)fence;
328         (void)matrix;
329         (void)isUseNewMatrix;
330         return GSERROR_NOT_SUPPORT;
331     }
332     virtual GSError AttachBuffer(sptr<SurfaceBuffer>& buffer, int32_t timeOut) = 0;
333     virtual GSError RegisterSurfaceDelegator(sptr<IRemoteObject> client) = 0;
RegisterReleaseListener(OnReleaseFuncWithFence func)334     virtual GSError RegisterReleaseListener(OnReleaseFuncWithFence func)
335     {
336         (void)func;
337         return GSERROR_NOT_SUPPORT;
338     }
RegisterReleaseListenerBackup(OnReleaseFuncWithFence func)339     virtual GSError RegisterReleaseListenerBackup(OnReleaseFuncWithFence func)
340     {
341         (void)func;
342         return GSERROR_NOT_SUPPORT;
343     }
RegisterUserDataChangeListener(const std::string & funcName,OnUserDataChangeFunc func)344     virtual GSError RegisterUserDataChangeListener(const std::string &funcName, OnUserDataChangeFunc func)
345     {
346         (void)funcName;
347         (void)func;
348         return GSERROR_NOT_SUPPORT;
349     }
UnRegisterUserDataChangeListener(const std::string & funcName)350     virtual GSError UnRegisterUserDataChangeListener(const std::string &funcName)
351     {
352         (void)funcName;
353         return GSERROR_NOT_SUPPORT;
354     }
ClearUserDataChangeListener()355     virtual GSError ClearUserDataChangeListener()
356     {
357         return GSERROR_NOT_SUPPORT;
358     }
359     virtual GSError AttachBufferToQueue(sptr<SurfaceBuffer> buffer) = 0;
360     virtual GSError DetachBufferFromQueue(sptr<SurfaceBuffer> buffer, bool isReserveSlot = false) = 0;
GetTransformHint()361     virtual GraphicTransformType GetTransformHint() const
362     {
363         return GraphicTransformType::GRAPHIC_ROTATE_NONE;
364     }
SetTransformHint(GraphicTransformType transformHint)365     virtual GSError SetTransformHint(GraphicTransformType transformHint)
366     {
367         (void)transformHint;
368         return GSERROR_NOT_SUPPORT;
369     }
SetBufferName(const std::string & name)370     virtual GSError SetBufferName(const std::string &name)
371     {
372         (void)name;
373         return GSERROR_NOT_SUPPORT;
374     }
375 
SetRequestWidthAndHeight(int32_t width,int32_t height)376     virtual void SetRequestWidthAndHeight(int32_t width, int32_t height)
377     {
378         (void)width;
379         (void)height;
380     }
GetRequestWidth()381     virtual int32_t GetRequestWidth()
382     {
383         return 0;
384     }
GetRequestHeight()385     virtual int32_t GetRequestHeight()
386     {
387         return 0;
388     }
389 
SetBufferHold(bool hold)390     virtual void SetBufferHold(bool hold)
391     {
392         (void)hold;
393     }
SetWindowConfig(const BufferRequestConfig & config)394     virtual void SetWindowConfig(const BufferRequestConfig& config)
395     {
396         (void)config;
397     }
SetWindowConfigWidthAndHeight(int32_t width,int32_t height)398     virtual void SetWindowConfigWidthAndHeight(int32_t width, int32_t height)
399     {
400         (void)width;
401         (void)height;
402     }
SetWindowConfigStride(int32_t stride)403     virtual void SetWindowConfigStride(int32_t stride)
404     {
405         (void)stride;
406     }
SetWindowConfigFormat(int32_t format)407     virtual void SetWindowConfigFormat(int32_t format)
408     {
409         (void)format;
410     }
SetWindowConfigUsage(uint64_t usage)411     virtual void SetWindowConfigUsage(uint64_t usage)
412     {
413         (void)usage;
414     }
SetWindowConfigTimeout(int32_t timeout)415     virtual void SetWindowConfigTimeout(int32_t timeout)
416     {
417         (void)timeout;
418     }
SetWindowConfigColorGamut(GraphicColorGamut colorGamut)419     virtual void SetWindowConfigColorGamut(GraphicColorGamut colorGamut)
420     {
421         (void)colorGamut;
422     }
SetWindowConfigTransform(GraphicTransformType transform)423     virtual void SetWindowConfigTransform(GraphicTransformType transform)
424     {
425         (void)transform;
426     }
GetWindowConfig()427     virtual BufferRequestConfig GetWindowConfig()
428     {
429         BufferRequestConfig config;
430         return config;
431     }
432     virtual GSError SetScalingMode(ScalingMode scalingMode) = 0;
SetSurfaceSourceType(OHSurfaceSource sourceType)433     virtual GSError SetSurfaceSourceType(OHSurfaceSource sourceType)
434     {
435         (void)sourceType;
436         return GSERROR_NOT_SUPPORT;
437     }
GetSurfaceSourceType()438     virtual OHSurfaceSource GetSurfaceSourceType() const
439     {
440         return OHSurfaceSource::OH_SURFACE_SOURCE_DEFAULT;
441     }
SetSurfaceAppFrameworkType(std::string appFrameworkType)442     virtual GSError SetSurfaceAppFrameworkType(std::string appFrameworkType)
443     {
444         (void)appFrameworkType;
445         return GSERROR_NOT_SUPPORT;
446     }
GetSurfaceAppFrameworkType()447     virtual std::string GetSurfaceAppFrameworkType() const
448     {
449         return std::string();
450     }
SetHdrWhitePointBrightness(float brightness)451     virtual GSError SetHdrWhitePointBrightness(float brightness)
452     {
453         (void)brightness;
454         return GSERROR_NOT_SUPPORT;
455     }
SetSdrWhitePointBrightness(float brightness)456     virtual GSError SetSdrWhitePointBrightness(float brightness)
457     {
458         (void)brightness;
459         return GSERROR_NOT_SUPPORT;
460     }
AcquireLastFlushedBuffer(sptr<SurfaceBuffer> & buffer,sptr<SyncFence> & fence,float matrix[16],uint32_t matrixSize,bool isUseNewMatrix)461     virtual GSError AcquireLastFlushedBuffer(sptr<SurfaceBuffer> &buffer, sptr<SyncFence> &fence,
462         float matrix[16], uint32_t matrixSize, bool isUseNewMatrix)
463     {
464         (void)buffer;
465         (void)fence;
466         (void)matrix;
467         (void)matrixSize;
468         (void)isUseNewMatrix;
469         return GSERROR_NOT_SUPPORT;
470     }
ReleaseLastFlushedBuffer(sptr<SurfaceBuffer> buffer)471     virtual GSError ReleaseLastFlushedBuffer(sptr<SurfaceBuffer> buffer)
472     {
473         (void)buffer;
474         return GSERROR_NOT_SUPPORT;
475     }
SetGlobalAlpha(int32_t alpha)476     virtual GSError SetGlobalAlpha(int32_t alpha)
477     {
478         (void)alpha;
479         return GSERROR_NOT_SUPPORT;
480     }
SetRequestBufferNoblockMode(bool noblock)481     virtual GSError SetRequestBufferNoblockMode(bool noblock)
482     {
483         (void)noblock;
484         return GSERROR_NOT_SUPPORT;
485     }
IsInHebcList()486     virtual bool IsInHebcList()
487     {
488         return false;
489     }
490     /**
491      * @brief Merge RequestBuffer and DetachBufferFromQueue function to reduce once ipc.
492      */
RequestAndDetachBuffer(sptr<SurfaceBuffer> & buffer,sptr<SyncFence> & fence,BufferRequestConfig & config)493     virtual GSError RequestAndDetachBuffer(sptr<SurfaceBuffer>& buffer, sptr<SyncFence>& fence,
494                                            BufferRequestConfig& config)
495     {
496         (void)buffer;
497         (void)fence;
498         (void)config;
499         return GSERROR_NOT_SUPPORT;
500     }
501 
502     /**
503      * @brief Merge AttachBufferToQueue And FlushBuffer function to reduce once ipc.
504      */
AttachAndFlushBuffer(sptr<SurfaceBuffer> & buffer,const sptr<SyncFence> & fence,BufferFlushConfig & config,bool needMap)505     virtual GSError AttachAndFlushBuffer(sptr<SurfaceBuffer>& buffer, const sptr<SyncFence>& fence,
506                                          BufferFlushConfig& config, bool needMap)
507     {
508         (void)buffer;
509         (void)fence;
510         (void)config;
511         (void)needMap;
512         return GSERROR_NOT_SUPPORT;
513     }
514     /**
515      * @brief Avoidance plan, which can be deleted later.
516      */
GetBufferCacheConfig(const sptr<SurfaceBuffer> & buffer,BufferRequestConfig & config)517     virtual GSError GetBufferCacheConfig(const sptr<SurfaceBuffer>& buffer, BufferRequestConfig& config)
518     {
519         (void)buffer;
520         (void)config;
521         return GSERROR_NOT_SUPPORT;
522     }
GetCycleBuffersNumber(uint32_t & cycleBuffersNumber)523     virtual GSError GetCycleBuffersNumber(uint32_t& cycleBuffersNumber)
524     {
525         (void)cycleBuffersNumber;
526         return SURFACE_ERROR_NOT_SUPPORT;
527     }
528     /**
529      * @brief Set the Rotating Buffers Number object for hdi create layer max cache count.
530      * @param cycleBuffersNumber scope : (0, 2 * maxQueueSize], and it should be actual number of cycle buffers.
531      */
SetCycleBuffersNumber(uint32_t cycleBuffersNumber)532     virtual GSError SetCycleBuffersNumber(uint32_t cycleBuffersNumber)
533     {
534         (void)cycleBuffersNumber;
535         return SURFACE_ERROR_NOT_SUPPORT;
536     }
537 
GetFrameGravity(int32_t & frameGravity)538     virtual GSError GetFrameGravity(int32_t &frameGravity)
539     {
540         (void)frameGravity;
541         return SURFACE_ERROR_NOT_SUPPORT;
542     }
543     /**
544      * @brief Set the frame gravity.
545      * @param frameGravity -1 for invalid setting. 0 to 15 is normal value.
546      */
SetFrameGravity(int32_t frameGravity)547     virtual GSError SetFrameGravity(int32_t frameGravity)
548     {
549         (void)frameGravity;
550         return SURFACE_ERROR_NOT_SUPPORT;
551     }
GetFixedRotation(int32_t & fixedRotation)552     virtual GSError GetFixedRotation(int32_t &fixedRotation)
553     {
554         (void)fixedRotation;
555         return SURFACE_ERROR_NOT_SUPPORT;
556     }
557     /**
558      * @brief Set the fixed rotation value for whether the rotation is fixed.
559      * @param fixedRotation -1 for invalid setting. 1 for fixed or 0 for otherwise.
560      */
SetFixedRotation(int32_t fixedRotation)561     virtual GSError SetFixedRotation(int32_t fixedRotation)
562     {
563         (void)fixedRotation;
564         return SURFACE_ERROR_NOT_SUPPORT;
565     }
566 
567     /**
568     * @brief In the strictly disconnected state, the producer must call the ConnectStrictly() interface before request
569     *        buffer. Unlike Connect(), ConnectStrictly() does not distinguish between process IDs (PIDs) and is
570     *        suitable for stricter connection management scenarios.
571     */
ConnectStrictly()572     virtual GSError ConnectStrictly()
573     {
574         return SURFACE_ERROR_NOT_SUPPORT;
575     }
576 
577     /**
578     * @brief After calling DisconnectStrictly(), the consumer (server) enter the strictly disconnected state.
579     *        In this state, any attempt by the producer (client) to request buffer will fail and return the error code
580     *        GSERROR_CONSUMER_DISCONNECTED.
581     */
DisconnectStrictly()582     virtual GSError DisconnectStrictly()
583     {
584         return SURFACE_ERROR_NOT_SUPPORT;
585     }
PreAllocBuffers(const BufferRequestConfig & config,uint32_t allocBufferCount)586     virtual GSError PreAllocBuffers(const BufferRequestConfig &config, uint32_t allocBufferCount)
587     {
588         (void)config;
589         (void)allocBufferCount;
590         return SURFACE_ERROR_NOT_SUPPORT;
591     }
592     /**
593     * @brief Request a buffer with lock.
594     * @param config Indicates the buffer config to be requested.
595     * @param region Indicates the info of the dirty region.
596     * @param buffer Indicates the pointer to a <b>SurfaceBuffer</b> instance.
597     * @return Returns the error code of the request of lock.
598     */
ProducerSurfaceLockBuffer(BufferRequestConfig & config,Region region,sptr<SurfaceBuffer> & buffer)599     virtual GSError ProducerSurfaceLockBuffer(BufferRequestConfig &config, Region region, sptr<SurfaceBuffer>& buffer)
600     {
601         (void)config;
602         (void)region;
603         (void)buffer;
604         return SURFACE_ERROR_NOT_SUPPORT;
605     }
606     /**
607     * @brief Unlock a buffer with lock.
608     * @return Returns the error code of the request of unlock.
609     */
ProducerSurfaceUnlockAndFlushBuffer()610     virtual GSError ProducerSurfaceUnlockAndFlushBuffer()
611     {
612         return SURFACE_ERROR_NOT_SUPPORT;
613     }
ReleaseBuffer(uint32_t sequence,const sptr<SyncFence> & fence)614     virtual GSError ReleaseBuffer(uint32_t sequence, const sptr<SyncFence>& fence)
615     {
616         (void)sequence;
617         (void)fence;
618         return GSERROR_NOT_SUPPORT;
619     }
GetAlphaType(GraphicAlphaType & alphaType)620     virtual GSError GetAlphaType(GraphicAlphaType &alphaType)
621     {
622         (void)alphaType;
623         return SURFACE_ERROR_NOT_SUPPORT;
624     }
SetAlphaType(GraphicAlphaType alphaType)625     virtual GSError SetAlphaType(GraphicAlphaType alphaType)
626     {
627         (void)alphaType;
628         return SURFACE_ERROR_NOT_SUPPORT;
629     }
SetBufferReallocFlag(bool flag)630     virtual GSError SetBufferReallocFlag(bool flag)
631     {
632         (void)flag;
633         return GSERROR_NOT_SUPPORT;
634     }
635 protected:
636     Surface() = default;
637 };
638 } // namespace OHOS
639 
640 #endif // INTERFACES_INNERKITS_SURFACE_SURFACE_H
641