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 ×tamp, 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 ×tamp, 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 ×tamp) 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