1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci#ifndef FOUNDATION_DM_SCREEN_MANAGER_H 17e0dac50fSopenharmony_ci#define FOUNDATION_DM_SCREEN_MANAGER_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include <refbase.h> 20e0dac50fSopenharmony_ci#include "screen.h" 21e0dac50fSopenharmony_ci#include "dm_common.h" 22e0dac50fSopenharmony_ci#include "screen_group.h" 23e0dac50fSopenharmony_ci#include "wm_single_instance.h" 24e0dac50fSopenharmony_ci#include "wm_single_instance.h" 25e0dac50fSopenharmony_ci 26e0dac50fSopenharmony_cinamespace OHOS::Rosen { 27e0dac50fSopenharmony_ciclass ScreenManager : public RefBase { 28e0dac50fSopenharmony_ciWM_DECLARE_SINGLE_INSTANCE_BASE(ScreenManager); 29e0dac50fSopenharmony_cifriend class DMSDeathRecipient; 30e0dac50fSopenharmony_cipublic: 31e0dac50fSopenharmony_ci class IScreenListener : public virtual RefBase { 32e0dac50fSopenharmony_ci public: 33e0dac50fSopenharmony_ci /** 34e0dac50fSopenharmony_ci * @brief Notify when a new screen is connected. 35e0dac50fSopenharmony_ci */ 36e0dac50fSopenharmony_ci virtual void OnConnect(ScreenId) = 0; 37e0dac50fSopenharmony_ci 38e0dac50fSopenharmony_ci /** 39e0dac50fSopenharmony_ci * @brief Notify when a screen is disconnected. 40e0dac50fSopenharmony_ci */ 41e0dac50fSopenharmony_ci virtual void OnDisconnect(ScreenId) = 0; 42e0dac50fSopenharmony_ci 43e0dac50fSopenharmony_ci /** 44e0dac50fSopenharmony_ci * @brief Notify when state of the screen is changed. 45e0dac50fSopenharmony_ci */ 46e0dac50fSopenharmony_ci virtual void OnChange(ScreenId) = 0; 47e0dac50fSopenharmony_ci }; 48e0dac50fSopenharmony_ci 49e0dac50fSopenharmony_ci class IScreenGroupListener : public virtual RefBase { 50e0dac50fSopenharmony_ci public: 51e0dac50fSopenharmony_ci /** 52e0dac50fSopenharmony_ci * @brief Notify when state of the screenGroup is changed. 53e0dac50fSopenharmony_ci */ 54e0dac50fSopenharmony_ci virtual void OnChange(const std::vector<ScreenId>&, ScreenGroupChangeEvent) = 0; 55e0dac50fSopenharmony_ci }; 56e0dac50fSopenharmony_ci 57e0dac50fSopenharmony_ci class IVirtualScreenGroupListener : public virtual RefBase { 58e0dac50fSopenharmony_ci public: 59e0dac50fSopenharmony_ci struct ChangeInfo { 60e0dac50fSopenharmony_ci ScreenGroupChangeEvent event; 61e0dac50fSopenharmony_ci std::string trigger; 62e0dac50fSopenharmony_ci std::vector<ScreenId> ids; 63e0dac50fSopenharmony_ci }; 64e0dac50fSopenharmony_ci /** 65e0dac50fSopenharmony_ci * @brief Notify when an event related to screen mirror occurs. 66e0dac50fSopenharmony_ci * 67e0dac50fSopenharmony_ci * @param info Change info of screen mirror. 68e0dac50fSopenharmony_ci */ 69e0dac50fSopenharmony_ci virtual void OnMirrorChange([[maybe_unused]]const ChangeInfo& info) {} 70e0dac50fSopenharmony_ci }; 71e0dac50fSopenharmony_ci 72e0dac50fSopenharmony_ci /** 73e0dac50fSopenharmony_ci * @brief Get the screen object by screen id. 74e0dac50fSopenharmony_ci * 75e0dac50fSopenharmony_ci * @param screenId Screen id. 76e0dac50fSopenharmony_ci * @return Screen object. 77e0dac50fSopenharmony_ci */ 78e0dac50fSopenharmony_ci sptr<Screen> GetScreenById(ScreenId screenId); 79e0dac50fSopenharmony_ci 80e0dac50fSopenharmony_ci /** 81e0dac50fSopenharmony_ci * @brief Get the screen group object by groupId. 82e0dac50fSopenharmony_ci * 83e0dac50fSopenharmony_ci * @param groupId Screen group id. 84e0dac50fSopenharmony_ci * @return ScreenGroup object. 85e0dac50fSopenharmony_ci */ 86e0dac50fSopenharmony_ci sptr<ScreenGroup> GetScreenGroup(ScreenId groupId); 87e0dac50fSopenharmony_ci 88e0dac50fSopenharmony_ci /** 89e0dac50fSopenharmony_ci * @brief Get all screens object. 90e0dac50fSopenharmony_ci * 91e0dac50fSopenharmony_ci * @param screens All screen objects. 92e0dac50fSopenharmony_ci * @return DM_OK means get success, others means get failed. 93e0dac50fSopenharmony_ci */ 94e0dac50fSopenharmony_ci DMError GetAllScreens(std::vector<sptr<Screen>>& screens); 95e0dac50fSopenharmony_ci 96e0dac50fSopenharmony_ci /** 97e0dac50fSopenharmony_ci * @brief Make screens as expand-screen. 98e0dac50fSopenharmony_ci * 99e0dac50fSopenharmony_ci * @param options Option of expand. 100e0dac50fSopenharmony_ci * @param screenGroupId Screen group id. 101e0dac50fSopenharmony_ci * @return DM_OK means make expand success, others means make expand failed. 102e0dac50fSopenharmony_ci */ 103e0dac50fSopenharmony_ci DMError MakeExpand(const std::vector<ExpandOption>& options, ScreenId& screenGroupId); 104e0dac50fSopenharmony_ci 105e0dac50fSopenharmony_ci /** 106e0dac50fSopenharmony_ci * @brief Make screens as mirror-screen 107e0dac50fSopenharmony_ci * 108e0dac50fSopenharmony_ci * @param mainScreenId Main screen id. 109e0dac50fSopenharmony_ci * @param mirrorScreenId Mirror screen ids. 110e0dac50fSopenharmony_ci * @param screenGroupId Screen group id. 111e0dac50fSopenharmony_ci * @return DM_OK means make mirror success, others means make mirror failed. 112e0dac50fSopenharmony_ci */ 113e0dac50fSopenharmony_ci DMError MakeMirror(ScreenId mainScreenId, std::vector<ScreenId> mirrorScreenId, ScreenId& screenGroupId); 114e0dac50fSopenharmony_ci 115e0dac50fSopenharmony_ci /** 116e0dac50fSopenharmony_ci * @brief Make screens as mirror-screen 117e0dac50fSopenharmony_ci * 118e0dac50fSopenharmony_ci * @param mainScreenId Main screen id. 119e0dac50fSopenharmony_ci * @param secondaryScreenId secondary screen id. 120e0dac50fSopenharmony_ci * @param screenMode Screen Combination Mode. 121e0dac50fSopenharmony_ci * @return DM_OK means make mirror success, others means make mirror failed. 122e0dac50fSopenharmony_ci */ 123e0dac50fSopenharmony_ci DMError SetMultiScreenMode(ScreenId mainScreenId, ScreenId secondaryScreenId, 124e0dac50fSopenharmony_ci MultiScreenMode screenMode); 125e0dac50fSopenharmony_ci 126e0dac50fSopenharmony_ci /** 127e0dac50fSopenharmony_ci * @brief Set Screen Relative Position 128e0dac50fSopenharmony_ci * 129e0dac50fSopenharmony_ci * @param mainScreenOptions Main screen id and position. 130e0dac50fSopenharmony_ci * @param secondScreenOption secondary screen id and position. 131e0dac50fSopenharmony_ci * @return DM_OK means make mirror success, others means make mirror failed. 132e0dac50fSopenharmony_ci */ 133e0dac50fSopenharmony_ci DMError SetMultiScreenRelativePosition(MultiScreenPositionOptions mainScreenOptions, 134e0dac50fSopenharmony_ci MultiScreenPositionOptions secondScreenOption); 135e0dac50fSopenharmony_ci 136e0dac50fSopenharmony_ci /** 137e0dac50fSopenharmony_ci * @brief Make screens as unique-screen. 138e0dac50fSopenharmony_ci * 139e0dac50fSopenharmony_ci * @param screenIds Unique screen ids. 140e0dac50fSopenharmony_ci * @return DM_OK means make unique screen success, others means make unique failed. 141e0dac50fSopenharmony_ci */ 142e0dac50fSopenharmony_ci DMError MakeUniqueScreen(const std::vector<ScreenId>& screenIds); 143e0dac50fSopenharmony_ci 144e0dac50fSopenharmony_ci /** 145e0dac50fSopenharmony_ci * @brief Stop expand screens. 146e0dac50fSopenharmony_ci * 147e0dac50fSopenharmony_ci * @param expandScreenIds Expand screen ids. 148e0dac50fSopenharmony_ci * @return DM_OK means stop expand success, others means stop expand failed. 149e0dac50fSopenharmony_ci */ 150e0dac50fSopenharmony_ci DMError StopExpand(const std::vector<ScreenId>& expandScreenIds); 151e0dac50fSopenharmony_ci 152e0dac50fSopenharmony_ci /** 153e0dac50fSopenharmony_ci * @brief Stop mirror screens. 154e0dac50fSopenharmony_ci * 155e0dac50fSopenharmony_ci * @param mirrorScreenIds Mirror screen ids. 156e0dac50fSopenharmony_ci * @return DM_OK means stop mirror success, others means stop mirror failed. 157e0dac50fSopenharmony_ci */ 158e0dac50fSopenharmony_ci DMError StopMirror(const std::vector<ScreenId>& mirrorScreenIds); 159e0dac50fSopenharmony_ci 160e0dac50fSopenharmony_ci /** 161e0dac50fSopenharmony_ci * @brief Disable/enable global mirror screen. 162e0dac50fSopenharmony_ci * 163e0dac50fSopenharmony_ci * @param disableOrNot disable mirror screen or not. 164e0dac50fSopenharmony_ci * @return DM_OK means disable or enable mirror success, others means failed. 165e0dac50fSopenharmony_ci */ 166e0dac50fSopenharmony_ci DMError DisableMirror(bool disableOrNot); 167e0dac50fSopenharmony_ci 168e0dac50fSopenharmony_ci /** 169e0dac50fSopenharmony_ci * @brief Remove virtual screen from group. 170e0dac50fSopenharmony_ci * 171e0dac50fSopenharmony_ci * @param screens Screen ids. 172e0dac50fSopenharmony_ci * @return DM_OK means remove success, others means remove failed. 173e0dac50fSopenharmony_ci */ 174e0dac50fSopenharmony_ci DMError RemoveVirtualScreenFromGroup(std::vector<ScreenId> screens); 175e0dac50fSopenharmony_ci 176e0dac50fSopenharmony_ci /** 177e0dac50fSopenharmony_ci * @brief Create virtual screen. 178e0dac50fSopenharmony_ci * 179e0dac50fSopenharmony_ci * @param option Indicates the options of the virtual screen. 180e0dac50fSopenharmony_ci * @return Screen id. 181e0dac50fSopenharmony_ci */ 182e0dac50fSopenharmony_ci ScreenId CreateVirtualScreen(VirtualScreenOption option); 183e0dac50fSopenharmony_ci 184e0dac50fSopenharmony_ci /** 185e0dac50fSopenharmony_ci * @brief Destroy virtual screen. 186e0dac50fSopenharmony_ci * 187e0dac50fSopenharmony_ci * @param screenId Indicates the screen id of the virtual screen. 188e0dac50fSopenharmony_ci * @return DM_OK means destroy success, others means destroy failed. 189e0dac50fSopenharmony_ci */ 190e0dac50fSopenharmony_ci DMError DestroyVirtualScreen(ScreenId screenId); 191e0dac50fSopenharmony_ci 192e0dac50fSopenharmony_ci /** 193e0dac50fSopenharmony_ci * @brief Set surface for the virtual screen. 194e0dac50fSopenharmony_ci * 195e0dac50fSopenharmony_ci * @param screenId Screen id. 196e0dac50fSopenharmony_ci * @param surface Surface object. 197e0dac50fSopenharmony_ci * @return DM_OK means set success, others means set failed. 198e0dac50fSopenharmony_ci */ 199e0dac50fSopenharmony_ci DMError SetVirtualScreenSurface(ScreenId screenId, sptr<Surface> surface); 200e0dac50fSopenharmony_ci 201e0dac50fSopenharmony_ci /** 202e0dac50fSopenharmony_ci * @brief Resize virtual screen 203e0dac50fSopenharmony_ci * 204e0dac50fSopenharmony_ci * @param screenId the id of virtual screen to be resized. 205e0dac50fSopenharmony_ci * @param width the new width. 206e0dac50fSopenharmony_ci * @param height the new height. 207e0dac50fSopenharmony_ci * @return DM_OK means set success, others means set failed. 208e0dac50fSopenharmony_ci */ 209e0dac50fSopenharmony_ci DMError ResizeVirtualScreen(ScreenId screenId, uint32_t width, uint32_t height); 210e0dac50fSopenharmony_ci 211e0dac50fSopenharmony_ci /** 212e0dac50fSopenharmony_ci * @brief Set buffer auto rotate 213e0dac50fSopenharmony_ci * 214e0dac50fSopenharmony_ci * @param screenId Screen id. 215e0dac50fSopenharmony_ci * @param bufferRotation auto rotate 216e0dac50fSopenharmony_ci * @return DM_OK means set success, others means set failed. 217e0dac50fSopenharmony_ci */ 218e0dac50fSopenharmony_ci DMError SetVirtualMirrorScreenCanvasRotation(ScreenId screenId, bool canvasRotation); 219e0dac50fSopenharmony_ci 220e0dac50fSopenharmony_ci /** 221e0dac50fSopenharmony_ci * @brief Set virtual screen scale mode 222e0dac50fSopenharmony_ci * 223e0dac50fSopenharmony_ci * @param screenId Screen id. 224e0dac50fSopenharmony_ci * @param scaleMode scale mode 225e0dac50fSopenharmony_ci * @return DM_OK means set success, others means set failed. 226e0dac50fSopenharmony_ci */ 227e0dac50fSopenharmony_ci DMError SetVirtualMirrorScreenScaleMode(ScreenId screenId, ScreenScaleMode scaleMode); 228e0dac50fSopenharmony_ci 229e0dac50fSopenharmony_ci /** 230e0dac50fSopenharmony_ci * @brief Set the screen power state on the specified screen. 231e0dac50fSopenharmony_ci * 232e0dac50fSopenharmony_ci * @param screenId Screen id. 233e0dac50fSopenharmony_ci * @param state Screen power state. 234e0dac50fSopenharmony_ci * @param reason Reason for power state change. 235e0dac50fSopenharmony_ci * @return True means set success, false means set failed. 236e0dac50fSopenharmony_ci */ 237e0dac50fSopenharmony_ci bool SetSpecifiedScreenPower(ScreenId screenId, ScreenPowerState state, PowerStateChangeReason reason); 238e0dac50fSopenharmony_ci 239e0dac50fSopenharmony_ci /** 240e0dac50fSopenharmony_ci * @brief Set the screen power states for all screens. 241e0dac50fSopenharmony_ci * 242e0dac50fSopenharmony_ci * @param state Screen power state. 243e0dac50fSopenharmony_ci * @param reason Reason for power state change. 244e0dac50fSopenharmony_ci * @return True means set success, false means set failed. 245e0dac50fSopenharmony_ci */ 246e0dac50fSopenharmony_ci bool SetScreenPowerForAll(ScreenPowerState state, PowerStateChangeReason reason); 247e0dac50fSopenharmony_ci 248e0dac50fSopenharmony_ci /** 249e0dac50fSopenharmony_ci * @brief Get screen power state. 250e0dac50fSopenharmony_ci * 251e0dac50fSopenharmony_ci * @param screenId Screen id. 252e0dac50fSopenharmony_ci * @return Power state of screen. 253e0dac50fSopenharmony_ci */ 254e0dac50fSopenharmony_ci ScreenPowerState GetScreenPower(ScreenId screenId); 255e0dac50fSopenharmony_ci 256e0dac50fSopenharmony_ci /** 257e0dac50fSopenharmony_ci * @brief Set screen rotation lock status. 258e0dac50fSopenharmony_ci * 259e0dac50fSopenharmony_ci * @param isLocked True means forbid to rotate screen, false means the opposite. 260e0dac50fSopenharmony_ci * @return DM_OK means set success, others means set failed. 261e0dac50fSopenharmony_ci */ 262e0dac50fSopenharmony_ci DMError SetScreenRotationLocked(bool isLocked); 263e0dac50fSopenharmony_ci 264e0dac50fSopenharmony_ci /** 265e0dac50fSopenharmony_ci * @brief Set screen rotation lock status from js. 266e0dac50fSopenharmony_ci * 267e0dac50fSopenharmony_ci * @param isLocked True means forbid to rotate screen, false means the opposite. 268e0dac50fSopenharmony_ci * @return DM_OK means set success, others means set failed. 269e0dac50fSopenharmony_ci */ 270e0dac50fSopenharmony_ci DMError SetScreenRotationLockedFromJs(bool isLocked); 271e0dac50fSopenharmony_ci 272e0dac50fSopenharmony_ci /** 273e0dac50fSopenharmony_ci * @brief Get screen rotation lock status. 274e0dac50fSopenharmony_ci * 275e0dac50fSopenharmony_ci * @param isLocked Query the rotation lock status. 276e0dac50fSopenharmony_ci * @return DM_OK means query success, others means query failed. 277e0dac50fSopenharmony_ci */ 278e0dac50fSopenharmony_ci DMError IsScreenRotationLocked(bool& isLocked); 279e0dac50fSopenharmony_ci 280e0dac50fSopenharmony_ci /** 281e0dac50fSopenharmony_ci * @brief Register screen listener. 282e0dac50fSopenharmony_ci * 283e0dac50fSopenharmony_ci * @param listener IScreenListener. 284e0dac50fSopenharmony_ci * @return DM_OK means register success, others means register failed. 285e0dac50fSopenharmony_ci */ 286e0dac50fSopenharmony_ci DMError RegisterScreenListener(sptr<IScreenListener> listener); 287e0dac50fSopenharmony_ci 288e0dac50fSopenharmony_ci /** 289e0dac50fSopenharmony_ci * @brief Unregister screen listener. 290e0dac50fSopenharmony_ci * 291e0dac50fSopenharmony_ci * @param listener IScreenListener. 292e0dac50fSopenharmony_ci * @return DM_OK means unregister success, others means unregister failed. 293e0dac50fSopenharmony_ci */ 294e0dac50fSopenharmony_ci DMError UnregisterScreenListener(sptr<IScreenListener> listener); 295e0dac50fSopenharmony_ci 296e0dac50fSopenharmony_ci /** 297e0dac50fSopenharmony_ci * @brief Register screen group listener. 298e0dac50fSopenharmony_ci * 299e0dac50fSopenharmony_ci * @param listener IScreenGroupListener. 300e0dac50fSopenharmony_ci * @return DM_OK means register success, others means register failed. 301e0dac50fSopenharmony_ci */ 302e0dac50fSopenharmony_ci DMError RegisterScreenGroupListener(sptr<IScreenGroupListener> listener); 303e0dac50fSopenharmony_ci 304e0dac50fSopenharmony_ci /** 305e0dac50fSopenharmony_ci * @brief Unregister screen group listener. 306e0dac50fSopenharmony_ci * 307e0dac50fSopenharmony_ci * @param listener IScreenGroupListener. 308e0dac50fSopenharmony_ci * @return DM_OK means unregister success, others means unregister failed. 309e0dac50fSopenharmony_ci */ 310e0dac50fSopenharmony_ci DMError UnregisterScreenGroupListener(sptr<IScreenGroupListener> listener); 311e0dac50fSopenharmony_ci 312e0dac50fSopenharmony_ci /** 313e0dac50fSopenharmony_ci * @brief Register virtual screen group listener. 314e0dac50fSopenharmony_ci * 315e0dac50fSopenharmony_ci * @param listener IVirtualScreenGroupListener. 316e0dac50fSopenharmony_ci * @return DM_OK means register success, others means register failed. 317e0dac50fSopenharmony_ci */ 318e0dac50fSopenharmony_ci DMError RegisterVirtualScreenGroupListener(sptr<IVirtualScreenGroupListener> listener); 319e0dac50fSopenharmony_ci 320e0dac50fSopenharmony_ci /** 321e0dac50fSopenharmony_ci * @brief Unregister virtual screen group listener. 322e0dac50fSopenharmony_ci * 323e0dac50fSopenharmony_ci * @param listener IVirtualScreenGroupListener. 324e0dac50fSopenharmony_ci * @return DM_OK means unregister success, others means unregister failed. 325e0dac50fSopenharmony_ci */ 326e0dac50fSopenharmony_ci DMError UnregisterVirtualScreenGroupListener(sptr<IVirtualScreenGroupListener> listener); 327e0dac50fSopenharmony_ci 328e0dac50fSopenharmony_ci /** 329e0dac50fSopenharmony_ci * @brief Get virtual screen flag. 330e0dac50fSopenharmony_ci * 331e0dac50fSopenharmony_ci * @param screenId virtual screen id. 332e0dac50fSopenharmony_ci * @return virtual screen flag 333e0dac50fSopenharmony_ci */ 334e0dac50fSopenharmony_ci VirtualScreenFlag GetVirtualScreenFlag(ScreenId screenId); 335e0dac50fSopenharmony_ci 336e0dac50fSopenharmony_ci /** 337e0dac50fSopenharmony_ci * @brief Set virtual screen flag. 338e0dac50fSopenharmony_ci * 339e0dac50fSopenharmony_ci * @param screenId virtual screen id. 340e0dac50fSopenharmony_ci * @param screenFlag virtual screen flag. 341e0dac50fSopenharmony_ci * @return DM_OK means set success, others means failed. 342e0dac50fSopenharmony_ci */ 343e0dac50fSopenharmony_ci DMError SetVirtualScreenFlag(ScreenId screenId, VirtualScreenFlag screenFlag); 344e0dac50fSopenharmony_ci 345e0dac50fSopenharmony_ci /** 346e0dac50fSopenharmony_ci * @brief Set virtual screen refresh rate with a refresh interval relative to the main screen. 347e0dac50fSopenharmony_ci * 348e0dac50fSopenharmony_ci * @param screenId virtual screen id. 349e0dac50fSopenharmony_ci * @param refreshInterval refresh interval: range [1, main screen max refresh rate]. 2 indicates that 350e0dac50fSopenharmony_ci * the virtual screen refreshes 1 frame when the main screen refreshes 2 frames, 5 indicates that 351e0dac50fSopenharmony_ci * the virtual screen refreshes 1 frame when the main screen refreshes 5 frames, and so on. 352e0dac50fSopenharmony_ci * @return DM_OK means set success, others means failed. 353e0dac50fSopenharmony_ci */ 354e0dac50fSopenharmony_ci DMError SetVirtualScreenRefreshRate(ScreenId screenId, uint32_t refreshInterval); 355e0dac50fSopenharmony_ci 356e0dac50fSopenharmony_ci /** 357e0dac50fSopenharmony_ci * @brief Set virtual screen max refresh rate . 358e0dac50fSopenharmony_ci * 359e0dac50fSopenharmony_ci * @param screenId virtual screen id. 360e0dac50fSopenharmony_ci * @param refreshRate max refresh rate to be set. 361e0dac50fSopenharmony_ci * @param actualRefreshRate the actual refresh rate that is finally set. 362e0dac50fSopenharmony_ci * @return DM_OK means set success, others means failed. 363e0dac50fSopenharmony_ci */ 364e0dac50fSopenharmony_ci DMError SetVirtualScreenMaxRefreshRate(ScreenId id, uint32_t refreshRate, 365e0dac50fSopenharmony_ci uint32_t& actualRefreshRate); 366e0dac50fSopenharmony_ci 367e0dac50fSopenharmony_ci /** 368e0dac50fSopenharmony_ci * @brief when casting the screen, Virtual screen playback and pause function. 369e0dac50fSopenharmony_ci * 370e0dac50fSopenharmony_ci * @param screenId screenId used in virtual screen. 371e0dac50fSopenharmony_ci * @param screenStatus VIRTUAL_SCREEN_PLAY or VIRTUAL_SCREEN_PAUSE. 372e0dac50fSopenharmony_ci * @return True means set success, false means set failed. 373e0dac50fSopenharmony_ci */ 374e0dac50fSopenharmony_ci bool SetVirtualScreenStatus(ScreenId screenId, VirtualScreenStatus screenStatus); 375e0dac50fSopenharmony_ciprivate: 376e0dac50fSopenharmony_ci ScreenManager(); 377e0dac50fSopenharmony_ci ~ScreenManager(); 378e0dac50fSopenharmony_ci void OnRemoteDied(); 379e0dac50fSopenharmony_ci 380e0dac50fSopenharmony_ci class Impl; 381e0dac50fSopenharmony_ci sptr<Impl> pImpl_; 382e0dac50fSopenharmony_ci}; 383e0dac50fSopenharmony_ci} // namespace OHOS::Rosen 384e0dac50fSopenharmony_ci 385e0dac50fSopenharmony_ci#endif // FOUNDATION_DM_SCREEN_MANAGER_H