Changeset 52064 in vbox
- Timestamp:
- Jul 16, 2014 9:23:55 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95065
- Location:
- trunk/src/VBox
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
r51801 r52064 1123 1123 CHECK_ERROR_RET(pFramebuffer, COMGETTER(Width)(&w), rc); 1124 1124 CHECK_ERROR_RET(pFramebuffer, COMGETTER(Height)(&h), rc); 1125 CHECK_ERROR_RET(pDisplay, GetScreenResolution(i, NULL, NULL, NULL, &xo, &yo), rc); 1125 ULONG dummy; 1126 CHECK_ERROR_RET(pDisplay, GetScreenResolution(i, &dummy, &dummy, &dummy, &xo, &yo), rc); 1126 1127 1127 1128 rc = crVBoxServerMapScreen(i, xo, yo, w, h, winId); … … 1248 1249 CHECK_ERROR_BREAK(pFramebuffer, COMGETTER(Width)(&w)); 1249 1250 CHECK_ERROR_BREAK(pFramebuffer, COMGETTER(Height)(&h)); 1250 CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(screenId, NULL, NULL, NULL, &xo, &yo)); 1251 ULONG dummy; 1252 CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(screenId, &dummy, &dummy, &dummy, &xo, &yo)); 1251 1253 1252 1254 rc = crVBoxServerMapScreen(screenId, xo, yo, w, h, winId); -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r51670 r52064 15554 15554 uuid="0d85a960-bfa7-4f26-9637-fdd521b7f3c1" 15555 15555 wsmap="managed" 15556 wrap-hint-server-addinterfaces="IEventListener" 15556 15557 > 15557 15558 <desc> … … 18324 18325 uuid="12F4DCDB-12B2-4EC1-B7CD-DDD9F6C5BF4D" 18325 18326 wsmap="managed" 18326 wrap-hint-server ="addinterface=IInternalSessionControl"18327 wrap-hint-server-addinterfaces="IInternalSessionControl" 18327 18328 > 18328 18329 <desc> -
trunk/src/VBox/Main/include/DisplayImpl.h
r51762 r52064 19 19 #define ____H_DISPLAYIMPL 20 20 21 #include "VirtualBoxBase.h"22 21 #include "SchemaDefs.h" 23 22 … … 27 26 #include <VBox/VBoxVideo.h> 28 27 #include <VBox/vmm/pdmifs.h> 28 #include "DisplayWrap.h" 29 29 30 30 #ifdef VBOX_WITH_CROGL … … 104 104 { 105 105 public: 106 virtual int getScreenResolution(uint32_tcScreen, ULONG *pcx,107 ULONG *pcy, ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin) = 0;108 virtual void getFramebufferDimensions(int32_t *px1, int32_t *py1,109 int32_t *px2, int32_t *py2) = 0;106 virtual HRESULT i_getScreenResolution(ULONG cScreen, ULONG *pcx, 107 ULONG *pcy, ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin) = 0; 108 virtual void i_getFramebufferDimensions(int32_t *px1, int32_t *py1, 109 int32_t *px2, int32_t *py2) = 0; 110 110 }; 111 111 … … 113 113 114 114 class ATL_NO_VTABLE Display : 115 public VirtualBoxBase, 116 VBOX_SCRIPTABLE_IMPL(IEventListener), 117 VBOX_SCRIPTABLE_IMPL(IDisplay), 115 public DisplayWrap, 118 116 public DisplayMouseInterface 119 117 { 120 118 public: 121 119 122 VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(Display, IDisplay)123 124 DECLARE_NOT_AGGREGATABLE(Display)125 126 DECLARE_PROTECT_FINAL_CONSTRUCT()127 128 BEGIN_COM_MAP(Display)129 VBOX_DEFAULT_INTERFACE_ENTRIES(IDisplay)130 COM_INTERFACE_ENTRY(IEventListener)131 END_COM_MAP()132 133 120 DECLARE_EMPTY_CTOR_DTOR(Display) 134 121 … … 139 126 HRESULT init(Console *aParent); 140 127 void uninit(); 141 int registerSSM(PUVM pUVM);128 int i_registerSSM(PUVM pUVM); 142 129 143 130 // public methods only for internal purposes 144 int handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRAM, uint32_t cbLine, uint32_t w, uint32_t h, uint16_t flags); 145 void handleDisplayUpdateLegacy(int x, int y, int cx, int cy); 146 void handleDisplayUpdate(unsigned uScreenId, int x, int y, int w, int h); 131 int i_handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRAM, uint32_t cbLine, 132 uint32_t w, uint32_t h, uint16_t flags); 133 void i_handleDisplayUpdateLegacy(int x, int y, int cx, int cy); 134 void i_handleDisplayUpdate(unsigned uScreenId, int x, int y, int w, int h); 147 135 #ifdef VBOX_WITH_VIDEOHWACCEL 148 int handleVHWACommandProcess(PVBOXVHWACMD pCommand);136 int i_handleVHWACommandProcess(PVBOXVHWACMD pCommand); 149 137 #endif 150 138 #ifdef VBOX_WITH_CRHGSMI 151 void handleCrHgsmiCommandCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam); 152 void handleCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam); 153 void handleCrHgsmiCommandProcess(PVBOXVDMACMD_CHROMIUM_CMD pCmd, uint32_t cbCmd); 154 void handleCrHgsmiControlProcess(PVBOXVDMACMD_CHROMIUM_CTL pCtl, uint32_t cbCtl); 155 #endif 156 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 157 int handleCrHgcmCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, 158 PFNCRCTLCOMPLETION pfnCompletion, 159 void *pvCompletion); 160 void handleCrVRecScreenshotPerform(uint32_t uScreen, 161 uint32_t x, uint32_t y, uint32_t uPixelFormat, uint32_t uBitsPerPixel, 162 uint32_t uBytesPerLine, uint32_t uGuestWidth, uint32_t uGuestHeight, 163 uint8_t *pu8BufferAddress, uint64_t u64TimeStamp); 164 bool handleCrVRecScreenshotBegin(uint32_t uScreen, uint64_t u64TimeStamp); 165 void handleCrVRecScreenshotEnd(uint32_t uScreen, uint64_t u64TimeStamp); 166 void handleVRecCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 167 #endif 168 169 int notifyCroglResize(const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, void *pvVRAM); 170 171 void getFramebufferDimensions(int32_t *px1, int32_t *py1, int32_t *px2, int32_t *py2); 172 int getScreenResolution(uint32_t cScreen, ULONG *pcx, ULONG *pcy, 173 ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin) 139 void i_handleCrHgsmiCommandCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam); 140 void i_handleCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam); 141 void i_handleCrHgsmiCommandProcess(PVBOXVDMACMD_CHROMIUM_CMD pCmd, uint32_t cbCmd); 142 void i_handleCrHgsmiControlProcess(PVBOXVDMACMD_CHROMIUM_CTL pCtl, uint32_t cbCtl); 143 #endif 144 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 145 int i_handleCrHgcmCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, 146 PFNCRCTLCOMPLETION pfnCompletion, 147 void *pvCompletion); 148 void i_handleCrVRecScreenshotPerform(uint32_t uScreen, 149 uint32_t x, uint32_t y, uint32_t uPixelFormat, uint32_t uBitsPerPixel, 150 uint32_t uBytesPerLine, uint32_t uGuestWidth, uint32_t uGuestHeight, 151 uint8_t *pu8BufferAddress, uint64_t u64TimeStamp); 152 bool i_handleCrVRecScreenshotBegin(uint32_t uScreen, uint64_t u64TimeStamp); 153 void i_handleCrVRecScreenshotEnd(uint32_t uScreen, uint64_t u64TimeStamp); 154 void i_handleVRecCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 155 #endif 156 157 int i_notifyCroglResize(const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, void *pvVRAM); 158 159 int i_handleSetVisibleRegion(uint32_t cRect, PRTRECT pRect); 160 int i_handleQueryVisibleRegion(uint32_t *pcRect, PRTRECT pRect); 161 162 int i_VideoAccelEnable(bool fEnable, VBVAMEMORY *pVbvaMemory); 163 void i_VideoAccelFlush(void); 164 bool i_VideoAccelAllowed(void); 165 void i_VideoAccelVRDP(bool fEnable); 166 167 int i_VideoCaptureStart(); 168 void i_VideoCaptureStop(); 169 int i_VideoCaptureEnableScreens(ComSafeArrayIn(BOOL, aScreens)); 170 171 void i_notifyPowerDown(void); 172 173 // DisplayMouseInterface methods 174 virtual HRESULT i_getScreenResolution(ULONG cScreen, ULONG *pcx, 175 ULONG *pcy, ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin) 174 176 { 175 return GetScreenResolution(cScreen, pcx, pcy, pcBPP, pXOrigin, pYOrigin);177 return getScreenResolution(cScreen, pcx, pcy, pcBPP, pXOrigin, pYOrigin); 176 178 } 177 178 int handleSetVisibleRegion(uint32_t cRect, PRTRECT pRect); 179 int handleQueryVisibleRegion(uint32_t *pcRect, PRTRECT pRect); 180 181 int VideoAccelEnable(bool fEnable, VBVAMEMORY *pVbvaMemory); 182 void VideoAccelFlush(void); 183 bool VideoAccelAllowed(void); 184 void VideoAccelVRDP(bool fEnable); 185 186 int VideoCaptureStart(); 187 void VideoCaptureStop(); 188 int VideoCaptureEnableScreens(ComSafeArrayIn(BOOL, aScreens)); 189 190 void notifyPowerDown(void); 191 192 // IEventListener methods 193 STDMETHOD(HandleEvent)(IEvent * aEvent); 194 195 // IDisplay methods 196 STDMETHOD(GetScreenResolution)(ULONG aScreenId, ULONG *aWidth, ULONG *aHeight, ULONG *aBitsPerPixel, LONG *aXOrigin, LONG *aYOrigin); 197 STDMETHOD(AttachFramebuffer)(ULONG aScreenId, 198 IFramebuffer *aFramebuffer); 199 STDMETHOD(DetachFramebuffer)(ULONG aScreenId); 200 STDMETHOD(QueryFramebuffer)(ULONG aScreenId, 201 IFramebuffer **aFramebuffer); 202 STDMETHOD(SetVideoModeHint)(ULONG aDisplay, BOOL aEnabled, BOOL aChangeOrigin, LONG aOriginX, LONG aOriginY, ULONG aWidth, ULONG aHeight, ULONG aBitsPerPixel); 203 STDMETHOD(TakeScreenShot)(ULONG aScreenId, BYTE *address, ULONG width, ULONG height); 204 STDMETHOD(TakeScreenShotToArray)(ULONG aScreenId, ULONG width, ULONG height, ComSafeArrayOut(BYTE, aScreenData)); 205 STDMETHOD(TakeScreenShotPNGToArray)(ULONG aScreenId, ULONG width, ULONG height, ComSafeArrayOut(BYTE, aScreenData)); 206 STDMETHOD(DrawToScreen)(ULONG aScreenId, BYTE *address, ULONG x, ULONG y, ULONG width, ULONG height); 207 STDMETHOD(InvalidateAndUpdate)(); 208 STDMETHOD(SetSeamlessMode)(BOOL enabled); 209 210 STDMETHOD(CompleteVHWACommand)(BYTE *pCommand); 211 212 STDMETHOD(ViewportChanged)(ULONG aScreenId, ULONG x, ULONG y, ULONG width, ULONG height); 213 STDMETHOD(QuerySourceBitmap)(ULONG aScreenId, 214 IDisplaySourceBitmap **aDisplaySourceBitmap); 215 STDMETHOD(SetFramebufferUpdateMode)(ULONG aScreenId, 216 FramebufferUpdateMode_T aFramebufferUpdateMode); 217 179 virtual void i_getFramebufferDimensions(int32_t *px1, int32_t *py1, 180 int32_t *px2, int32_t *py2); 181 218 182 static const PDMDRVREG DrvReg; 219 183 220 184 private: 221 185 // Wrapped IDisplay properties 186 187 // Wrapped IDisplay methods 188 virtual HRESULT getScreenResolution(ULONG aScreenId, 189 ULONG *aWidth, 190 ULONG *aHeight, 191 ULONG *aBitsPerPixel, 192 LONG *aXOrigin, 193 LONG *aYOrigin); 194 virtual HRESULT attachFramebuffer(ULONG aScreenId, 195 const ComPtr<IFramebuffer> &aFramebuffer); 196 virtual HRESULT detachFramebuffer(ULONG aScreenId); 197 virtual HRESULT queryFramebuffer(ULONG aScreenId, 198 ComPtr<IFramebuffer> &aFramebuffer); 199 virtual HRESULT setVideoModeHint(ULONG aDisplay, 200 BOOL aEnabled, 201 BOOL aChangeOrigin, 202 LONG aOriginX, 203 LONG aOriginY, 204 ULONG aWidth, 205 ULONG aHeight, 206 ULONG aBitsPerPixel); 207 virtual HRESULT setSeamlessMode(BOOL aEnabled); 208 virtual HRESULT takeScreenShot(ULONG aScreenId, 209 BYTE *aAddress, 210 ULONG aWidth, 211 ULONG aHeight); 212 virtual HRESULT takeScreenShotToArray(ULONG aScreenId, 213 ULONG aWidth, 214 ULONG aHeight, 215 std::vector<BYTE> &aScreenData); 216 virtual HRESULT takeScreenShotPNGToArray(ULONG aScreenId, 217 ULONG aWidth, 218 ULONG aHeight, 219 std::vector<BYTE> &aScreenData); 220 virtual HRESULT drawToScreen(ULONG aScreenId, 221 BYTE *aAddress, 222 ULONG aX, 223 ULONG aY, 224 ULONG aWidth, 225 ULONG aHeight); 226 virtual HRESULT invalidateAndUpdate(); 227 virtual HRESULT completeVHWACommand(BYTE *aCommand); 228 virtual HRESULT viewportChanged(ULONG aScreenId, 229 ULONG aX, 230 ULONG aY, 231 ULONG aWidth, 232 ULONG aHeight); 233 virtual HRESULT querySourceBitmap(ULONG aScreenId, 234 ComPtr<IDisplaySourceBitmap> &aDisplaySourceBitmap); 235 virtual HRESULT setFramebufferUpdateMode(ULONG aScreenId, 236 FramebufferUpdateMode_T aFramebufferUpdateMode); 237 238 // Wrapped IEventListener properties 239 240 // Wrapped IEventListener methods 241 virtual HRESULT handleEvent(const ComPtr<IEvent> &aEvent); 242 243 // other internal methods 222 244 #ifdef VBOX_WITH_CRHGSMI 223 void setupCrHgsmiData(void); 224 void destructCrHgsmiData(void); 225 #endif 226 227 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 228 int crViewportNotify(ULONG aScreenId, ULONG x, ULONG y, ULONG width, ULONG height); 229 #endif 230 231 static DECLCALLBACK(void*) drvQueryInterface(PPDMIBASE pInterface, const char *pszIID); 232 static DECLCALLBACK(int) drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags); 233 static DECLCALLBACK(void) drvDestruct(PPDMDRVINS pDrvIns); 234 static DECLCALLBACK(int) displayResizeCallback(PPDMIDISPLAYCONNECTOR pInterface, uint32_t bpp, void *pvVRAM, uint32_t cbLine, uint32_t cx, uint32_t cy); 235 static DECLCALLBACK(void) displayUpdateCallback(PPDMIDISPLAYCONNECTOR pInterface, 236 uint32_t x, uint32_t y, uint32_t cx, uint32_t cy); 237 static DECLCALLBACK(void) displayRefreshCallback(PPDMIDISPLAYCONNECTOR pInterface); 238 static DECLCALLBACK(void) displayResetCallback(PPDMIDISPLAYCONNECTOR pInterface); 239 static DECLCALLBACK(void) displayLFBModeChangeCallback(PPDMIDISPLAYCONNECTOR pInterface, bool fEnabled); 240 static DECLCALLBACK(void) displayProcessAdapterDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, uint32_t u32VRAMSize); 241 static DECLCALLBACK(void) displayProcessDisplayDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, unsigned uScreenId); 245 void i_setupCrHgsmiData(void); 246 void i_destructCrHgsmiData(void); 247 #endif 248 249 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 250 int i_crViewportNotify(ULONG aScreenId, ULONG x, ULONG y, ULONG width, ULONG height); 251 #endif 252 253 static DECLCALLBACK(void*) i_drvQueryInterface(PPDMIBASE pInterface, const char *pszIID); 254 static DECLCALLBACK(int) i_drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags); 255 static DECLCALLBACK(void) i_drvDestruct(PPDMDRVINS pDrvIns); 256 static DECLCALLBACK(int) i_displayResizeCallback(PPDMIDISPLAYCONNECTOR pInterface, uint32_t bpp, void *pvVRAM, 257 uint32_t cbLine, uint32_t cx, uint32_t cy); 258 static DECLCALLBACK(void) i_displayUpdateCallback(PPDMIDISPLAYCONNECTOR pInterface, 259 uint32_t x, uint32_t y, uint32_t cx, uint32_t cy); 260 static DECLCALLBACK(void) i_displayRefreshCallback(PPDMIDISPLAYCONNECTOR pInterface); 261 static DECLCALLBACK(void) i_displayResetCallback(PPDMIDISPLAYCONNECTOR pInterface); 262 static DECLCALLBACK(void) i_displayLFBModeChangeCallback(PPDMIDISPLAYCONNECTOR pInterface, bool fEnabled); 263 static DECLCALLBACK(void) i_displayProcessAdapterDataCallback(PPDMIDISPLAYCONNECTOR pInterface, 264 void *pvVRAM, uint32_t u32VRAMSize); 265 static DECLCALLBACK(void) i_displayProcessDisplayDataCallback(PPDMIDISPLAYCONNECTOR pInterface, 266 void *pvVRAM, unsigned uScreenId); 242 267 243 268 #ifdef VBOX_WITH_VIDEOHWACCEL 244 static DECLCALLBACK(int) displayVHWACommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVHWACMD pCommand);269 static DECLCALLBACK(int) i_displayVHWACommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVHWACMD pCommand); 245 270 #endif 246 271 247 272 #ifdef VBOX_WITH_CRHGSMI 248 static DECLCALLBACK(void) displayCrHgsmiCommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVDMACMD_CHROMIUM_CMD pCmd, uint32_t cbCmd); 249 static DECLCALLBACK(void) displayCrHgsmiControlProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVDMACMD_CHROMIUM_CTL pCtl, uint32_t cbCtl); 250 251 static DECLCALLBACK(void) displayCrHgsmiCommandCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 252 static DECLCALLBACK(void) displayCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 253 #endif 254 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 255 static DECLCALLBACK(int) displayCrHgcmCtlSubmit(PPDMIDISPLAYCONNECTOR pInterface, 256 struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, 257 PFNCRCTLCOMPLETION pfnCompletion, 258 void *pvCompletion); 259 static DECLCALLBACK(void) displayCrHgcmCtlSubmitCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 273 static DECLCALLBACK(void) i_displayCrHgsmiCommandProcess(PPDMIDISPLAYCONNECTOR pInterface, 274 PVBOXVDMACMD_CHROMIUM_CMD pCmd, uint32_t cbCmd); 275 static DECLCALLBACK(void) i_displayCrHgsmiControlProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVDMACMD_CHROMIUM_CTL pCtl, 276 uint32_t cbCtl); 277 278 static DECLCALLBACK(void) i_displayCrHgsmiCommandCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, 279 void *pvContext); 280 static DECLCALLBACK(void) i_displayCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, 281 void *pvContext); 282 #endif 283 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 284 static DECLCALLBACK(int) i_displayCrHgcmCtlSubmit(PPDMIDISPLAYCONNECTOR pInterface, 285 struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, 286 PFNCRCTLCOMPLETION pfnCompletion, 287 void *pvCompletion); 288 static DECLCALLBACK(void) i_displayCrHgcmCtlSubmitCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, 289 void *pvContext); 260 290 #endif 261 291 #ifdef VBOX_WITH_HGSMI 262 static DECLCALLBACK(int) displayVBVAEnable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, PVBVAHOSTFLAGS pHostFlags, bool fRenderThreadMode); 263 static DECLCALLBACK(void) displayVBVADisable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId); 264 static DECLCALLBACK(void) displayVBVAUpdateBegin(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId); 265 static DECLCALLBACK(void) displayVBVAUpdateProcess(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, const PVBVACMDHDR pCmd, size_t cbCmd); 266 static DECLCALLBACK(void) displayVBVAUpdateEnd(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, int32_t x, int32_t y, uint32_t cx, uint32_t cy); 267 static DECLCALLBACK(int) displayVBVAResize(PPDMIDISPLAYCONNECTOR pInterface, const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, void *pvVRAM); 268 static DECLCALLBACK(int) displayVBVAMousePointerShape(PPDMIDISPLAYCONNECTOR pInterface, bool fVisible, bool fAlpha, uint32_t xHot, uint32_t yHot, uint32_t cx, uint32_t cy, const void *pvShape); 269 #endif 270 271 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 272 static DECLCALLBACK(void) displayCrVRecScreenshotPerform(void *pvCtx, uint32_t uScreen, 273 uint32_t x, uint32_t y, 274 uint32_t uBitsPerPixel, uint32_t uBytesPerLine, 275 uint32_t uGuestWidth, uint32_t uGuestHeight, 276 uint8_t *pu8BufferAddress, uint64_t u64TimeStamp); 277 static DECLCALLBACK(bool) displayCrVRecScreenshotBegin(void *pvCtx, uint32_t uScreen, uint64_t u64TimeStamp); 278 static DECLCALLBACK(void) displayCrVRecScreenshotEnd(void *pvCtx, uint32_t uScreen, uint64_t u64TimeStamp); 279 280 static DECLCALLBACK(void) displayVRecCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); 281 #endif 282 static DECLCALLBACK(void) displayCrCmdFree(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, int rc, void *pvCompletion); 283 284 static DECLCALLBACK(void) displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pvUser); 285 static DECLCALLBACK(int) displaySSMLoadScreenshot(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass); 286 static DECLCALLBACK(void) displaySSMSave(PSSMHANDLE pSSM, void *pvUser); 287 static DECLCALLBACK(int) displaySSMLoad(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass); 292 static DECLCALLBACK(int) i_displayVBVAEnable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, 293 PVBVAHOSTFLAGS pHostFlags, bool fRenderThreadMode); 294 static DECLCALLBACK(void) i_displayVBVADisable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId); 295 static DECLCALLBACK(void) i_displayVBVAUpdateBegin(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId); 296 static DECLCALLBACK(void) i_displayVBVAUpdateProcess(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, 297 const PVBVACMDHDR pCmd, size_t cbCmd); 298 static DECLCALLBACK(void) i_displayVBVAUpdateEnd(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, int32_t x, int32_t y, 299 uint32_t cx, uint32_t cy); 300 static DECLCALLBACK(int) i_displayVBVAResize(PPDMIDISPLAYCONNECTOR pInterface, const PVBVAINFOVIEW pView, 301 const PVBVAINFOSCREEN pScreen, void *pvVRAM); 302 static DECLCALLBACK(int) i_displayVBVAMousePointerShape(PPDMIDISPLAYCONNECTOR pInterface, bool fVisible, bool fAlpha, 303 uint32_t xHot, uint32_t yHot, uint32_t cx, uint32_t cy, 304 const void *pvShape); 305 #endif 306 307 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 308 static DECLCALLBACK(void) i_displayCrVRecScreenshotPerform(void *pvCtx, uint32_t uScreen, 309 uint32_t x, uint32_t y, 310 uint32_t uBitsPerPixel, uint32_t uBytesPerLine, 311 uint32_t uGuestWidth, uint32_t uGuestHeight, 312 uint8_t *pu8BufferAddress, uint64_t u64TimeStamp); 313 static DECLCALLBACK(bool) i_displayCrVRecScreenshotBegin(void *pvCtx, uint32_t uScreen, uint64_t u64TimeStamp); 314 static DECLCALLBACK(void) i_displayCrVRecScreenshotEnd(void *pvCtx, uint32_t uScreen, uint64_t u64TimeStamp); 315 316 static DECLCALLBACK(void) i_displayVRecCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, 317 void *pvContext); 318 #endif 319 static DECLCALLBACK(void) i_displayCrCmdFree(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, int rc, void *pvCompletion); 320 321 static DECLCALLBACK(void) i_displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pvUser); 322 static DECLCALLBACK(int) i_displaySSMLoadScreenshot(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass); 323 static DECLCALLBACK(void) i_displaySSMSave(PSSMHANDLE pSSM, void *pvUser); 324 static DECLCALLBACK(int) i_displaySSMLoad(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass); 288 325 289 326 Console * const mParent; 290 327 /** Pointer to the associated display driver. */ 291 struct DRVMAINDISPLAY *mpDrv;328 struct DRVMAINDISPLAY *mpDrv; 292 329 /** Pointer to the device instance for the VMM Device. */ 293 330 PPDMDEVINS mpVMMDev; … … 330 367 #endif 331 368 332 bool vbvaFetchCmd(VBVACMDHDR **ppHdr, uint32_t *pcbCmd);333 void vbvaReleaseCmd(VBVACMDHDR *pHdr, int32_t cbCmd);334 335 void handleResizeCompletedEMT(unsigned uScreenId, BOOL fResizeContext);369 bool i_vbvaFetchCmd(VBVACMDHDR **ppHdr, uint32_t *pcbCmd); 370 void i_vbvaReleaseCmd(VBVACMDHDR *pHdr, int32_t cbCmd); 371 372 void i_handleResizeCompletedEMT(unsigned uScreenId, BOOL fResizeContext); 336 373 337 374 /* Old guest additions (3.x?) use VMMDev for VBVA and the host VBVA code (VideoAccel*) … … 342 379 volatile uint32_t mfu32PendingVideoAccelDisable; 343 380 344 int vbvaLock(void);345 void vbvaUnlock(void);381 int i_vbvaLock(void); 382 void i_vbvaUnlock(void); 346 383 347 384 public: 348 bool vbvaLockIsOwner(void); 349 350 static int displayTakeScreenshotEMT(Display *pDisplay, ULONG aScreenId, uint8_t **ppu8Data, size_t *pcbData, uint32_t *pu32Width, uint32_t *pu32Height); 351 352 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 353 static BOOL displayCheckTakeScreenshotCrOgl(Display *pDisplay, ULONG aScreenId, uint8_t *pu8Data, uint32_t u32Width, uint32_t u32Height); 354 int crCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, PFNCRCTLCOMPLETION pfnCompletion, void *pvCompletion); 355 int crCtlSubmitSync(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd); 385 386 bool i_vbvaLockIsOwner(void); 387 388 static int i_displayTakeScreenshotEMT(Display *pDisplay, ULONG aScreenId, uint8_t **ppu8Data, size_t *pcbData, 389 uint32_t *pu32Width, uint32_t *pu32Height); 390 391 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 392 static BOOL i_displayCheckTakeScreenshotCrOgl(Display *pDisplay, ULONG aScreenId, uint8_t *pu8Data, 393 uint32_t u32Width, uint32_t u32Height); 394 int i_crCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, PFNCRCTLCOMPLETION pfnCompletion, void *pvCompletion); 395 int i_crCtlSubmitSync(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd); 356 396 /* copies the given command and submits it asynchronously, 357 397 * i.e. the pCmd data may be discarded right after the call returns */ 358 int crCtlSubmitAsyncCmdCopy(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd);398 int i_crCtlSubmitAsyncCmdCopy(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd); 359 399 /* performs synchronous request processing if 3D backend has something to display 360 400 * this is primarily to work-around 3d<->main thread deadlocks on OSX … … 364 404 * that must synchronize with 3D backend only when some 3D data is displayed. 365 405 * The routine does NOT provide any info on whether command is processed asynchronously or not */ 366 int crCtlSubmitSyncIfHasDataForScreen(uint32_t u32ScreenID, struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd);406 int i_crCtlSubmitSyncIfHasDataForScreen(uint32_t u32ScreenID, struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd); 367 407 #endif 368 408 369 409 private: 370 static void InvalidateAndUpdateEMT(Display *pDisplay, unsigned uId, bool fUpdateAll);371 static int drawToScreenEMT(Display *pDisplay, ULONG aScreenId, BYTE *address, ULONG x, ULONG y, ULONG width, ULONG height);372 373 int videoAccelRefreshProcess(void);410 static void i_InvalidateAndUpdateEMT(Display *pDisplay, unsigned uId, bool fUpdateAll); 411 static int i_drawToScreenEMT(Display *pDisplay, ULONG aScreenId, BYTE *address, ULONG x, ULONG y, ULONG width, ULONG height); 412 413 int i_videoAccelRefreshProcess(void); 374 414 375 415 /* Functions run under VBVA lock. */ 376 int videoAccelEnable(bool fEnable, VBVAMEMORY *pVbvaMemory);377 int videoAccelFlush(void);378 379 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 380 int crOglWindowsShow(bool fShow);416 int i_videoAccelEnable(bool fEnable, VBVAMEMORY *pVbvaMemory); 417 int i_videoAccelFlush(void); 418 419 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 420 int i_crOglWindowsShow(bool fShow); 381 421 #endif 382 422 … … 391 431 }; 392 432 433 /* helper function, code in DisplayResampleImage.cpp */ 393 434 void gdImageCopyResampled(uint8_t *dst, uint8_t *src, 394 int dstX, int dstY, int srcX, int srcY,395 int dstW, int dstH, int srcW, int srcH);435 int dstX, int dstY, int srcX, int srcY, 436 int dstW, int dstH, int srcW, int srcH); 396 437 397 438 void BitmapScale32(uint8_t *dst, int dstW, int dstH, 398 439 const uint8_t *src, int iDeltaLine, int srcW, int srcH); 399 440 441 /* helper function, code in DisplayPNGUtul.cpp */ 400 442 int DisplayMakePNG(uint8_t *pu8Data, uint32_t cx, uint32_t cy, 401 443 uint8_t **ppu8PNG, uint32_t *pcbPNG, uint32_t *pcxPNG, uint32_t *pcyPNG, 402 uint8_t fLimitSize);444 uint8_t fLimitSize); 403 445 404 446 class ATL_NO_VTABLE DisplaySourceBitmap: … … 416 458 void uninit(); 417 459 418 bool usesVRAM(void) { return m.pu8Allocated == NULL; }460 bool i_usesVRAM(void) { return m.pu8Allocated == NULL; } 419 461 420 462 private: -
trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
r52032 r52064 1379 1379 1380 1380 NOREF(u32ClientId); 1381 mDisplay-> VideoAccelVRDP(true);1381 mDisplay->i_VideoAccelVRDP(true); 1382 1382 1383 1383 #ifdef VBOX_WITH_GUEST_PROPS … … 1413 1413 } 1414 1414 1415 mDisplay-> VideoAccelVRDP(false);1415 mDisplay->i_VideoAccelVRDP(false); 1416 1416 1417 1417 if (fu32Intercepted & VRDE_CLIENT_INTERCEPT_USB) … … 5183 5183 int vrc = VINF_SUCCESS; 5184 5184 if (SUCCEEDED(rc)) 5185 vrc = mDisplay-> VideoCaptureEnableScreens(ComSafeArrayAsInParam(screens));5185 vrc = mDisplay->i_VideoCaptureEnableScreens(ComSafeArrayAsInParam(screens)); 5186 5186 if (RT_SUCCESS(vrc)) 5187 5187 { 5188 5188 if (fEnabled) 5189 5189 { 5190 vrc = mDisplay-> VideoCaptureStart();5190 vrc = mDisplay->i_VideoCaptureStart(); 5191 5191 if (RT_FAILURE(vrc)) 5192 5192 rc = setError(E_FAIL, tr("Unable to start video capturing (%Rrc)"), vrc); 5193 5193 } 5194 5194 else 5195 mDisplay-> VideoCaptureStop();5195 mDisplay->i_VideoCaptureStop(); 5196 5196 } 5197 5197 else … … 7324 7324 alock.release(); 7325 7325 7326 mDisplay-> notifyPowerDown();7326 mDisplay->i_notifyPowerDown(); 7327 7327 7328 7328 alock.acquire(); … … 9370 9370 AssertRCBreak(vrc); 9371 9371 9372 vrc = static_cast<Console *>(pConsole)->i_getDisplay()-> registerSSM(pConsole->mpUVM);9372 vrc = static_cast<Console *>(pConsole)->i_getDisplay()->i_registerSSM(pConsole->mpUVM); 9373 9373 AssertRC(vrc); 9374 9374 if (RT_FAILURE(vrc)) -
trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
r51612 r52064 1107 1107 if (SUCCEEDED(hr)) 1108 1108 { 1109 hr = server->mConsole->i_getDisplay()->GetScreenResolution(uScreenId, NULL, NULL, NULL, 1109 ULONG dummy; 1110 hr = server->mConsole->i_getDisplay()->GetScreenResolution(uScreenId, &dummy, &dummy, &dummy, 1110 1111 &xOrigin, &yOrigin); 1111 1112 … … 2138 2139 data.aParms[0].u.pointer.size = sizeof(outputRedirect); 2139 2140 2140 int rc = mConsole->i_getDisplay()-> crCtlSubmitSync(&data.Hdr, sizeof (data));2141 int rc = mConsole->i_getDisplay()->i_crCtlSubmitSync(&data.Hdr, sizeof (data)); 2141 2142 if (!RT_SUCCESS(rc)) 2142 2143 { -
trunk/src/VBox/Main/src-client/DisplayImpl.cpp
r51984 r52064 5 5 6 6 /* 7 * Copyright (C) 2006-201 3Oracle Corporation7 * Copyright (C) 2006-2014 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 148 148 mCrOglScreenshotData.u32Screen = CRSCREEN_ALL; 149 149 mCrOglScreenshotData.pvContext = this; 150 mCrOglScreenshotData.pfnScreenshotBegin = displayCrVRecScreenshotBegin;151 mCrOglScreenshotData.pfnScreenshotPerform = displayCrVRecScreenshotPerform;152 mCrOglScreenshotData.pfnScreenshotEnd = displayCrVRecScreenshotEnd;150 mCrOglScreenshotData.pfnScreenshotBegin = i_displayCrVRecScreenshotBegin; 151 mCrOglScreenshotData.pfnScreenshotPerform = i_displayCrVRecScreenshotPerform; 152 mCrOglScreenshotData.pfnScreenshotEnd = i_displayCrVRecScreenshotEnd; 153 153 #endif 154 154 … … 220 220 int iDeltaLine = cx * 4; 221 221 222 BitmapScale32 223 224 225 226 222 BitmapScale32(dst, 223 dstW, dstH, 224 src, 225 iDeltaLine, 226 srcW, srcH); 227 227 228 228 *ppu8Thumbnail = pu8Thumbnail; … … 282 282 #endif 283 283 284 DECLCALLBACK(void) 285 Display::displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pvUser) 284 DECLCALLBACK(void) Display::i_displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pvUser) 286 285 { 287 286 Display *that = static_cast<Display*>(pvUser); … … 318 317 { 319 318 VBOX_DISPLAY_SAVESCREENSHOT_DATA *pScreenshot = 320 (VBOX_DISPLAY_SAVESCREENSHOT_DATA*)RTMemAllocZ(sizeof 319 (VBOX_DISPLAY_SAVESCREENSHOT_DATA*)RTMemAllocZ(sizeof(*pScreenshot)); 321 320 if (pScreenshot) 322 321 { … … 338 337 data.aParms[0].type = VBOX_HGCM_SVC_PARM_PTR; 339 338 data.aParms[0].u.pointer.addr = &pScreenshot->Base; 340 data.aParms[0].u.pointer.size = sizeof 341 342 int rc = that-> crCtlSubmitSync(&data.Hdr, sizeof(data));339 data.aParms[0].u.pointer.size = sizeof(pScreenshot->Base); 340 341 int rc = that->i_crCtlSubmitSync(&data.Hdr, sizeof(data)); 343 342 if (RT_SUCCESS(rc)) 344 343 { … … 373 372 { 374 373 /* SSM code is executed on EMT(0), therefore no need to use VMR3ReqCallWait. */ 375 int rc = Display:: displayTakeScreenshotEMT(that, VBOX_VIDEO_PRIMARY_SCREEN, &pu8Data, &cbData, &cx, &cy);374 int rc = Display::i_displayTakeScreenshotEMT(that, VBOX_VIDEO_PRIMARY_SCREEN, &pu8Data, &cbData, &cx, &cy); 376 375 377 376 /* … … 399 398 400 399 /* This can be called from any thread. */ 401 Assert(!that-> vbvaLockIsOwner());400 Assert(!that->i_vbvaLockIsOwner()); 402 401 that->mpDrv->pUpPort->pfnFreeScreenshot(that->mpDrv->pUpPort, pu8Data); 403 402 } … … 427 426 428 427 /* First block. */ 429 SSMR3PutU32(pSSM, cbThumbnail + 2 * sizeof 428 SSMR3PutU32(pSSM, cbThumbnail + 2 * sizeof(uint32_t)); 430 429 SSMR3PutU32(pSSM, 0); /* Block type: thumbnail. */ 431 430 … … 438 437 439 438 /* Second block. */ 440 SSMR3PutU32(pSSM, cbPNG + 2 * sizeof 439 SSMR3PutU32(pSSM, cbPNG + 2 * sizeof(uint32_t)); 441 440 SSMR3PutU32(pSSM, 1); /* Block type: png. */ 442 441 … … 453 452 454 453 DECLCALLBACK(int) 455 Display:: displaySSMLoadScreenshot(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass)454 Display::i_displaySSMLoadScreenshot(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass) 456 455 { 457 456 Display *that = static_cast<Display*>(pvUser); … … 482 481 * @todo Fix and increase saved state version. 483 482 */ 484 if (cbBlock > 2 * sizeof 483 if (cbBlock > 2 * sizeof(uint32_t)) 485 484 { 486 485 rc = SSMR3Skip(pSSM, cbBlock); … … 496 495 */ 497 496 DECLCALLBACK(void) 498 Display:: displaySSMSave(PSSMHANDLE pSSM, void *pvUser)497 Display::i_displaySSMSave(PSSMHANDLE pSSM, void *pvUser) 499 498 { 500 499 Display *that = static_cast<Display*>(pvUser); … … 515 514 516 515 DECLCALLBACK(int) 517 Display:: displaySSMLoad(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass)516 Display::i_displaySSMLoad(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass) 518 517 { 519 518 Display *that = static_cast<Display*>(pvUser); … … 633 632 ComPtr<IEventSource> es; 634 633 mParent->COMGETTER(EventSource)(es.asOutParam()); 635 com::SafeArray 634 com::SafeArray<VBoxEventType_T> eventTypes; 636 635 eventTypes.push_back(VBoxEventType_OnStateChanged); 637 636 es->RegisterListener(this, ComSafeArrayAsInParam(eventTypes), true); … … 688 687 * pass pVM 689 688 */ 690 int Display:: registerSSM(PUVM pUVM)689 int Display::i_registerSSM(PUVM pUVM) 691 690 { 692 691 /* Version 2 adds width and height of the framebuffer; version 3 adds … … 696 695 mcMonitors * sizeof(uint32_t) * 8 + sizeof(uint32_t), 697 696 NULL, NULL, NULL, 698 NULL, displaySSMSave, NULL,699 NULL, displaySSMLoad, NULL, this);697 NULL, i_displaySSMSave, NULL, 698 NULL, i_displaySSMLoad, NULL, this); 700 699 AssertRCReturn(rc, rc); 701 700 … … 707 706 NULL, NULL, NULL, 708 707 NULL, NULL, NULL, 709 NULL, displaySSMLoad, NULL, this);708 NULL, i_displaySSMLoad, NULL, this); 710 709 AssertRCReturn(rc, rc); 711 710 … … 713 712 NULL, NULL, NULL, 714 713 NULL, NULL, NULL, 715 NULL, displaySSMLoad, NULL, this);714 NULL, i_displaySSMLoad, NULL, this); 716 715 AssertRCReturn(rc, rc); 717 716 … … 719 718 rc = SSMR3RegisterExternal(pUVM, "DisplayScreenshot", 1100 /*uInstance*/, sSSMDisplayScreenshotVer, 0 /*cbGuess*/, 720 719 NULL, NULL, NULL, 721 NULL, displaySSMSaveScreenshot, NULL,722 NULL, displaySSMLoadScreenshot, NULL, this);720 NULL, i_displaySSMSaveScreenshot, NULL, 721 NULL, i_displaySSMLoadScreenshot, NULL, this); 723 722 724 723 AssertRCReturn(rc, rc); … … 727 726 } 728 727 729 DECLCALLBACK(void) Display:: displayCrCmdFree(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, int rc, void *pvCompletion)728 DECLCALLBACK(void) Display::i_displayCrCmdFree(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, int rc, void *pvCompletion) 730 729 { 731 730 Assert(pvCompletion); … … 734 733 735 734 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 736 int Display:: crOglWindowsShow(bool fShow)735 int Display::i_crOglWindowsShow(bool fShow) 737 736 { 738 737 if (!mfCrOglDataHidden == !!fShow) … … 757 756 } 758 757 759 VBOXCRCMDCTL_HGCM *pData = (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof 758 VBOXCRCMDCTL_HGCM *pData = (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof(VBOXCRCMDCTL_HGCM)); 760 759 if (!pData) 761 760 { … … 770 769 pData->aParms[0].u.uint32 = (uint32_t)fShow; 771 770 772 int rc = crCtlSubmit(&pData->Hdr, sizeof (*pData),displayCrCmdFree, pData);771 int rc = i_crCtlSubmit(&pData->Hdr, sizeof(*pData), i_displayCrCmdFree, pData); 773 772 if (RT_SUCCESS(rc)) 774 773 mfCrOglDataHidden = !fShow; … … 784 783 785 784 786 // IEventListener method787 STDMETHODIMP Display::HandleEvent(IEvent * aEvent)788 {789 VBoxEventType_T aType = VBoxEventType_Invalid;790 791 aEvent->COMGETTER(Type)(&aType);792 switch (aType)793 {794 case VBoxEventType_OnStateChanged:795 {796 ComPtr<IStateChangedEvent> scev = aEvent;797 Assert(scev);798 MachineState_T machineState;799 scev->COMGETTER(State)(&machineState);800 if ( machineState == MachineState_Running801 || machineState == MachineState_Teleporting802 || machineState == MachineState_LiveSnapshotting803 )804 {805 LogRelFlowFunc(("Machine is running.\n"));806 807 mfMachineRunning = true;808 809 #ifdef VBOX_WITH_CROGL810 crOglWindowsShow(true);811 #endif812 }813 else814 {815 mfMachineRunning = false;816 817 #ifdef VBOX_WITH_CROGL818 if (machineState == MachineState_Paused)819 crOglWindowsShow(false);820 #endif821 }822 break;823 }824 default:825 AssertFailed();826 }827 828 return S_OK;829 }830 831 785 // public methods only for internal purposes 832 786 ///////////////////////////////////////////////////////////////////////////// 833 787 834 int Display:: notifyCroglResize(const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, void *pvVRAM)788 int Display::i_notifyCroglResize(const PVBVAINFOVIEW pView, const PVBVAINFOSCREEN pScreen, void *pvVRAM) 835 789 { 836 790 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) … … 850 804 { 851 805 VBOXCRCMDCTL_HGCM *pCtl = 852 (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof (CRVBOXHGCMDEVRESIZE) + sizeof(VBOXCRCMDCTL_HGCM));806 (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof(CRVBOXHGCMDEVRESIZE) + sizeof(VBOXCRCMDCTL_HGCM)); 853 807 if (pCtl) 854 808 { … … 861 815 pCtl->aParms[0].type = VBOX_HGCM_SVC_PARM_PTR; 862 816 pCtl->aParms[0].u.pointer.addr = pData; 863 pCtl->aParms[0].u.pointer.size = sizeof 864 865 rc = crCtlSubmit(&pCtl->Hdr, sizeof (*pCtl),displayCrCmdFree, pCtl);817 pCtl->aParms[0].u.pointer.size = sizeof(*pData); 818 819 rc = i_crCtlSubmit(&pCtl->Hdr, sizeof(*pCtl), i_displayCrCmdFree, pCtl); 866 820 if (!RT_SUCCESS(rc)) 867 821 { … … 889 843 * @thread EMT 890 844 */ 891 int Display:: handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRAM,892 uint32_t cbLine, uint32_t w, uint32_t h, uint16_t flags)845 int Display::i_handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRAM, 846 uint32_t cbLine, uint32_t w, uint32_t h, uint16_t flags) 893 847 { 894 848 LogRel(("Display::handleDisplayResize(): uScreenId = %d, pvVRAM=%p " … … 918 872 if (uScreenId == VBOX_VIDEO_PRIMARY_SCREEN) 919 873 { 920 Assert(! vbvaLockIsOwner());874 Assert(!i_vbvaLockIsOwner()); 921 875 mpDrv->pUpPort->pfnSetRenderVRAM(mpDrv->pUpPort, false); 922 876 … … 937 891 } 938 892 939 handleResizeCompletedEMT(uScreenId, TRUE);893 i_handleResizeCompletedEMT(uScreenId, TRUE); 940 894 941 895 return VINF_SUCCESS; … … 948 902 * @thread EMT 949 903 */ 950 void Display:: handleResizeCompletedEMT(unsigned uScreenId, BOOL fResizeContext)904 void Display::i_handleResizeCompletedEMT(unsigned uScreenId, BOOL fResizeContext) 951 905 { 952 906 LogRelFlowFunc(("\n")); … … 1003 957 1004 958 if (fResizeContext) 1005 crCtlSubmitAsyncCmdCopy(&data.Hdr, sizeof(data));959 i_crCtlSubmitAsyncCmdCopy(&data.Hdr, sizeof(data)); 1006 960 else 1007 crCtlSubmitSync(&data.Hdr, sizeof(data));961 i_crCtlSubmitSync(&data.Hdr, sizeof(data)); 1008 962 } 1009 963 } … … 1012 966 } 1013 967 1014 static void checkCoordBounds(int *px, int *py, int *pw, int *ph, int cx, int cy)968 static void i_checkCoordBounds(int *px, int *py, int *pw, int *ph, int cx, int cy) 1015 969 { 1016 970 /* Correct negative x and y coordinates. */ … … 1083 1037 * @thread EMT 1084 1038 */ 1085 void Display:: handleDisplayUpdateLegacy(int x, int y, int w, int h)1039 void Display::i_handleDisplayUpdateLegacy(int x, int y, int w, int h) 1086 1040 { 1087 1041 unsigned uScreenId = mapCoordsToScreen(maFramebuffers, mcMonitors, &x, &y, &w, &h); … … 1091 1045 #endif /* DEBUG_sunlover */ 1092 1046 1093 handleDisplayUpdate(uScreenId, x, y, w, h);1094 } 1095 1096 void Display:: handleDisplayUpdate(unsigned uScreenId, int x, int y, int w, int h)1047 i_handleDisplayUpdate(uScreenId, x, y, w, h); 1048 } 1049 1050 void Display::i_handleDisplayUpdate(unsigned uScreenId, int x, int y, int w, int h) 1097 1051 { 1098 1052 /* … … 1111 1065 1112 1066 if (uScreenId == VBOX_VIDEO_PRIMARY_SCREEN) 1113 checkCoordBounds (&x, &y, &w, &h, mpDrv->IConnector.cx, mpDrv->IConnector.cy);1067 i_checkCoordBounds (&x, &y, &w, &h, mpDrv->IConnector.cx, mpDrv->IConnector.cy); 1114 1068 else 1115 checkCoordBounds (&x, &y, &w, &h, maFramebuffers[uScreenId].w,1069 i_checkCoordBounds (&x, &y, &w, &h, maFramebuffers[uScreenId].w, 1116 1070 maFramebuffers[uScreenId].h); 1117 1071 … … 1175 1129 * and the origin is (0, 0), not (1, 1) like the GUI returns. 1176 1130 */ 1177 void Display:: getFramebufferDimensions(int32_t *px1, int32_t *py1,1178 int32_t *px2, int32_t *py2)1131 void Display::i_getFramebufferDimensions(int32_t *px1, int32_t *py1, 1132 int32_t *px2, int32_t *py2) 1179 1133 { 1180 1134 int32_t x1 = 0, y1 = 0, x2 = 0, y2 = 0; … … 1221 1175 { 1222 1176 /* Initialize result to an empty record. */ 1223 memset (prectResult, 0, sizeof(RTRECT));1177 memset(prectResult, 0, sizeof(RTRECT)); 1224 1178 1225 1179 int xLeftResult = RT_MAX(prect1->xLeft, prect2->xLeft); … … 1249 1203 } 1250 1204 1251 int Display:: handleSetVisibleRegion(uint32_t cRect, PRTRECT pRect)1205 int Display::i_handleSetVisibleRegion(uint32_t cRect, PRTRECT pRect) 1252 1206 { 1253 1207 RTRECT *pVisibleRegion = (RTRECT *)RTMemTmpAlloc( RT_MAX(cRect, 1) 1254 * sizeof 1208 * sizeof(RTRECT)); 1255 1209 if (!pVisibleRegion) 1256 1210 { … … 1320 1274 if (mhCrOglSvc) 1321 1275 { 1322 VBOXCRCMDCTL_HGCM *pCtl = (VBOXCRCMDCTL_HGCM*)RTMemAlloc(RT_MAX(cRect, 1) * sizeof 1323 + sizeof 1276 VBOXCRCMDCTL_HGCM *pCtl = (VBOXCRCMDCTL_HGCM*)RTMemAlloc(RT_MAX(cRect, 1) * sizeof(RTRECT) 1277 + sizeof(VBOXCRCMDCTL_HGCM)); 1324 1278 if (pCtl) 1325 1279 { 1326 1280 RTRECT *pRectsCopy = (RTRECT*)(pCtl+1); 1327 memcpy(pRectsCopy, pRect, cRect * sizeof 1281 memcpy(pRectsCopy, pRect, cRect * sizeof(RTRECT)); 1328 1282 1329 1283 pCtl->Hdr.enmType = VBOXCRCMDCTL_TYPE_HGCM; … … 1332 1286 pCtl->aParms[0].type = VBOX_HGCM_SVC_PARM_PTR; 1333 1287 pCtl->aParms[0].u.pointer.addr = pRectsCopy; 1334 pCtl->aParms[0].u.pointer.size = cRect * sizeof 1335 1336 int rc = crCtlSubmit(&pCtl->Hdr, sizeof (*pCtl),displayCrCmdFree, pCtl);1288 pCtl->aParms[0].u.pointer.size = cRect * sizeof(RTRECT); 1289 1290 int rc = i_crCtlSubmit(&pCtl->Hdr, sizeof(*pCtl), i_displayCrCmdFree, pCtl); 1337 1291 if (!RT_SUCCESS(rc)) 1338 1292 { … … 1354 1308 } 1355 1309 1356 int Display:: handleQueryVisibleRegion(uint32_t *pcRect, PRTRECT pRect)1310 int Display::i_handleQueryVisibleRegion(uint32_t *pcRect, PRTRECT pRect) 1357 1311 { 1358 1312 // @todo Currently not used by the guest and is not implemented in framebuffers. Remove? … … 1370 1324 } VBVADIRTYREGION; 1371 1325 1372 static void vbvaRgnInit 1373 1326 static void vbvaRgnInit(VBVADIRTYREGION *prgn, DISPLAYFBINFO *paFramebuffers, unsigned cMonitors, 1327 Display *pd, PPDMIDISPLAYPORT pp) 1374 1328 { 1375 1329 prgn->paFramebuffers = paFramebuffers; … … 1387 1341 } 1388 1342 1389 static void vbvaRgnDirtyRect 1343 static void vbvaRgnDirtyRect(VBVADIRTYREGION *prgn, unsigned uScreenId, VBVACMDHDR *phdr) 1390 1344 { 1391 1345 LogSunlover(("x = %d, y = %d, w = %d, h = %d\n", … … 1445 1399 { 1446 1400 //@todo pfnUpdateDisplayRect must take the vram offset parameter for the framebuffer 1447 prgn->pPort->pfnUpdateDisplayRect 1448 prgn->pDisplay-> handleDisplayUpdateLegacy(phdr->x + pFBInfo->xOrigin,1449 phdr->y + pFBInfo->yOrigin, phdr->w, phdr->h);1401 prgn->pPort->pfnUpdateDisplayRect(prgn->pPort, phdr->x, phdr->y, phdr->w, phdr->h); 1402 prgn->pDisplay->i_handleDisplayUpdateLegacy(phdr->x + pFBInfo->xOrigin, 1403 phdr->y + pFBInfo->yOrigin, phdr->w, phdr->h); 1450 1404 } 1451 1405 … … 1453 1407 } 1454 1408 1455 static void vbvaRgnUpdateFramebuffer 1409 static void vbvaRgnUpdateFramebuffer(VBVADIRTYREGION *prgn, unsigned uScreenId) 1456 1410 { 1457 1411 DISPLAYFBINFO *pFBInfo = &prgn->paFramebuffers[uScreenId]; … … 1463 1417 { 1464 1418 //@todo pfnUpdateDisplayRect must take the vram offset parameter for the framebuffer 1465 prgn->pPort->pfnUpdateDisplayRect 1466 prgn->pDisplay-> handleDisplayUpdateLegacy(pFBInfo->dirtyRect.xLeft + pFBInfo->xOrigin,1467 pFBInfo->dirtyRect.yTop + pFBInfo->yOrigin, w, h);1468 } 1469 } 1470 1471 static void vbvaSetMemoryFlags(VBVAMEMORY *pVbvaMemory,1472 bool fVideoAccelEnabled,1473 bool fVideoAccelVRDP,1474 uint32_t fu32SupportedOrders,1475 DISPLAYFBINFO *paFBInfos,1476 unsigned cFBInfos)1419 prgn->pPort->pfnUpdateDisplayRect(prgn->pPort, pFBInfo->dirtyRect.xLeft, pFBInfo->dirtyRect.yTop, w, h); 1420 prgn->pDisplay->i_handleDisplayUpdateLegacy(pFBInfo->dirtyRect.xLeft + pFBInfo->xOrigin, 1421 pFBInfo->dirtyRect.yTop + pFBInfo->yOrigin, w, h); 1422 } 1423 } 1424 1425 static void i_vbvaSetMemoryFlags(VBVAMEMORY *pVbvaMemory, 1426 bool fVideoAccelEnabled, 1427 bool fVideoAccelVRDP, 1428 uint32_t fu32SupportedOrders, 1429 DISPLAYFBINFO *paFBInfos, 1430 unsigned cFBInfos) 1477 1431 { 1478 1432 if (pVbvaMemory) … … 1507 1461 1508 1462 #ifdef VBOX_WITH_HGSMI 1509 static void vbvaSetMemoryFlagsHGSMI 1510 1511 1512 1463 static void vbvaSetMemoryFlagsHGSMI(unsigned uScreenId, 1464 uint32_t fu32SupportedOrders, 1465 bool fVideoAccelVRDP, 1466 DISPLAYFBINFO *pFBInfo) 1513 1467 { 1514 1468 LogRelFlowFunc(("HGSMI[%d]: %p\n", uScreenId, pFBInfo->pVBVAHostFlags)); … … 1535 1489 } 1536 1490 1537 static void vbvaSetMemoryFlagsAllHGSMI 1538 1539 1540 1491 static void vbvaSetMemoryFlagsAllHGSMI(uint32_t fu32SupportedOrders, 1492 bool fVideoAccelVRDP, 1493 DISPLAYFBINFO *paFBInfos, 1494 unsigned cFBInfos) 1541 1495 { 1542 1496 unsigned uScreenId; … … 1549 1503 #endif /* VBOX_WITH_HGSMI */ 1550 1504 1551 bool Display:: VideoAccelAllowed(void)1505 bool Display::i_VideoAccelAllowed(void) 1552 1506 { 1553 1507 return true; 1554 1508 } 1555 1509 1556 int Display:: vbvaLock(void)1510 int Display::i_vbvaLock(void) 1557 1511 { 1558 1512 return RTCritSectEnter(&mVBVALock); 1559 1513 } 1560 1514 1561 void Display:: vbvaUnlock(void)1515 void Display::i_vbvaUnlock(void) 1562 1516 { 1563 1517 RTCritSectLeave(&mVBVALock); 1564 1518 } 1565 1519 1566 bool Display:: vbvaLockIsOwner(void)1520 bool Display::i_vbvaLockIsOwner(void) 1567 1521 { 1568 1522 return RTCritSectIsOwner(&mVBVALock); … … 1572 1526 * @thread EMT 1573 1527 */ 1574 int Display:: VideoAccelEnable(bool fEnable, VBVAMEMORY *pVbvaMemory)1528 int Display::i_VideoAccelEnable(bool fEnable, VBVAMEMORY *pVbvaMemory) 1575 1529 { 1576 1530 int rc; 1577 1578 1531 if (fEnable) 1579 1532 { 1580 1533 /* Process any pending VGA device changes, resize. */ 1581 Assert(! vbvaLockIsOwner());1534 Assert(!i_vbvaLockIsOwner()); 1582 1535 mpDrv->pUpPort->pfnUpdateDisplayAll(mpDrv->pUpPort, /* fFailOnResize = */ false); 1583 1536 } 1584 1537 1585 vbvaLock();1586 rc = videoAccelEnable(fEnable, pVbvaMemory);1587 vbvaUnlock();1538 i_vbvaLock(); 1539 rc = i_videoAccelEnable(fEnable, pVbvaMemory); 1540 i_vbvaUnlock(); 1588 1541 1589 1542 if (!fEnable) 1590 1543 { 1591 Assert(! vbvaLockIsOwner());1544 Assert(!i_vbvaLockIsOwner()); 1592 1545 mpDrv->pUpPort->pfnUpdateDisplayAll(mpDrv->pUpPort, /* fFailOnResize = */ false); 1593 1546 } … … 1596 1549 } 1597 1550 1598 int Display:: videoAccelEnable(bool fEnable, VBVAMEMORY *pVbvaMemory)1599 { 1600 Assert( vbvaLockIsOwner());1551 int Display::i_videoAccelEnable(bool fEnable, VBVAMEMORY *pVbvaMemory) 1552 { 1553 Assert(i_vbvaLockIsOwner()); 1601 1554 1602 1555 int rc = VINF_SUCCESS; 1603 1604 1556 /* Called each time the guest wants to use acceleration, 1605 1557 * or when the VGA device disables acceleration, … … 1618 1570 Assert((fEnable && pVbvaMemory) || (!fEnable && pVbvaMemory == NULL)); 1619 1571 1620 if (! VideoAccelAllowed ())1572 if (!i_VideoAccelAllowed ()) 1621 1573 return VERR_NOT_SUPPORTED; 1622 1574 … … 1647 1599 { 1648 1600 /* Process any pending orders and empty the VBVA ring buffer. */ 1649 videoAccelFlush ();1601 i_videoAccelFlush (); 1650 1602 } 1651 1603 … … 1676 1628 1677 1629 /* Initialize the hardware memory. */ 1678 vbvaSetMemoryFlags(mpVbvaMemory, mfVideoAccelEnabled, mfVideoAccelVRDP, mfu32SupportedOrders, maFramebuffers, mcMonitors); 1630 i_vbvaSetMemoryFlags(mpVbvaMemory, mfVideoAccelEnabled, mfVideoAccelVRDP, 1631 mfu32SupportedOrders, maFramebuffers, mcMonitors); 1679 1632 mpVbvaMemory->off32Data = 0; 1680 1633 mpVbvaMemory->off32Free = 0; 1681 1634 1682 memset(mpVbvaMemory->aRecords, 0, sizeof 1635 memset(mpVbvaMemory->aRecords, 0, sizeof(mpVbvaMemory->aRecords)); 1683 1636 mpVbvaMemory->indexRecordFirst = 0; 1684 1637 mpVbvaMemory->indexRecordFree = 0; … … 1700 1653 /* Called always by one VRDP server thread. Can be thread-unsafe. 1701 1654 */ 1702 void Display:: VideoAccelVRDP(bool fEnable)1655 void Display::i_VideoAccelVRDP(bool fEnable) 1703 1656 { 1704 1657 LogRelFlowFunc(("fEnable = %d\n", fEnable)); 1705 1658 1706 vbvaLock();1659 i_vbvaLock(); 1707 1660 1708 1661 int c = fEnable? 1709 ASMAtomicIncS32 1710 ASMAtomicDecS32 1662 ASMAtomicIncS32(&mcVideoAccelVRDPRefs): 1663 ASMAtomicDecS32(&mcVideoAccelVRDPRefs); 1711 1664 1712 1665 Assert (c >= 0); … … 1722 1675 mfu32SupportedOrders = 0; 1723 1676 1724 vbvaSetMemoryFlags(mpVbvaMemory, mfVideoAccelEnabled, mfVideoAccelVRDP, mfu32SupportedOrders,1725 maFramebuffers, mcMonitors);1677 i_vbvaSetMemoryFlags(mpVbvaMemory, mfVideoAccelEnabled, mfVideoAccelVRDP, mfu32SupportedOrders, 1678 maFramebuffers, mcMonitors); 1726 1679 #ifdef VBOX_WITH_HGSMI 1727 1680 /* Here is VRDP-IN thread. Process the request in vbvaUpdateBegin under DevVGA lock on an EMT. */ … … 1742 1695 mfu32SupportedOrders = ~0; 1743 1696 1744 vbvaSetMemoryFlags(mpVbvaMemory, mfVideoAccelEnabled, mfVideoAccelVRDP, mfu32SupportedOrders,1745 maFramebuffers, mcMonitors);1697 i_vbvaSetMemoryFlags(mpVbvaMemory, mfVideoAccelEnabled, mfVideoAccelVRDP, mfu32SupportedOrders, 1698 maFramebuffers, mcMonitors); 1746 1699 #ifdef VBOX_WITH_HGSMI 1747 1700 /* Here is VRDP-IN thread. Process the request in vbvaUpdateBegin under DevVGA lock on an EMT. */ … … 1756 1709 * accel state. It remains enabled. 1757 1710 */ 1758 Assert 1759 } 1760 vbvaUnlock();1761 } 1762 1763 static bool vbvaVerifyRingBuffer(VBVAMEMORY *pVbvaMemory)1711 Assert(mfVideoAccelVRDP == true); 1712 } 1713 i_vbvaUnlock(); 1714 } 1715 1716 static bool i_vbvaVerifyRingBuffer(VBVAMEMORY *pVbvaMemory) 1764 1717 { 1765 1718 return true; 1766 1719 } 1767 1720 1768 static void vbvaFetchBytes(VBVAMEMORY *pVbvaMemory, uint8_t *pu8Dst, uint32_t cbDst)1721 static void i_vbvaFetchBytes(VBVAMEMORY *pVbvaMemory, uint8_t *pu8Dst, uint32_t cbDst) 1769 1722 { 1770 1723 if (cbDst >= VBVA_RING_BUFFER_SIZE) 1771 1724 { 1772 AssertMsgFailed 1725 AssertMsgFailed(("cbDst = 0x%08X, ring buffer size 0x%08X\n", cbDst, VBVA_RING_BUFFER_SIZE)); 1773 1726 return; 1774 1727 } … … 1786 1739 { 1787 1740 /* Chunk crosses buffer boundary. */ 1788 memcpy 1789 memcpy 1741 memcpy(pu8Dst, src, u32BytesTillBoundary); 1742 memcpy(pu8Dst + u32BytesTillBoundary, &pVbvaMemory->au8RingBuffer[0], i32Diff); 1790 1743 } 1791 1744 … … 1797 1750 1798 1751 1799 static bool vbvaPartialRead(uint8_t **ppu8, uint32_t *pcb, uint32_t cbRecord, VBVAMEMORY *pVbvaMemory)1752 static bool i_vbvaPartialRead(uint8_t **ppu8, uint32_t *pcb, uint32_t cbRecord, VBVAMEMORY *pVbvaMemory) 1800 1753 { 1801 1754 uint8_t *pu8New; … … 1807 1760 { 1808 1761 Assert (*pcb); 1809 pu8New = (uint8_t *)RTMemRealloc 1762 pu8New = (uint8_t *)RTMemRealloc(*ppu8, cbRecord); 1810 1763 } 1811 1764 else 1812 1765 { 1813 1766 Assert (!*pcb); 1814 pu8New = (uint8_t *)RTMemAlloc 1767 pu8New = (uint8_t *)RTMemAlloc(cbRecord); 1815 1768 } 1816 1769 … … 1823 1776 if (*ppu8) 1824 1777 { 1825 RTMemFree 1778 RTMemFree(*ppu8); 1826 1779 } 1827 1780 … … 1833 1786 1834 1787 /* Fetch data from the ring buffer. */ 1835 vbvaFetchBytes(pVbvaMemory, pu8New + *pcb, cbRecord - *pcb);1788 i_vbvaFetchBytes(pVbvaMemory, pu8New + *pcb, cbRecord - *pcb); 1836 1789 1837 1790 *ppu8 = pu8New; … … 1844 1797 * For crossing boundary - allocate a buffer from heap. 1845 1798 */ 1846 bool Display:: vbvaFetchCmd(VBVACMDHDR **ppHdr, uint32_t *pcbCmd)1799 bool Display::i_vbvaFetchCmd(VBVACMDHDR **ppHdr, uint32_t *pcbCmd) 1847 1800 { 1848 1801 uint32_t indexRecordFirst = mpVbvaMemory->indexRecordFirst; … … 1854 1807 #endif /* DEBUG_sunlover */ 1855 1808 1856 if (! vbvaVerifyRingBuffer(mpVbvaMemory))1809 if (!i_vbvaVerifyRingBuffer(mpVbvaMemory)) 1857 1810 { 1858 1811 return false; … … 1877 1830 /* There is a partial read in process. Continue with it. */ 1878 1831 1879 Assert 1832 Assert(mpu8VbvaPartial); 1880 1833 1881 1834 LogFlowFunc(("continue partial record mcbVbvaPartial = %d cbRecord 0x%08X, first = %d, free = %d\n", … … 1885 1838 { 1886 1839 /* New data has been added to the record. */ 1887 if (! vbvaPartialRead(&mpu8VbvaPartial, &mcbVbvaPartial, cbRecord, mpVbvaMemory))1840 if (!i_vbvaPartialRead(&mpu8VbvaPartial, &mcbVbvaPartial, cbRecord, mpVbvaMemory)) 1888 1841 { 1889 1842 return false; … … 1905 1858 #ifdef DEBUG_sunlover 1906 1859 LogFlowFunc(("partial done ok, data = %d, free = %d\n", 1907 1860 mpVbvaMemory->off32Data, mpVbvaMemory->off32Free)); 1908 1861 #endif /* DEBUG_sunlover */ 1909 1862 } … … 1919 1872 { 1920 1873 /* Partial read must be started. */ 1921 if (! vbvaPartialRead(&mpu8VbvaPartial, &mcbVbvaPartial, cbRecord, mpVbvaMemory))1874 if (!i_vbvaPartialRead(&mpu8VbvaPartial, &mcbVbvaPartial, cbRecord, mpVbvaMemory)) 1922 1875 { 1923 1876 return false; … … 1955 1908 { 1956 1909 /* The command crosses buffer boundary. Rare case, so not optimized. */ 1957 uint8_t *dst = (uint8_t *)RTMemAlloc 1910 uint8_t *dst = (uint8_t *)RTMemAlloc(cbRecord); 1958 1911 1959 1912 if (!dst) … … 1964 1917 } 1965 1918 1966 vbvaFetchBytes(mpVbvaMemory, dst, cbRecord);1919 i_vbvaFetchBytes(mpVbvaMemory, dst, cbRecord); 1967 1920 1968 1921 *ppHdr = (VBVACMDHDR *)dst; … … 1987 1940 } 1988 1941 1989 void Display:: vbvaReleaseCmd(VBVACMDHDR *pHdr, int32_t cbCmd)1942 void Display::i_vbvaReleaseCmd(VBVACMDHDR *pHdr, int32_t cbCmd) 1990 1943 { 1991 1944 uint8_t *au8RingBuffer = mpVbvaMemory->au8RingBuffer; … … 1995 1948 { 1996 1949 /* The pointer is inside ring buffer. Must be continuous chunk. */ 1997 Assert 1950 Assert(VBVA_RING_BUFFER_SIZE - ((uint8_t *)pHdr - au8RingBuffer) >= cbCmd); 1998 1951 1999 1952 /* Do nothing. */ 2000 1953 2001 Assert 1954 Assert(!mpu8VbvaPartial && mcbVbvaPartial == 0); 2002 1955 } 2003 1956 else … … 2016 1969 else 2017 1970 { 2018 Assert 2019 } 2020 2021 RTMemFree 1971 Assert(!mpu8VbvaPartial && mcbVbvaPartial == 0); 1972 } 1973 1974 RTMemFree(pHdr); 2022 1975 } 2023 1976 … … 2032 1985 * @thread EMT 2033 1986 */ 2034 void Display:: VideoAccelFlush(void)2035 { 2036 vbvaLock();2037 int rc = videoAccelFlush();1987 void Display::i_VideoAccelFlush(void) 1988 { 1989 i_vbvaLock(); 1990 int rc = i_videoAccelFlush(); 2038 1991 if (RT_FAILURE(rc)) 2039 1992 { 2040 1993 /* Disable on errors. */ 2041 videoAccelEnable(false, NULL);2042 } 2043 vbvaUnlock();1994 i_videoAccelEnable(false, NULL); 1995 } 1996 i_vbvaUnlock(); 2044 1997 2045 1998 if (RT_FAILURE(rc)) 2046 1999 { 2047 2000 /* VideoAccel was disabled because of a failure, switching back to VGA updates. Redraw the screen. */ 2048 Assert(! vbvaLockIsOwner());2001 Assert(!i_vbvaLockIsOwner()); 2049 2002 mpDrv->pUpPort->pfnUpdateDisplayAll(mpDrv->pUpPort, /* fFailOnResize = */ false); 2050 2003 } 2051 2004 } 2052 2005 2053 int Display:: videoAccelFlush(void)2054 { 2055 Assert( vbvaLockIsOwner());2006 int Display::i_videoAccelFlush(void) 2007 { 2008 Assert(i_vbvaLockIsOwner()); 2056 2009 2057 2010 #ifdef DEBUG_sunlover_2 … … 2085 2038 /* Initialize dirty rectangles accumulator. */ 2086 2039 VBVADIRTYREGION rgn; 2087 vbvaRgnInit 2040 vbvaRgnInit(&rgn, maFramebuffers, mcMonitors, this, mpDrv->pUpPort); 2088 2041 2089 2042 for (;;) … … 2093 2046 2094 2047 /* Fetch the command data. */ 2095 if (! vbvaFetchCmd(&phdr, &cbCmd))2048 if (!i_vbvaFetchCmd(&phdr, &cbCmd)) 2096 2049 { 2097 2050 Log(("Display::VideoAccelFlush: unable to fetch command. off32Data = %d, off32Free = %d. Disabling VBVA!!!\n", … … 2142 2095 2143 2096 /* Accumulate the update. */ 2144 vbvaRgnDirtyRect 2097 vbvaRgnDirtyRect(&rgn, uScreenId, phdr); 2145 2098 2146 2099 /* Forward the command to VRDP server. */ 2147 mParent->i_consoleVRDPServer()->SendUpdate 2100 mParent->i_consoleVRDPServer()->SendUpdate(uScreenId, phdr, cbCmd); 2148 2101 2149 2102 *phdr = hdrSaved; 2150 2103 } 2151 2104 2152 vbvaReleaseCmd(phdr, cbCmd);2105 i_vbvaReleaseCmd(phdr, cbCmd); 2153 2106 } 2154 2107 … … 2156 2109 { 2157 2110 /* Draw the framebuffer. */ 2158 vbvaRgnUpdateFramebuffer 2111 vbvaRgnUpdateFramebuffer(&rgn, uScreenId); 2159 2112 } 2160 2113 return VINF_SUCCESS; 2161 2114 } 2162 2115 2163 int Display:: videoAccelRefreshProcess(void)2116 int Display::i_videoAccelRefreshProcess(void) 2164 2117 { 2165 2118 int rc = VWRN_INVALID_STATE; /* Default is to do a display update in VGA device. */ 2166 2119 2167 vbvaLock();2120 i_vbvaLock(); 2168 2121 2169 2122 if (ASMAtomicCmpXchgU32(&mfu32PendingVideoAccelDisable, false, true)) 2170 2123 { 2171 videoAccelEnable(false, NULL);2124 i_videoAccelEnable(false, NULL); 2172 2125 } 2173 2126 else if (mfPendingVideoAccelEnable) … … 2184 2137 if (mfMachineRunning) 2185 2138 { 2186 videoAccelEnable(mfPendingVideoAccelEnable,2187 mpPendingVbvaMemory);2139 i_videoAccelEnable(mfPendingVideoAccelEnable, 2140 mpPendingVbvaMemory); 2188 2141 2189 2142 /* Reset the pending state. */ … … 2201 2154 { 2202 2155 Assert(mpVbvaMemory); 2203 rc = videoAccelFlush();2156 rc = i_videoAccelFlush(); 2204 2157 if (RT_FAILURE(rc)) 2205 2158 { 2206 2159 /* Disable on errors. */ 2207 videoAccelEnable(false, NULL);2160 i_videoAccelEnable(false, NULL); 2208 2161 rc = VWRN_INVALID_STATE; /* Do a display update in VGA device. */ 2209 2162 } … … 2215 2168 } 2216 2169 2217 vbvaUnlock();2170 i_vbvaUnlock(); 2218 2171 2219 2172 return rc; 2220 2173 } 2221 2174 2222 void Display:: notifyPowerDown(void)2175 void Display::i_notifyPowerDown(void) 2223 2176 { 2224 2177 LogRelFlowFunc(("\n")); … … 2238 2191 if (!pFBInfo->fDisabled) 2239 2192 { 2240 handleDisplayResize(uScreenId, 32,2241 pFBInfo->pu8FramebufferVRAM,2242 pFBInfo->u32LineSize,2243 pFBInfo->w,2244 pFBInfo->h,2245 pFBInfo->flags);2246 } 2247 } 2248 } 2249 2250 // IDisplay methods2193 i_handleDisplayResize(uScreenId, 32, 2194 pFBInfo->pu8FramebufferVRAM, 2195 pFBInfo->u32LineSize, 2196 pFBInfo->w, 2197 pFBInfo->h, 2198 pFBInfo->flags); 2199 } 2200 } 2201 } 2202 2203 // Wrapped IDisplay methods 2251 2204 ///////////////////////////////////////////////////////////////////////////// 2252 STDMETHODIMP Display::GetScreenResolution(ULONG aScreenId, 2253 ULONG *aWidth, ULONG *aHeight, ULONG *aBitsPerPixel, 2254 LONG *aXOrigin, LONG *aYOrigin) 2205 HRESULT Display::getScreenResolution(ULONG aScreenId, ULONG *aWidth, ULONG *aHeight, ULONG *aBitsPerPixel, 2206 LONG *aXOrigin, LONG *aYOrigin) 2255 2207 { 2256 2208 LogRelFlowFunc(("aScreenId=%RU32\n", aScreenId)); 2257 2258 AutoCaller autoCaller(this);2259 if (FAILED(autoCaller.rc())) return autoCaller.rc();2260 2209 2261 2210 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2276 2225 alock.release(); 2277 2226 2278 Assert(! vbvaLockIsOwner());2227 Assert(!i_vbvaLockIsOwner()); 2279 2228 int rc = mpDrv->pUpPort->pfnQueryColorDepth(mpDrv->pUpPort, &u32BitsPerPixel); 2280 2229 AssertRC(rc); … … 2311 2260 } 2312 2261 2313 STDMETHODIMP Display::AttachFramebuffer(ULONG aScreenId, 2314 IFramebuffer *aFramebuffer)2262 2263 HRESULT Display::attachFramebuffer(ULONG aScreenId, const ComPtr<IFramebuffer> &aFramebuffer) 2315 2264 { 2316 2265 LogRelFlowFunc(("aScreenId = %d\n", aScreenId)); 2317 2318 CheckComArgPointerValid(aFramebuffer);2319 2320 AutoCaller autoCaller(this);2321 if (FAILED(autoCaller.rc()))2322 return autoCaller.rc();2323 2266 2324 2267 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2341 2284 { 2342 2285 /* Setup the new framebuffer. */ 2343 handleDisplayResize(aScreenId, pFBInfo->u16BitsPerPixel,2344 pFBInfo->pu8FramebufferVRAM,2345 pFBInfo->u32LineSize,2346 pFBInfo->w,2347 pFBInfo->h,2348 pFBInfo->flags);2286 i_handleDisplayResize(aScreenId, pFBInfo->u16BitsPerPixel, 2287 pFBInfo->pu8FramebufferVRAM, 2288 pFBInfo->u32LineSize, 2289 pFBInfo->w, 2290 pFBInfo->h, 2291 pFBInfo->flags); 2349 2292 } 2350 2293 … … 2366 2309 data.aParms[0].u.uint32 = aScreenId; 2367 2310 2368 int vrc = crCtlSubmitSync(&data.Hdr, sizeof(data));2311 int vrc = i_crCtlSubmitSync(&data.Hdr, sizeof(data)); 2369 2312 AssertRC(vrc); 2370 2313 } 2371 2314 #endif /* defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) */ 2372 2315 2373 VMR3ReqCallNoWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display:: InvalidateAndUpdateEMT,2316 VMR3ReqCallNoWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display::i_InvalidateAndUpdateEMT, 2374 2317 3, this, aScreenId, false); 2375 2318 } … … 2379 2322 } 2380 2323 2381 STDMETHODIMP Display::DetachFramebuffer(ULONG aScreenId)2324 HRESULT Display::detachFramebuffer(ULONG aScreenId) 2382 2325 { 2383 2326 LogRelFlowFunc(("aScreenId = %d\n", aScreenId)); 2384 2385 AutoCaller autoCaller(this);2386 if (FAILED(autoCaller.rc()))2387 return autoCaller.rc();2388 2327 2389 2328 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2416 2355 data.aParms[0].u.uint32 = aScreenId; 2417 2356 2418 int vrc = crCtlSubmitSync(&data.Hdr, sizeof(data));2357 int vrc = i_crCtlSubmitSync(&data.Hdr, sizeof(data)); 2419 2358 AssertRC(vrc); 2420 2359 } … … 2425 2364 } 2426 2365 2427 STDMETHODIMP Display::QueryFramebuffer(ULONG aScreenId, 2428 IFramebuffer **aFramebuffer) 2366 HRESULT Display::queryFramebuffer(ULONG aScreenId, ComPtr<IFramebuffer> &aFramebuffer) 2429 2367 { 2430 2368 LogRelFlowFunc(("aScreenId = %d\n", aScreenId)); 2431 2432 CheckComArgOutPointerValid(aFramebuffer);2433 2434 AutoCaller autoCaller(this);2435 if (FAILED(autoCaller.rc()))2436 return autoCaller.rc();2437 2369 2438 2370 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2444 2376 DISPLAYFBINFO *pFBInfo = &maFramebuffers[aScreenId]; 2445 2377 2446 *aFramebuffer = pFBInfo->pFramebuffer; 2447 if (!pFBInfo->pFramebuffer.isNull()) 2448 pFBInfo->pFramebuffer->AddRef(); 2378 pFBInfo->pFramebuffer.queryInterfaceTo(aFramebuffer.asOutParam()); 2449 2379 2450 2380 return S_OK; 2451 2381 } 2452 2382 2453 STDMETHODIMP Display::SetVideoModeHint(ULONG aDisplay, BOOL aEnabled, 2454 BOOL aChangeOrigin, LONG aOriginX, LONG aOriginY, 2455 ULONG aWidth, ULONG aHeight, ULONG aBitsPerPixel) 2456 { 2457 AutoCaller autoCaller(this); 2458 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2459 2383 HRESULT Display::setVideoModeHint(ULONG aDisplay, BOOL aEnabled, 2384 BOOL aChangeOrigin, LONG aOriginX, LONG aOriginY, 2385 ULONG aWidth, ULONG aHeight, ULONG aBitsPerPixel) 2386 { 2460 2387 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 2461 2388 … … 2477 2404 2478 2405 uint32_t cBits = 0; 2479 Assert(! vbvaLockIsOwner());2406 Assert(!i_vbvaLockIsOwner()); 2480 2407 int rc = mpDrv->pUpPort->pfnQueryColorDepth(mpDrv->pUpPort, &cBits); 2481 2408 AssertRC(rc); … … 2512 2439 } 2513 2440 2514 STDMETHODIMP Display::SetSeamlessMode (BOOL enabled) 2515 { 2516 AutoCaller autoCaller(this); 2517 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2518 2441 HRESULT Display::setSeamlessMode(BOOL enabled) 2442 { 2519 2443 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 2520 2444 … … 2540 2464 if (is3denabled && vmmDev) 2541 2465 { 2542 VBOXCRCMDCTL_HGCM *pData = (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof 2466 VBOXCRCMDCTL_HGCM *pData = (VBOXCRCMDCTL_HGCM*)RTMemAlloc(sizeof(VBOXCRCMDCTL_HGCM)); 2543 2467 if (!pData) 2544 2468 { … … 2554 2478 pData->aParms[0].u.pointer.size = 0; /* <- means null rects, NULL pRects address and 0 rects means "disable" */ 2555 2479 2556 int rc = crCtlSubmit(&pData->Hdr, sizeof (*pData),displayCrCmdFree, pData);2480 int rc = i_crCtlSubmit(&pData->Hdr, sizeof(*pData), i_displayCrCmdFree, pData); 2557 2481 if (!RT_SUCCESS(rc)) 2558 2482 { … … 2567 2491 2568 2492 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 2569 BOOL Display:: displayCheckTakeScreenshotCrOgl(Display *pDisplay, ULONG aScreenId, uint8_t *pu8Data,2570 uint32_t u32Width, uint32_t u32Height)2493 BOOL Display::i_displayCheckTakeScreenshotCrOgl(Display *pDisplay, ULONG aScreenId, uint8_t *pu8Data, 2494 uint32_t u32Width, uint32_t u32Height) 2571 2495 { 2572 2496 BOOL is3denabled; … … 2577 2501 if (pVMMDev) 2578 2502 { 2579 CRVBOXHGCMTAKESCREENSHOT *pScreenshot = (CRVBOXHGCMTAKESCREENSHOT*)RTMemAlloc(sizeof 2503 CRVBOXHGCMTAKESCREENSHOT *pScreenshot = (CRVBOXHGCMTAKESCREENSHOT*)RTMemAlloc(sizeof(*pScreenshot)); 2580 2504 if (pScreenshot) 2581 2505 { … … 2597 2521 data.aParms[0].type = VBOX_HGCM_SVC_PARM_PTR; 2598 2522 data.aParms[0].u.pointer.addr = pScreenshot; 2599 data.aParms[0].u.pointer.size = sizeof 2600 2601 int rc = pDisplay-> crCtlSubmitSync(&data.Hdr, sizeof(data));2523 data.aParms[0].u.pointer.size = sizeof(*pScreenshot); 2524 2525 int rc = pDisplay->i_crCtlSubmitSync(&data.Hdr, sizeof(data)); 2602 2526 2603 2527 RTMemFree(pScreenshot); … … 2617 2541 #endif 2618 2542 2619 int Display:: displayTakeScreenshotEMT(Display *pDisplay, ULONG aScreenId, uint8_t **ppu8Data, size_t *pcbData,2620 uint32_t *pu32Width, uint32_t *pu32Height)2543 int Display::i_displayTakeScreenshotEMT(Display *pDisplay, ULONG aScreenId, uint8_t **ppu8Data, size_t *pcbData, 2544 uint32_t *pu32Width, uint32_t *pu32Height) 2621 2545 { 2622 2546 int rc; … … 2625 2549 && pDisplay->maFramebuffers[aScreenId].fVBVAEnabled == false) /* A non-VBVA mode. */ 2626 2550 { 2627 Assert(!pDisplay-> vbvaLockIsOwner());2551 Assert(!pDisplay->i_vbvaLockIsOwner()); 2628 2552 rc = pDisplay->mpDrv->pUpPort->pfnTakeScreenshot(pDisplay->mpDrv->pUpPort, ppu8Data, pcbData, pu32Width, pu32Height); 2629 2553 } … … 2665 2589 uint32_t u32DstBitsPerPixel = 32; 2666 2590 2667 Assert(!pDisplay-> vbvaLockIsOwner());2591 Assert(!pDisplay->i_vbvaLockIsOwner()); 2668 2592 rc = pDisplay->mpDrv->pUpPort->pfnCopyRect(pDisplay->mpDrv->pUpPort, 2669 2593 width, height, … … 2691 2615 && aScreenId == VBOX_VIDEO_PRIMARY_SCREEN) 2692 2616 { 2693 Assert(!pDisplay-> vbvaLockIsOwner());2617 Assert(!pDisplay->i_vbvaLockIsOwner()); 2694 2618 rc = pDisplay->mpDrv->pUpPort->pfnTakeScreenshot(pDisplay->mpDrv->pUpPort, 2695 2619 ppu8Data, pcbData, pu32Width, pu32Height); … … 2716 2640 } 2717 2641 2718 static int displayTakeScreenshot(PUVM pUVM, Display *pDisplay, struct DRVMAINDISPLAY *pDrv, ULONG aScreenId,2719 BYTE *address, ULONG width, ULONG height)2642 static int i_displayTakeScreenshot(PUVM pUVM, Display *pDisplay, struct DRVMAINDISPLAY *pDrv, ULONG aScreenId, 2643 BYTE *address, ULONG width, ULONG height) 2720 2644 { 2721 2645 uint8_t *pu8Data = NULL; … … 2726 2650 2727 2651 # if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 2728 if (Display:: displayCheckTakeScreenshotCrOgl(pDisplay, aScreenId, (uint8_t*)address, width, height))2652 if (Display::i_displayCheckTakeScreenshotCrOgl(pDisplay, aScreenId, (uint8_t*)address, width, height)) 2729 2653 return VINF_SUCCESS; 2730 2654 #endif … … 2737 2661 it would be nice to have an accurate screenshot for the bug 2738 2662 report if the VM deadlocks. */ 2739 vrc = VMR3ReqPriorityCallWaitU(pUVM, VMCPUID_ANY, (PFNRT)Display:: displayTakeScreenshotEMT, 6,2663 vrc = VMR3ReqPriorityCallWaitU(pUVM, VMCPUID_ANY, (PFNRT)Display::i_displayTakeScreenshotEMT, 6, 2740 2664 pDisplay, aScreenId, &pu8Data, &cbData, &cx, &cy); 2741 2665 if (vrc != VERR_TRY_AGAIN) … … 2777 2701 { 2778 2702 /* This can be called from any thread. */ 2779 Assert(!pDisplay-> vbvaLockIsOwner());2703 Assert(!pDisplay->i_vbvaLockIsOwner()); 2780 2704 pDrv->pUpPort->pfnFreeScreenshot(pDrv->pUpPort, pu8Data); 2781 2705 } … … 2789 2713 } 2790 2714 2791 STDMETHODIMP Display::TakeScreenShot(ULONG aScreenId, BYTE *address, ULONG width, ULONG height)2715 HRESULT Display::takeScreenShot(ULONG aScreenId, BYTE *aAddress, ULONG aWidth, ULONG aHeight) 2792 2716 { 2793 2717 /// @todo (r=dmik) this function may take too long to complete if the VM … … 2798 2722 2799 2723 LogRelFlowFunc(("address=%p, width=%d, height=%d\n", 2800 address, width, height)); 2801 2802 CheckComArgNotNull(address); 2803 CheckComArgExpr(width, width != 0); 2804 CheckComArgExpr(height, height != 0); 2724 aAddress, aWidth, aHeight)); 2725 2726 CheckComArgExpr(aWidth, aWidth != 0); 2727 CheckComArgExpr(aHeight, aHeight != 0); 2805 2728 2806 2729 /* Do not allow too large screenshots. This also filters out negative 2807 2730 * values passed as either 'width' or 'height'. 2808 2731 */ 2809 CheckComArgExpr(width, width <= 32767); 2810 CheckComArgExpr(height, height <= 32767); 2811 2812 AutoCaller autoCaller(this); 2813 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2732 CheckComArgExpr(aWidth, aWidth <= 32767); 2733 CheckComArgExpr(aHeight, aHeight <= 32767); 2814 2734 2815 2735 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2833 2753 alock.release(); 2834 2754 2835 int vrc = displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, address, width, height);2755 int vrc = i_displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, aAddress, aWidth, aHeight); 2836 2756 2837 2757 if (vrc == VERR_NOT_IMPLEMENTED) … … 2849 2769 } 2850 2770 2851 STDMETHODIMP Display::TakeScreenShotToArray(ULONG aScreenId, ULONG width, ULONG height, 2852 ComSafeArrayOut(BYTE, aScreenData)) 2853 { 2854 LogRelFlowFunc(("width=%d, height=%d\n", width, height)); 2855 2856 CheckComArgOutSafeArrayPointerValid(aScreenData); 2857 CheckComArgExpr(width, width != 0); 2858 CheckComArgExpr(height, height != 0); 2771 HRESULT Display::takeScreenShotToArray(ULONG aScreenId, ULONG aWidth, ULONG aHeight, std::vector<BYTE> &aScreenData) 2772 2773 { 2774 LogRelFlowFunc(("width=%d, height=%d\n", aWidth, aHeight)); 2775 2776 CheckComArgExpr(aWidth, aWidth != 0); 2777 CheckComArgExpr(raHeight, aHeight != 0); 2859 2778 2860 2779 /* Do not allow too large screenshots. This also filters out negative 2861 2780 * values passed as either 'width' or 'height'. 2862 2781 */ 2863 CheckComArgExpr(width, width <= 32767); 2864 CheckComArgExpr(height, height <= 32767); 2865 2866 AutoCaller autoCaller(this); 2867 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2782 CheckComArgExpr(aWidth, aWidth <= 32767); 2783 CheckComArgExpr(aHeight, aHeight <= 32767); 2868 2784 2869 2785 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2887 2803 alock.release(); 2888 2804 2889 size_t cbData = width * 4 * height;2805 size_t cbData = aWidth * 4 * aHeight; 2890 2806 uint8_t *pu8Data = (uint8_t *)RTMemAlloc(cbData); 2891 2807 … … 2893 2809 return E_OUTOFMEMORY; 2894 2810 2895 int vrc = displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, pu8Data, width, height);2811 int vrc = i_displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, pu8Data, aWidth, aHeight); 2896 2812 2897 2813 if (RT_SUCCESS(vrc)) 2898 2814 { 2899 /* Convert pixels to format expected by the API caller: [0] R, [1] G, [2] B, [3] A. */ 2815 aScreenData.resize(cbData); 2816 2817 /* Convert pixels to format expected by the API caller: [0] R, [1] G, [2] B, [3] A 2818 * and copy to the output buffer. 2819 */ 2820 size_t i = 0; 2900 2821 uint8_t *pu8 = pu8Data; 2901 unsigned cPixels = width * height;2822 unsigned cPixels = aWidth * aHeight; 2902 2823 while (cPixels) 2903 2824 { 2904 uint8_t u8 = pu8[0]; 2905 pu8[0] = pu8[2]; 2906 pu8[2] = u8; 2907 pu8[3] = 0xff; 2825 aScreenData[i++] = pu8[2]; 2826 aScreenData[i++] = pu8[1]; 2827 aScreenData[i++] = pu8[0]; 2828 aScreenData[i++] = 0xff; 2829 2908 2830 cPixels--; 2909 2831 pu8 += 4; 2910 2832 } 2911 2912 com::SafeArray<BYTE> screenData(cbData);2913 screenData.initFrom(pu8Data, cbData);2914 screenData.detachTo(ComSafeArrayOutArg(aScreenData));2915 2833 } 2916 2834 else if (vrc == VERR_NOT_IMPLEMENTED) … … 2927 2845 } 2928 2846 2929 STDMETHODIMP Display::TakeScreenShotPNGToArray(ULONG aScreenId, ULONG width, ULONG height, 2930 ComSafeArrayOut(BYTE, aScreenData)) 2931 { 2932 LogRelFlowFunc(("width=%d, height=%d\n", width, height)); 2933 2934 CheckComArgOutSafeArrayPointerValid(aScreenData); 2935 CheckComArgExpr(width, width != 0); 2936 CheckComArgExpr(height, height != 0); 2847 HRESULT Display::takeScreenShotPNGToArray(ULONG aScreenId, ULONG aWidth, ULONG aHeight, std::vector<BYTE> &aScreenData) 2848 { 2849 LogRelFlowFunc(("width=%d, height=%d\n", aWidth, aHeight)); 2850 2851 CheckComArgExpr(aWidth, aWidth != 0); 2852 CheckComArgExpr(aHeight, aHeight != 0); 2937 2853 2938 2854 /* Do not allow too large screenshots. This also filters out negative 2939 2855 * values passed as either 'width' or 'height'. 2940 2856 */ 2941 CheckComArgExpr(width, width <= 32767); 2942 CheckComArgExpr(height, height <= 32767); 2943 2944 AutoCaller autoCaller(this); 2945 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2857 CheckComArgExpr(aWidth, aWidth <= 32767); 2858 CheckComArgExpr(aHeight, aHeight <= 32767); 2946 2859 2947 2860 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2964 2877 alock.release(); 2965 2878 2966 size_t cbData = width * 4 * height;2879 size_t cbData = aWidth * 4 * aHeight; 2967 2880 uint8_t *pu8Data = (uint8_t *)RTMemAlloc(cbData); 2968 2881 … … 2970 2883 return E_OUTOFMEMORY; 2971 2884 2972 int vrc = displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, pu8Data, width, height);2885 int vrc = i_displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, pu8Data, aWidth, aHeight); 2973 2886 2974 2887 if (RT_SUCCESS(vrc)) … … 2979 2892 uint32_t cyPNG = 0; 2980 2893 2981 vrc = DisplayMakePNG(pu8Data, width, height, &pu8PNG, &cbPNG, &cxPNG, &cyPNG, 0);2894 vrc = DisplayMakePNG(pu8Data, aWidth, aHeight, &pu8PNG, &cbPNG, &cxPNG, &cyPNG, 0); 2982 2895 if (RT_SUCCESS(vrc)) 2983 2896 { 2984 com::SafeArray<BYTE> screenData(cbPNG);2985 screenData.initFrom(pu8PNG, cbPNG);2897 aScreenData.resize(cbPNG); 2898 memcpy(&aScreenData.front(), pu8PNG, cbPNG); 2986 2899 if (pu8PNG) 2987 2900 RTMemFree(pu8PNG); 2988 2989 screenData.detachTo(ComSafeArrayOutArg(aScreenData));2990 2901 } 2991 2902 else … … 3010 2921 } 3011 2922 3012 int Display::VideoCaptureEnableScreens(ComSafeArrayIn(BOOL, aScreens)) 2923 2924 int Display::i_VideoCaptureEnableScreens(ComSafeArrayIn(BOOL, aScreens)) 3013 2925 { 3014 2926 #ifdef VBOX_WITH_VPX … … 3025 2937 * Start video capturing. Does nothing if capturing is already active. 3026 2938 */ 3027 int Display:: VideoCaptureStart()2939 int Display::i_VideoCaptureStart() 3028 2940 { 3029 2941 #ifdef VBOX_WITH_VPX … … 3124 3036 * Stop video capturing. Does nothing if video capturing is not active. 3125 3037 */ 3126 void Display:: VideoCaptureStop()3038 void Display::i_VideoCaptureStop() 3127 3039 { 3128 3040 #ifdef VBOX_WITH_VPX … … 3134 3046 } 3135 3047 3136 int Display:: drawToScreenEMT(Display *pDisplay, ULONG aScreenId, BYTE *address,3137 ULONG x, ULONG y, ULONG width, ULONG height)3048 int Display::i_drawToScreenEMT(Display *pDisplay, ULONG aScreenId, BYTE *address, 3049 ULONG x, ULONG y, ULONG width, ULONG height) 3138 3050 { 3139 3051 int rc = VINF_SUCCESS; … … 3143 3055 if (aScreenId == VBOX_VIDEO_PRIMARY_SCREEN) 3144 3056 { 3145 Assert(!pDisplay-> vbvaLockIsOwner());3057 Assert(!pDisplay->i_vbvaLockIsOwner()); 3146 3058 rc = pDisplay->mpDrv->pUpPort->pfnDisplayBlt(pDisplay->mpDrv->pUpPort, address, x, y, width, height); 3147 3059 } … … 3165 3077 uint32_t u32DstBitsPerPixel = pFBInfo->u16BitsPerPixel; 3166 3078 3167 Assert(!pDisplay-> vbvaLockIsOwner());3079 Assert(!pDisplay->i_vbvaLockIsOwner()); 3168 3080 rc = pDisplay->mpDrv->pUpPort->pfnCopyRect(pDisplay->mpDrv->pUpPort, 3169 3081 width, height, … … 3218 3130 u32DstBitsPerPixel = 32; 3219 3131 3220 Assert(!pDisplay-> vbvaLockIsOwner());3132 Assert(!pDisplay->i_vbvaLockIsOwner()); 3221 3133 pDisplay->mpDrv->pUpPort->pfnCopyRect(pDisplay->mpDrv->pUpPort, 3222 3134 width, height, … … 3233 3145 } 3234 3146 3235 pDisplay-> handleDisplayUpdate(aScreenId, x, y, width, height);3147 pDisplay->i_handleDisplayUpdate(aScreenId, x, y, width, height); 3236 3148 } 3237 3149 } … … 3247 3159 } 3248 3160 3249 STDMETHODIMP Display::DrawToScreen(ULONG aScreenId, BYTE *address, 3250 ULONG x, ULONG y, ULONG width, ULONG height) 3161 HRESULT Display::drawToScreen(ULONG aScreenId, BYTE *aAddress, ULONG aX, ULONG aY, ULONG aWidth, ULONG aHeight) 3251 3162 { 3252 3163 /// @todo (r=dmik) this function may take too long to complete if the VM … … 3256 3167 // within the Console lock to make it atomic). 3257 3168 3258 LogRelFlowFunc(("address=%p, x=%d, y=%d, width=%d, height=%d\n", 3259 (void *)address, x, y, width, height)); 3260 3261 CheckComArgNotNull(address); 3262 CheckComArgExpr(width, width != 0); 3263 CheckComArgExpr(height, height != 0); 3264 3265 AutoCaller autoCaller(this); 3266 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3169 LogRelFlowFunc(("aAddress=%p, x=%d, y=%d, width=%d, height=%d\n", 3170 (void *)aAddress, aX, aY, aWidth, aHeight)); 3171 3172 CheckComArgExpr(aWidth, aWidth != 0); 3173 CheckComArgExpr(aHeight, aHeight != 0); 3267 3174 3268 3175 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 3281 3188 * dirty conversion work. 3282 3189 */ 3283 int rcVBox = VMR3ReqCallWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display:: drawToScreenEMT, 7,3284 this, aScreenId, a ddress, x, y, width, height);3190 int rcVBox = VMR3ReqCallWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display::i_drawToScreenEMT, 7, 3191 this, aScreenId, aAddress, aX, aY, aWidth, aHeight); 3285 3192 3286 3193 /* … … 3308 3215 } 3309 3216 3310 void Display:: InvalidateAndUpdateEMT(Display *pDisplay, unsigned uId, bool fUpdateAll)3217 void Display::i_InvalidateAndUpdateEMT(Display *pDisplay, unsigned uId, bool fUpdateAll) 3311 3218 { 3312 3219 unsigned uScreenId; … … 3318 3225 && uScreenId == VBOX_VIDEO_PRIMARY_SCREEN) 3319 3226 { 3320 Assert(!pDisplay-> vbvaLockIsOwner());3227 Assert(!pDisplay->i_vbvaLockIsOwner()); 3321 3228 pDisplay->mpDrv->pUpPort->pfnUpdateDisplayAll(pDisplay->mpDrv->pUpPort, /* fFailOnResize = */ true); 3322 3229 } … … 3371 3278 if (ulWidth == pFBInfo->w && ulHeight == pFBInfo->h) 3372 3279 { 3373 3374 Assert(!pDisplay->vbvaLockIsOwner()); 3280 Assert(!pDisplay->i_vbvaLockIsOwner()); 3375 3281 pDisplay->mpDrv->pUpPort->pfnCopyRect(pDisplay->mpDrv->pUpPort, 3376 3282 width, height, … … 3387 3293 } 3388 3294 3389 pDisplay-> handleDisplayUpdate(uScreenId, 0, 0, pFBInfo->w, pFBInfo->h);3295 pDisplay->i_handleDisplayUpdate(uScreenId, 0, 0, pFBInfo->w, pFBInfo->h); 3390 3296 } 3391 3297 } … … 3401 3307 * @returns COM status code 3402 3308 */ 3403 STDMETHODIMP Display::InvalidateAndUpdate() 3309 3310 HRESULT Display::invalidateAndUpdate() 3404 3311 { 3405 3312 LogRelFlowFunc(("\n")); 3406 3407 AutoCaller autoCaller(this);3408 if (FAILED(autoCaller.rc())) return autoCaller.rc();3409 3313 3410 3314 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 3424 3328 3425 3329 /* pdm.h says that this has to be called from the EMT thread */ 3426 int rcVBox = VMR3ReqCallVoidWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display:: InvalidateAndUpdateEMT,3330 int rcVBox = VMR3ReqCallVoidWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display::i_InvalidateAndUpdateEMT, 3427 3331 3, this, 0, true); 3428 3332 alock.acquire(); … … 3436 3340 } 3437 3341 3438 STDMETHODIMP Display::CompleteVHWACommand(BYTE *pCommand)3342 HRESULT Display::completeVHWACommand(BYTE *aCommand) 3439 3343 { 3440 3344 #ifdef VBOX_WITH_VIDEOHWACCEL 3441 mpDrv->pVBVACallbacks->pfnVHWACommandCompleteAsync(mpDrv->pVBVACallbacks, (PVBOXVHWACMD) pCommand);3345 mpDrv->pVBVACallbacks->pfnVHWACommandCompleteAsync(mpDrv->pVBVACallbacks, (PVBOXVHWACMD)aCommand); 3442 3346 return S_OK; 3443 3347 #else … … 3446 3350 } 3447 3351 3448 STDMETHODIMP Display::ViewportChanged(ULONG aScreenId, ULONG x, ULONG y, ULONG width, ULONG height)3352 HRESULT Display::viewportChanged(ULONG aScreenId, ULONG aX, ULONG aY, ULONG aWidth, ULONG aHeight) 3449 3353 { 3450 3354 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) … … 3461 3365 if (is3denabled) 3462 3366 { 3463 int rc = crViewportNotify(aScreenId, x, y, width, height);3367 int rc = i_crViewportNotify(aScreenId, aX, aY, aWidth, aHeight); 3464 3368 if (RT_FAILURE(rc)) 3465 3369 { 3466 3370 DISPLAYFBINFO *pFb = &maFramebuffers[aScreenId]; 3467 3371 pFb->pendingViewportInfo.fPending = true; 3468 pFb->pendingViewportInfo.x = x;3469 pFb->pendingViewportInfo.y = y;3470 pFb->pendingViewportInfo.width = width;3471 pFb->pendingViewportInfo.height = height;3372 pFb->pendingViewportInfo.x = aX; 3373 pFb->pendingViewportInfo.y = aY; 3374 pFb->pendingViewportInfo.width = aWidth; 3375 pFb->pendingViewportInfo.height = aHeight; 3472 3376 } 3473 3377 } … … 3476 3380 } 3477 3381 3478 STDMETHODIMP Display::QuerySourceBitmap(ULONG aScreenId,3479 IDisplaySourceBitmap **aDisplaySourceBitmap)3382 HRESULT Display::querySourceBitmap(ULONG aScreenId, 3383 ComPtr<IDisplaySourceBitmap> &aDisplaySourceBitmap) 3480 3384 { 3481 3385 LogRelFlowFunc(("aScreenId = %d\n", aScreenId)); 3482 3483 AutoCaller autoCaller(this);3484 if (FAILED(autoCaller.rc())) return autoCaller.rc();3485 3386 3486 3387 Console::SafeVMPtr ptrVM(mParent); … … 3499 3400 if (!mfSourceBitmapEnabled) 3500 3401 { 3501 *aDisplaySourceBitmap = NULL;3402 aDisplaySourceBitmap = NULL; 3502 3403 return E_FAIL; 3503 3404 } … … 3512 3413 hr = obj.createObject(); 3513 3414 if (SUCCEEDED(hr)) 3514 {3515 3415 hr = obj->init(this, aScreenId, pFBInfo); 3516 }3517 3416 3518 3417 if (SUCCEEDED(hr)) 3519 3418 { 3520 bool fDefaultFormat = !obj-> usesVRAM();3419 bool fDefaultFormat = !obj->i_usesVRAM(); 3521 3420 3522 3421 if (aScreenId == VBOX_VIDEO_PRIMARY_SCREEN) … … 3556 3455 if (SUCCEEDED(hr)) 3557 3456 { 3558 pFBInfo->pSourceBitmap->AddRef(); 3559 *aDisplaySourceBitmap = pFBInfo->pSourceBitmap; 3457 pFBInfo->pSourceBitmap.queryInterfaceTo(aDisplaySourceBitmap.asOutParam()); 3560 3458 } 3561 3459 … … 3567 3465 if (fSetRenderVRAM) 3568 3466 { 3569 Assert(! vbvaLockIsOwner());3467 Assert(!i_vbvaLockIsOwner()); 3570 3468 mpDrv->pUpPort->pfnSetRenderVRAM(mpDrv->pUpPort, true); 3571 3469 } 3572 3470 3573 3471 if (fInvalidate) 3574 VMR3ReqCallWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display:: InvalidateAndUpdateEMT,3472 VMR3ReqCallWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display::i_InvalidateAndUpdateEMT, 3575 3473 3, this, aScreenId, false); 3576 3474 } … … 3580 3478 } 3581 3479 3582 STDMETHODIMP Display::SetFramebufferUpdateMode(ULONG aScreenId, 3583 FramebufferUpdateMode_T aFramebufferUpdateMode) 3480 HRESULT Display::setFramebufferUpdateMode(ULONG aScreenId, FramebufferUpdateMode_T aFramebufferUpdateMode) 3584 3481 { 3585 3482 LogRelFlowFunc(("aScreenId %d, aFramebufferUpdateMode %d\n", aScreenId, aFramebufferUpdateMode)); 3586 3587 AutoCaller autoCaller(this);3588 if (FAILED(autoCaller.rc())) return autoCaller.rc();3589 3483 3590 3484 HRESULT hr = S_OK; … … 3642 3536 } 3643 3537 3538 // wrapped IEventListener method 3539 HRESULT Display::handleEvent(const ComPtr<IEvent> &aEvent) 3540 { 3541 VBoxEventType_T aType = VBoxEventType_Invalid; 3542 3543 aEvent->COMGETTER(Type)(&aType); 3544 switch (aType) 3545 { 3546 case VBoxEventType_OnStateChanged: 3547 { 3548 ComPtr<IStateChangedEvent> scev = aEvent; 3549 Assert(scev); 3550 MachineState_T machineState; 3551 scev->COMGETTER(State)(&machineState); 3552 if ( machineState == MachineState_Running 3553 || machineState == MachineState_Teleporting 3554 || machineState == MachineState_LiveSnapshotting 3555 || machineState == MachineState_DeletingSnapshotOnline 3556 ) 3557 { 3558 LogRelFlowFunc(("Machine is running.\n")); 3559 3560 mfMachineRunning = true; 3561 3562 #ifdef VBOX_WITH_CROGL 3563 i_crOglWindowsShow(true); 3564 #endif 3565 } 3566 else 3567 { 3568 mfMachineRunning = false; 3569 3570 #ifdef VBOX_WITH_CROGL 3571 if (machineState == MachineState_Paused) 3572 i_crOglWindowsShow(false); 3573 #endif 3574 } 3575 break; 3576 } 3577 default: 3578 AssertFailed(); 3579 } 3580 3581 return S_OK; 3582 } 3583 3644 3584 3645 3585 // private methods … … 3647 3587 3648 3588 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 3649 int Display:: crViewportNotify(ULONG aScreenId, ULONG x, ULONG y, ULONG width, ULONG height)3589 int Display::i_crViewportNotify(ULONG aScreenId, ULONG x, ULONG y, ULONG width, ULONG height) 3650 3590 { 3651 3591 VMMDev *pVMMDev = mParent->i_getVMMDev(); … … 3674 3614 pData->aParms[4].u.uint32 = height; 3675 3615 3676 return crCtlSubmitSyncIfHasDataForScreen(aScreenId, &pData->Hdr, (uint32_t)cbData);3616 return i_crCtlSubmitSyncIfHasDataForScreen(aScreenId, &pData->Hdr, (uint32_t)cbData); 3677 3617 } 3678 3618 #endif 3679 3619 3680 3620 #ifdef VBOX_WITH_CRHGSMI 3681 void Display:: setupCrHgsmiData(void)3621 void Display::i_setupCrHgsmiData(void) 3682 3622 { 3683 3623 VMMDev *pVMMDev = mParent->i_getVMMDev(); … … 3697 3637 VBOXVDMACMD_CHROMIUM_CTL_CRHGSMI_SETUP_MAINCB Completion; 3698 3638 Completion.Hdr.enmType = VBOXVDMACMD_CHROMIUM_CTL_TYPE_CRHGSMI_SETUP_MAINCB; 3699 Completion.Hdr.cbCmd = sizeof 3639 Completion.Hdr.cbCmd = sizeof(Completion); 3700 3640 Completion.hCompletion = mpDrv->pVBVACallbacks; 3701 3641 Completion.pfnCompletion = mpDrv->pVBVACallbacks->pfnCrHgsmiCommandCompleteAsync; … … 3719 3659 } 3720 3660 3721 void Display:: destructCrHgsmiData(void)3661 void Display::i_destructCrHgsmiData(void) 3722 3662 { 3723 3663 int rc = RTCritSectRwEnterExcl(&mCrOglLock); … … 3733 3673 * @see PDMIDISPLAYCONNECTOR::pfnResize 3734 3674 */ 3735 DECLCALLBACK(int) Display:: displayResizeCallback(PPDMIDISPLAYCONNECTOR pInterface,3736 uint32_t bpp, void *pvVRAM, uint32_t cbLine, uint32_t cx, uint32_t cy)3675 DECLCALLBACK(int) Display::i_displayResizeCallback(PPDMIDISPLAYCONNECTOR pInterface, 3676 uint32_t bpp, void *pvVRAM, uint32_t cbLine, uint32_t cx, uint32_t cy) 3737 3677 { 3738 3678 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); … … 3755 3695 } 3756 3696 3757 int rc = pThis-> handleDisplayResize(VBOX_VIDEO_PRIMARY_SCREEN, bpp, pvVRAM, cbLine, cx, cy, VBVA_SCREEN_F_ACTIVE);3697 int rc = pThis->i_handleDisplayResize(VBOX_VIDEO_PRIMARY_SCREEN, bpp, pvVRAM, cbLine, cx, cy, VBVA_SCREEN_F_ACTIVE); 3758 3698 3759 3699 /* Restore the flag. */ … … 3769 3709 * @see PDMIDISPLAYCONNECTOR::pfnUpdateRect 3770 3710 */ 3771 DECLCALLBACK(void) Display:: displayUpdateCallback(PPDMIDISPLAYCONNECTOR pInterface,3772 uint32_t x, uint32_t y, uint32_t cx, uint32_t cy)3711 DECLCALLBACK(void) Display::i_displayUpdateCallback(PPDMIDISPLAYCONNECTOR pInterface, 3712 uint32_t x, uint32_t y, uint32_t cx, uint32_t cy) 3773 3713 { 3774 3714 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); … … 3784 3724 */ 3785 3725 3786 pDrv->pDisplay-> handleDisplayUpdate(VBOX_VIDEO_PRIMARY_SCREEN, x, y, cx, cy);3726 pDrv->pDisplay->i_handleDisplayUpdate(VBOX_VIDEO_PRIMARY_SCREEN, x, y, cx, cy); 3787 3727 } 3788 3728 … … 3793 3733 * @thread EMT 3794 3734 */ 3795 DECLCALLBACK(void) Display:: displayRefreshCallback(PPDMIDISPLAYCONNECTOR pInterface)3735 DECLCALLBACK(void) Display::i_displayRefreshCallback(PPDMIDISPLAYCONNECTOR pInterface) 3796 3736 { 3797 3737 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); … … 3805 3745 unsigned uScreenId; 3806 3746 3807 int rc = pDisplay-> videoAccelRefreshProcess();3747 int rc = pDisplay->i_videoAccelRefreshProcess(); 3808 3748 if (rc != VINF_TRY_AGAIN) /* Means 'do nothing' here. */ 3809 3749 { … … 3812 3752 /* No VBVA do a display update. */ 3813 3753 DISPLAYFBINFO *pFBInfo = &pDisplay->maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN]; 3814 Assert(!pDisplay-> vbvaLockIsOwner());3754 Assert(!pDisplay->i_vbvaLockIsOwner()); 3815 3755 pDrv->pUpPort->pfnUpdateDisplay(pDrv->pUpPort); 3816 3756 } … … 3826 3766 DISPLAYFBINFO *pFBInfo = &pDisplay->maFramebuffers[uScreenId]; 3827 3767 3828 Assert 3829 pDisplay->mParent->i_consoleVRDPServer()->SendUpdate 3768 Assert(pDisplay->mParent && pDisplay->mParent->i_consoleVRDPServer()); 3769 pDisplay->mParent->i_consoleVRDPServer()->SendUpdate(uScreenId, NULL, 0); 3830 3770 } 3831 3771 } … … 3852 3792 pData->aParms[0].type = VBOX_HGCM_SVC_PARM_PTR; 3853 3793 pData->aParms[0].u.pointer.addr = &pDisplay->mCrOglScreenshotData; 3854 pData->aParms[0].u.pointer.size = sizeof 3855 rc = pDisplay-> crCtlSubmit(&pData->Hdr, sizeof (*pData),displayCrCmdFree, pData);3794 pData->aParms[0].u.pointer.size = sizeof(pDisplay->mCrOglScreenshotData); 3795 rc = pDisplay->i_crCtlSubmit(&pData->Hdr, sizeof(*pData), i_displayCrCmdFree, pData); 3856 3796 if (!RT_SUCCESS(rc)) 3857 3797 AssertMsgFailed(("crCtlSubmit failed rc %d\n", rc)); … … 3917 3857 * @see PDMIDISPLAYCONNECTOR::pfnReset 3918 3858 */ 3919 DECLCALLBACK(void) Display:: displayResetCallback(PPDMIDISPLAYCONNECTOR pInterface)3859 DECLCALLBACK(void) Display::i_displayResetCallback(PPDMIDISPLAYCONNECTOR pInterface) 3920 3860 { 3921 3861 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); … … 3924 3864 3925 3865 /* Disable VBVA mode. */ 3926 pDrv->pDisplay-> VideoAccelEnable(false, NULL);3866 pDrv->pDisplay->i_VideoAccelEnable(false, NULL); 3927 3867 } 3928 3868 … … 3932 3872 * @see PDMIDISPLAYCONNECTOR::pfnLFBModeChange 3933 3873 */ 3934 DECLCALLBACK(void) Display:: displayLFBModeChangeCallback(PPDMIDISPLAYCONNECTOR pInterface, bool fEnabled)3874 DECLCALLBACK(void) Display::i_displayLFBModeChangeCallback(PPDMIDISPLAYCONNECTOR pInterface, bool fEnabled) 3935 3875 { 3936 3876 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); … … 3950 3890 * @see PDMIDISPLAYCONNECTOR::pfnProcessAdapterData 3951 3891 */ 3952 DECLCALLBACK(void) Display:: displayProcessAdapterDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM,3953 uint32_t u32VRAMSize)3892 DECLCALLBACK(void) Display::i_displayProcessAdapterDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, 3893 uint32_t u32VRAMSize) 3954 3894 { 3955 3895 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); … … 3981 3921 { 3982 3922 pHdr = (VBOXVIDEOINFOHDR *)pu8; 3983 pu8 += sizeof 3923 pu8 += sizeof(VBOXVIDEOINFOHDR); 3984 3924 3985 3925 if (pu8 >= pu8End) … … 3991 3931 if (pHdr->u8Type == VBOX_VIDEO_INFO_TYPE_DISPLAY) 3992 3932 { 3993 if (pHdr->u16Length != sizeof 3933 if (pHdr->u16Length != sizeof(VBOXVIDEOINFODISPLAY)) 3994 3934 { 3995 3935 LogRel(("VBoxVideo: Guest adapter information %s invalid length %d!!!\n", "DISPLAY", pHdr->u16Length)); … … 4016 3956 else if (pHdr->u8Type == VBOX_VIDEO_INFO_TYPE_QUERY_CONF32) 4017 3957 { 4018 if (pHdr->u16Length != sizeof 3958 if (pHdr->u16Length != sizeof(VBOXVIDEOINFOQUERYCONF32)) 4019 3959 { 4020 3960 LogRel(("VBoxVideo: Guest adapter information %s invalid length %d!!!\n", "CONF32", pHdr->u16Length)); … … 4068 4008 * @see PDMIDISPLAYCONNECTOR::pfnProcessDisplayData 4069 4009 */ 4070 DECLCALLBACK(void) Display::displayProcessDisplayDataCallback(PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, unsigned uScreenId) 4010 DECLCALLBACK(void) Display::i_displayProcessDisplayDataCallback(PPDMIDISPLAYCONNECTOR pInterface, 4011 void *pvVRAM, unsigned uScreenId) 4071 4012 { 4072 4013 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); … … 4092 4033 { 4093 4034 pHdr = (VBOXVIDEOINFOHDR *)pu8; 4094 pu8 += sizeof 4035 pu8 += sizeof(VBOXVIDEOINFOHDR); 4095 4036 4096 4037 if (pu8 >= pu8End) … … 4102 4043 if (pHdr->u8Type == VBOX_VIDEO_INFO_TYPE_SCREEN) 4103 4044 { 4104 if (pHdr->u16Length != sizeof 4045 if (pHdr->u16Length != sizeof(VBOXVIDEOINFOSCREEN)) 4105 4046 { 4106 4047 LogRel(("VBoxVideo: Guest display information %s invalid length %d!!!\n", "SCREEN", pHdr->u16Length)); … … 4133 4074 } 4134 4075 4135 pDrv->pDisplay-> handleDisplayResize(uScreenId, pScreen->bitsPerPixel,4136 (uint8_t *)pvVRAM + pFBInfo->u32Offset,4137 pScreen->u32LineSize,4138 pScreen->u16Width, pScreen->u16Height,4139 VBVA_SCREEN_F_ACTIVE);4076 pDrv->pDisplay->i_handleDisplayResize(uScreenId, pScreen->bitsPerPixel, 4077 (uint8_t *)pvVRAM + pFBInfo->u32Offset, 4078 pScreen->u32LineSize, 4079 pScreen->u16Width, pScreen->u16Height, 4080 VBVA_SCREEN_F_ACTIVE); 4140 4081 } 4141 4082 } … … 4152 4093 else if (pHdr->u8Type == VBOX_VIDEO_INFO_TYPE_HOST_EVENTS) 4153 4094 { 4154 if (pHdr->u16Length != sizeof 4095 if (pHdr->u16Length != sizeof(VBOXVIDEOINFOHOSTEVENTS)) 4155 4096 { 4156 4097 LogRel(("VBoxVideo: Guest display information %s invalid length %d!!!\n", "HOST_EVENTS", pHdr->u16Length)); … … 4167 4108 else if (pHdr->u8Type == VBOX_VIDEO_INFO_TYPE_LINK) 4168 4109 { 4169 if (pHdr->u16Length != sizeof 4110 if (pHdr->u16Length != sizeof(VBOXVIDEOINFOLINK)) 4170 4111 { 4171 4112 LogRel(("VBoxVideo: Guest adapter information %s invalid length %d!!!\n", "LINK", pHdr->u16Length)); … … 4191 4132 #endif 4192 4133 4193 int Display:: handleVHWACommandProcess(PVBOXVHWACMD pCommand)4134 int Display::i_handleVHWACommandProcess(PVBOXVHWACMD pCommand) 4194 4135 { 4195 4136 unsigned id = (unsigned)pCommand->iDisplay; … … 4218 4159 } 4219 4160 4220 DECLCALLBACK(int) Display:: displayVHWACommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVHWACMD pCommand)4161 DECLCALLBACK(int) Display::i_displayVHWACommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVHWACMD pCommand) 4221 4162 { 4222 4163 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 4223 4164 4224 return pDrv->pDisplay-> handleVHWACommandProcess(pCommand);4165 return pDrv->pDisplay->i_handleVHWACommandProcess(pCommand); 4225 4166 } 4226 4167 #endif 4227 4168 4228 4169 #ifdef VBOX_WITH_CRHGSMI 4229 void Display:: handleCrHgsmiCommandCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam)4170 void Display::i_handleCrHgsmiCommandCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam) 4230 4171 { 4231 4172 mpDrv->pVBVACallbacks->pfnCrHgsmiCommandCompleteAsync(mpDrv->pVBVACallbacks, … … 4233 4174 } 4234 4175 4235 void Display:: handleCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam)4176 void Display::i_handleCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam) 4236 4177 { 4237 4178 PVBOXVDMACMD_CHROMIUM_CTL pCtl = (PVBOXVDMACMD_CHROMIUM_CTL)pParam->u.pointer.addr; … … 4239 4180 } 4240 4181 4241 void Display:: handleCrHgsmiCommandProcess(PVBOXVDMACMD_CHROMIUM_CMD pCmd, uint32_t cbCmd)4182 void Display::i_handleCrHgsmiCommandProcess(PVBOXVDMACMD_CHROMIUM_CMD pCmd, uint32_t cbCmd) 4242 4183 { 4243 4184 int rc = VERR_NOT_SUPPORTED; … … 4264 4205 4265 4206 /* we are here because something went wrong with command processing, complete it */ 4266 handleCrHgsmiCommandCompletion(rc, SHCRGL_HOST_FN_CRHGSMI_CMD, &parm);4267 } 4268 4269 void Display:: handleCrHgsmiControlProcess(PVBOXVDMACMD_CHROMIUM_CTL pCtl, uint32_t cbCtl)4207 i_handleCrHgsmiCommandCompletion(rc, SHCRGL_HOST_FN_CRHGSMI_CMD, &parm); 4208 } 4209 4210 void Display::i_handleCrHgsmiControlProcess(PVBOXVDMACMD_CHROMIUM_CTL pCtl, uint32_t cbCtl) 4270 4211 { 4271 4212 int rc = VERR_NOT_SUPPORTED; … … 4282 4223 bool fCheckPendingViewport = (pCtl->enmType == VBOXVDMACMD_CHROMIUM_CTL_TYPE_CRHGSMI_SETUP); 4283 4224 rc = pVMMDev->hgcmHostFastCallAsync(mhCrOglSvc, SHCRGL_HOST_FN_CRHGSMI_CTL, &parm, 4284 Display:: displayCrHgsmiControlCompletion, this);4225 Display::i_displayCrHgsmiControlCompletion, this); 4285 4226 AssertRC(rc); 4286 4227 if (RT_SUCCESS(rc)) … … 4295 4236 continue; 4296 4237 4297 rc = crViewportNotify(ul, pFb->pendingViewportInfo.x, pFb->pendingViewportInfo.y,4238 rc = i_crViewportNotify(ul, pFb->pendingViewportInfo.x, pFb->pendingViewportInfo.y, 4298 4239 pFb->pendingViewportInfo.width, pFb->pendingViewportInfo.height); 4299 4240 if (RT_SUCCESS(rc)) … … 4314 4255 4315 4256 /* we are here because something went wrong with command processing, complete it */ 4316 handleCrHgsmiControlCompletion(rc, SHCRGL_HOST_FN_CRHGSMI_CTL, &parm);4317 } 4318 4319 DECLCALLBACK(void) Display:: displayCrHgsmiCommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVDMACMD_CHROMIUM_CMD pCmd,4320 uint32_t cbCmd)4257 i_handleCrHgsmiControlCompletion(rc, SHCRGL_HOST_FN_CRHGSMI_CTL, &parm); 4258 } 4259 4260 DECLCALLBACK(void) Display::i_displayCrHgsmiCommandProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVDMACMD_CHROMIUM_CMD pCmd, 4261 uint32_t cbCmd) 4321 4262 { 4322 4263 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 4323 4264 4324 pDrv->pDisplay-> handleCrHgsmiCommandProcess(pCmd, cbCmd);4325 } 4326 4327 DECLCALLBACK(void) Display:: displayCrHgsmiControlProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVDMACMD_CHROMIUM_CTL pCmd,4328 uint32_t cbCmd)4265 pDrv->pDisplay->i_handleCrHgsmiCommandProcess(pCmd, cbCmd); 4266 } 4267 4268 DECLCALLBACK(void) Display::i_displayCrHgsmiControlProcess(PPDMIDISPLAYCONNECTOR pInterface, PVBOXVDMACMD_CHROMIUM_CTL pCmd, 4269 uint32_t cbCmd) 4329 4270 { 4330 4271 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 4331 4272 4332 pDrv->pDisplay-> handleCrHgsmiControlProcess(pCmd, cbCmd);4333 } 4334 4335 DECLCALLBACK(void) Display:: displayCrHgsmiCommandCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam,4336 void *pvContext)4273 pDrv->pDisplay->i_handleCrHgsmiControlProcess(pCmd, cbCmd); 4274 } 4275 4276 DECLCALLBACK(void) Display::i_displayCrHgsmiCommandCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, 4277 void *pvContext) 4337 4278 { 4338 4279 AssertMsgFailed(("not expected!")); 4339 4280 Display *pDisplay = (Display *)pvContext; 4340 pDisplay-> handleCrHgsmiCommandCompletion(result, u32Function, pParam);4341 } 4342 4343 DECLCALLBACK(void) Display:: displayCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam,4344 void *pvContext)4281 pDisplay->i_handleCrHgsmiCommandCompletion(result, u32Function, pParam); 4282 } 4283 4284 DECLCALLBACK(void) Display::i_displayCrHgsmiControlCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, 4285 void *pvContext) 4345 4286 { 4346 4287 Display *pDisplay = (Display *)pvContext; 4347 pDisplay-> handleCrHgsmiControlCompletion(result, u32Function, pParam);4288 pDisplay->i_handleCrHgsmiControlCompletion(result, u32Function, pParam); 4348 4289 4349 4290 } … … 4351 4292 4352 4293 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 4353 DECLCALLBACK(void) Display:: displayCrHgcmCtlSubmitCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam,4354 void *pvContext)4294 DECLCALLBACK(void) Display::i_displayCrHgcmCtlSubmitCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, 4295 void *pvContext) 4355 4296 { 4356 4297 VBOXCRCMDCTL *pCmd = (VBOXCRCMDCTL*)pParam->u.pointer.addr; … … 4359 4300 } 4360 4301 4361 int Display:: handleCrHgcmCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd,4302 int Display::i_handleCrHgcmCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, 4362 4303 PFNCRCTLCOMPLETION pfnCompletion, 4363 4304 void *pvCompletion) … … 4377 4318 4378 4319 pCmd->u.pfnInternal = (void(*)())pfnCompletion; 4379 int rc = pVMMDev->hgcmHostFastCallAsync(mhCrOglSvc, SHCRGL_HOST_FN_CTL, &parm, displayCrHgcmCtlSubmitCompletion,4320 int rc = pVMMDev->hgcmHostFastCallAsync(mhCrOglSvc, SHCRGL_HOST_FN_CTL, &parm, i_displayCrHgcmCtlSubmitCompletion, 4380 4321 pvCompletion); 4381 4322 if (!RT_SUCCESS(rc)) … … 4385 4326 } 4386 4327 4387 DECLCALLBACK(int) Display:: displayCrHgcmCtlSubmit(PPDMIDISPLAYCONNECTOR pInterface,4388 struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd,4389 PFNCRCTLCOMPLETION pfnCompletion,4390 void *pvCompletion)4328 DECLCALLBACK(int) Display::i_displayCrHgcmCtlSubmit(PPDMIDISPLAYCONNECTOR pInterface, 4329 struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, 4330 PFNCRCTLCOMPLETION pfnCompletion, 4331 void *pvCompletion) 4391 4332 { 4392 4333 PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface); 4393 4334 Display *pThis = pDrv->pDisplay; 4394 return pThis-> handleCrHgcmCtlSubmit(pCmd, cbCmd, pfnCompletion, pvCompletion);4395 } 4396 4397 int Display:: crCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, PFNCRCTLCOMPLETION pfnCompletion, void *pvCompletion)4335 return pThis->i_handleCrHgcmCtlSubmit(pCmd, cbCmd, pfnCompletion, pvCompletion); 4336 } 4337 4338 int Display::i_crCtlSubmit(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd, PFNCRCTLCOMPLETION pfnCompletion, void *pvCompletion) 4398 4339 { 4399 4340 int rc = RTCritSectRwEnterShared(&mCrOglLock); … … 4410 4351 } 4411 4352 4412 int Display:: crCtlSubmitSync(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd)4353 int Display::i_crCtlSubmitSync(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd) 4413 4354 { 4414 4355 int rc = RTCritSectRwEnterShared(&mCrOglLock); … … 4425 4366 } 4426 4367 4427 int Display:: crCtlSubmitAsyncCmdCopy(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd)4368 int Display::i_crCtlSubmitAsyncCmdCopy(struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd) 4428 4369 { 4429 4370 VBOXCRCMDCTL* pCmdCopy = (VBOXCRCMDCTL*)RTMemAlloc(cbCmd); … … 4436 4377 memcpy(pCmdCopy, pCmd, cbCmd); 4437 4378 4438 int rc = crCtlSubmit(pCmdCopy, cbCmd,displayCrCmdFree, pCmdCopy);4379 int rc = i_crCtlSubmit(pCmdCopy, cbCmd, i_displayCrCmdFree, pCmdCopy); 4439 4380 if (RT_FAILURE(rc)) 4440 4381 { … … 4447 4388 } 4448 4389 4449 int Display:: crCtlSubmitSyncIfHasDataForScreen(uint32_t u32ScreenID, struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd)4390 int Display::i_crCtlSubmitSyncIfHasDataForScreen(uint32_t u32ScreenID, struct VBOXCRCMDCTL* pCmd, uint32_t cbCmd) 4450 4391 { 4451 4392 int rc = RTCritSectRwEnterShared(&mCrOglLock); … … 4453 4394 4454 4395 if (mCrOglCallbacks.pfnHasDataForScreen && mCrOglCallbacks.pfnHasDataForScreen(u32ScreenID)) 4455 rc = crCtlSubmitSync(pCmd, cbCmd);4396 rc = i_crCtlSubmitSync(pCmd, cbCmd); 4456 4397 else 4457 rc = crCtlSubmitAsyncCmdCopy(pCmd, cbCmd);4398 rc = i_crCtlSubmitAsyncCmdCopy(pCmd, cbCmd); 4458 4399 4459 4400 RTCritSectRwLeaveShared(&mCrOglLock); … … 4462 4403 } 4463 4404 4464 bool Display:: handleCrVRecScreenshotBegin(uint32_t uScreen, uint64_t u64TimeStamp)4405 bool Display::i_handleCrVRecScreenshotBegin(uint32_t uScreen, uint64_t u64TimeStamp) 4465 4406 { 4466 4407 # if VBOX_WITH_VPX … … 4471 4412 } 4472 4413 4473 void Display:: handleCrVRecScreenshotEnd(uint32_t uScreen, uint64_t u64TimeStamp)4474 { 4475 } 4476 4477 void Display:: handleCrVRecScreenshotPerform(uint32_t uScreen,4478 uint32_t x, uint32_t y, uint32_t uPixelFormat,4479 uint32_t uBitsPerPixel, uint32_t uBytesPerLine,4480 uint32_t uGuestWidth, uint32_t uGuestHeight,4481 uint8_t *pu8BufferAddress, uint64_t u64TimeStamp)4414 void Display::i_handleCrVRecScreenshotEnd(uint32_t uScreen, uint64_t u64TimeStamp) 4415 { 4416 } 4417 4418 void Display::i_handleCrVRecScreenshotPerform(uint32_t uScreen, 4419 uint32_t x, uint32_t y, uint32_t uPixelFormat, 4420 uint32_t uBitsPerPixel, uint32_t uBytesPerLine, 4421 uint32_t uGuestWidth, uint32_t uGuestHeight, 4422 uint8_t *pu8BufferAddress, uint64_t u64TimeStamp) 4482 4423 { 4483 4424 Assert(mfCrOglVideoRecState == CRVREC_STATE_SUBMITTED); … … 4492 4433 } 4493 4434 4494 void Display:: handleVRecCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext)4435 void Display::i_handleVRecCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext) 4495 4436 { 4496 4437 Assert(mfCrOglVideoRecState == CRVREC_STATE_SUBMITTED); … … 4498 4439 } 4499 4440 4500 DECLCALLBACK(void) Display:: displayCrVRecScreenshotPerform(void *pvCtx, uint32_t uScreen,4501 uint32_t x, uint32_t y,4502 uint32_t uBitsPerPixel, uint32_t uBytesPerLine,4503 uint32_t uGuestWidth, uint32_t uGuestHeight,4504 uint8_t *pu8BufferAddress, uint64_t u64TimeStamp)4441 DECLCALLBACK(void) Display::i_displayCrVRecScreenshotPerform(void *pvCtx, uint32_t uScreen, 4442 uint32_t x, uint32_t y, 4443 uint32_t uBitsPerPixel, uint32_t uBytesPerLine, 4444 uint32_t uGuestWidth, uint32_t uGuestHeight, 4445 uint8_t *pu8BufferAddress, uint64_t u64TimeStamp) 4505 4446 { 4506 4447 Display *pDisplay = (Display *)pvCtx; 4507 pDisplay-> handleCrVRecScreenshotPerform(uScreen,4508 x, y, FramebufferPixelFormat_FOURCC_RGB, uBitsPerPixel,4509 uBytesPerLine, uGuestWidth, uGuestHeight,4510 pu8BufferAddress, u64TimeStamp);4511 } 4512 4513 DECLCALLBACK(bool) Display:: displayCrVRecScreenshotBegin(void *pvCtx, uint32_t uScreen, uint64_t u64TimeStamp)4448 pDisplay->i_handleCrVRecScreenshotPerform(uScreen, 4449 x, y, FramebufferPixelFormat_FOURCC_RGB, uBitsPerPixel, 4450 uBytesPerLine, uGuestWidth, uGuestHeight, 4451 pu8BufferAddress, u64TimeStamp); 4452 } 4453 4454 DECLCALLBACK(bool) Display::i_displayCrVRecScreenshotBegin(void *pvCtx, uint32_t uScreen, uint64_t u64TimeStamp) 4514 4455 { 4515 4456 Display *pDisplay = (Display *)pvCtx; 4516 return pDisplay-> handleCrVRecScreenshotBegin(uScreen, u64TimeStamp);4517 } 4518 4519 DECLCALLBACK(void) Display:: displayCrVRecScreenshotEnd(void *pvCtx, uint32_t uScreen, uint64_t u64TimeStamp)4457 return pDisplay->i_handleCrVRecScreenshotBegin(uScreen, u64TimeStamp); 4458 } 4459 4460 DECLCALLBACK(void) Display::i_displayCrVRecScreenshotEnd(void *pvCtx, uint32_t uScreen, uint64_t u64TimeStamp) 4520 4461 { 4521 4462 Display *pDisplay = (Display *)pvCtx; 4522 pDisplay->handleCrVRecScreenshotEnd(uScreen, u64TimeStamp); 4523 } 4524 4525 DECLCALLBACK(void) Display::displayVRecCompletion(int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext) 4463 pDisplay->i_handleCrVRecScreenshotEnd(uScreen, u64TimeStamp); 4464 } 4465 4466 DECLCALLBACK(void) Display::i_displayVRecCompletion(int32_t result, uint32_t u32Function, 4467 PVBOXHGCMSVCPARM pParam, void *pvContext) 4526 4468 { 4527 4469 Display *pDisplay = (Display *)pvContext; 4528 pDisplay-> handleVRecCompletion(result, u32Function, pParam, pvContext);4470 pDisplay->i_handleVRecCompletion(result, u32Function, pParam, pvContext); 4529 4471 } 4530 4472 … … 4533 4475 4534 4476 #ifdef VBOX_WITH_HGSMI 4535 DECLCALLBACK(int) Display::displayVBVAEnable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, PVBVAHOSTFLAGS pHostFlags, bool fRenderThreadMode) 4477 DECLCALLBACK(int) Display::i_displayVBVAEnable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, PVBVAHOSTFLAGS pHostFlags, 4478 bool fRenderThreadMode) 4536 4479 { 4537 4480 LogRelFlowFunc(("uScreenId %d\n", uScreenId)); … … 4559 4502 } 4560 4503 4561 DECLCALLBACK(void) Display:: displayVBVADisable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId)4504 DECLCALLBACK(void) Display::i_displayVBVADisable(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId) 4562 4505 { 4563 4506 LogRelFlowFunc(("uScreenId %d\n", uScreenId)); … … 4597 4540 { 4598 4541 /* Force full screen update, because VGA device must take control, do resize, etc. */ 4599 Assert(!pThis-> vbvaLockIsOwner());4542 Assert(!pThis->i_vbvaLockIsOwner()); 4600 4543 pThis->mpDrv->pUpPort->pfnUpdateDisplayAll(pThis->mpDrv->pUpPort, /* fFailOnResize = */ false); 4601 4544 } 4602 4545 } 4603 4546 4604 DECLCALLBACK(void) Display:: displayVBVAUpdateBegin(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId)4547 DECLCALLBACK(void) Display::i_displayVBVAUpdateBegin(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId) 4605 4548 { 4606 4549 LogFlowFunc(("uScreenId %d\n", uScreenId)); … … 4618 4561 } 4619 4562 4620 DECLCALLBACK(void) Display:: displayVBVAUpdateProcess(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId,4621 const PVBVACMDHDR pCmd, size_t cbCmd)4563 DECLCALLBACK(void) Display::i_displayVBVAUpdateProcess(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, 4564 const PVBVACMDHDR pCmd, size_t cbCmd) 4622 4565 { 4623 4566 LogFlowFunc(("uScreenId %d pCmd %p cbCmd %d, @%d,%d %dx%d\n", uScreenId, pCmd, cbCmd, pCmd->x, pCmd->y, pCmd->w, pCmd->h)); … … 4633 4576 && !pFBInfo->fDisabled) 4634 4577 { 4635 Assert(!pThis-> vbvaLockIsOwner());4636 pDrv->pUpPort->pfnUpdateDisplayRect 4578 Assert(!pThis->i_vbvaLockIsOwner()); 4579 pDrv->pUpPort->pfnUpdateDisplayRect(pDrv->pUpPort, pCmd->x, pCmd->y, pCmd->w, pCmd->h); 4637 4580 } 4638 4581 else if ( !pFBInfo->pSourceBitmap.isNull() … … 4674 4617 uint32_t u32DstBitsPerPixel = 32; 4675 4618 4676 Assert(!pThis-> vbvaLockIsOwner());4619 Assert(!pThis->i_vbvaLockIsOwner()); 4677 4620 pDrv->pUpPort->pfnCopyRect(pDrv->pUpPort, 4678 4621 width, height, … … 4697 4640 4698 4641 /* @todo new SendUpdate entry which can get a separate cmd header or coords. */ 4699 pThis->mParent->i_consoleVRDPServer()->SendUpdate 4642 pThis->mParent->i_consoleVRDPServer()->SendUpdate(uScreenId, pCmd, (uint32_t)cbCmd); 4700 4643 4701 4644 *pHdrUnconst = hdrSaved; 4702 4645 } 4703 4646 4704 DECLCALLBACK(void) Display:: displayVBVAUpdateEnd(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, int32_t x, int32_t y,4705 uint32_t cx, uint32_t cy)4647 DECLCALLBACK(void) Display::i_displayVBVAUpdateEnd(PPDMIDISPLAYCONNECTOR pInterface, unsigned uScreenId, int32_t x, int32_t y, 4648 uint32_t cx, uint32_t cy) 4706 4649 { 4707 4650 LogFlowFunc(("uScreenId %d %d,%d %dx%d\n", uScreenId, x, y, cx, cy)); … … 4716 4659 * cx, cy); 4717 4660 */ 4718 pThis-> handleDisplayUpdate(uScreenId, x - pFBInfo->xOrigin, y - pFBInfo->yOrigin, cx, cy);4661 pThis->i_handleDisplayUpdate(uScreenId, x - pFBInfo->xOrigin, y - pFBInfo->yOrigin, cx, cy); 4719 4662 } 4720 4663 … … 4790 4733 #endif /* DEBUG_sunlover */ 4791 4734 4792 DECLCALLBACK(int) Display:: displayVBVAResize(PPDMIDISPLAYCONNECTOR pInterface, const PVBVAINFOVIEW pView,4793 const PVBVAINFOSCREEN pScreen, void *pvVRAM)4735 DECLCALLBACK(int) Display::i_displayVBVAResize(PPDMIDISPLAYCONNECTOR pInterface, const PVBVAINFOVIEW pView, 4736 const PVBVAINFOSCREEN pScreen, void *pvVRAM) 4794 4737 { 4795 4738 LogRelFlowFunc(("pScreen %p, pvVRAM %p\n", pScreen, pvVRAM)); … … 4802 4745 if (pScreen->u16Flags & VBVA_SCREEN_F_DISABLED) 4803 4746 { 4804 pThis-> notifyCroglResize(pView, pScreen, pvVRAM);4747 pThis->i_notifyCroglResize(pView, pScreen, pvVRAM); 4805 4748 4806 4749 pFBInfo->fDisabled = true; … … 4812 4755 uint32_t u32Width = pFBInfo->w ? pFBInfo->w : 640; 4813 4756 uint32_t u32Height = pFBInfo->h ? pFBInfo->h : 480; 4814 pThis-> handleDisplayResize(pScreen->u32ViewIndex, 0, (uint8_t *)NULL, 0,4815 u32Width, u32Height, pScreen->u16Flags);4757 pThis->i_handleDisplayResize(pScreen->u32ViewIndex, 0, (uint8_t *)NULL, 0, 4758 u32Width, u32Height, pScreen->u16Flags); 4816 4759 4817 4760 fireGuestMonitorChangedEvent(pThis->mParent->i_getEventSource(), … … 4848 4791 4849 4792 if (fNewOrigin || fResize) 4850 pThis-> notifyCroglResize(pView, pScreen, pvVRAM);4793 pThis->i_notifyCroglResize(pView, pScreen, pvVRAM); 4851 4794 4852 4795 if (pFBInfo->fDisabled) … … 4899 4842 4900 4843 /* Do a regular resize. */ 4901 return pThis-> handleDisplayResize(pScreen->u32ViewIndex, pScreen->u16BitsPerPixel,4902 (uint8_t *)pvVRAM + pScreen->u32StartOffset,4903 pScreen->u32LineSize, pScreen->u32Width, pScreen->u32Height, pScreen->u16Flags);4904 } 4905 4906 DECLCALLBACK(int) Display:: displayVBVAMousePointerShape(PPDMIDISPLAYCONNECTOR pInterface, bool fVisible, bool fAlpha,4907 uint32_t xHot, uint32_t yHot,4908 uint32_t cx, uint32_t cy,4909 const void *pvShape)4844 return pThis->i_handleDisplayResize(pScreen->u32ViewIndex, pScreen->u16BitsPerPixel, 4845 (uint8_t *)pvVRAM + pScreen->u32StartOffset, 4846 pScreen->u32LineSize, pScreen->u32Width, pScreen->u32Height, pScreen->u16Flags); 4847 } 4848 4849 DECLCALLBACK(int) Display::i_displayVBVAMousePointerShape(PPDMIDISPLAYCONNECTOR pInterface, bool fVisible, bool fAlpha, 4850 uint32_t xHot, uint32_t yHot, 4851 uint32_t cx, uint32_t cy, 4852 const void *pvShape) 4910 4853 { 4911 4854 LogFlowFunc(("\n")); … … 4937 4880 * @interface_method_impl{PDMIBASE,pfnQueryInterface} 4938 4881 */ 4939 DECLCALLBACK(void *) Display:: drvQueryInterface(PPDMIBASE pInterface, const char *pszIID)4882 DECLCALLBACK(void *) Display::i_drvQueryInterface(PPDMIBASE pInterface, const char *pszIID) 4940 4883 { 4941 4884 PPDMDRVINS pDrvIns = PDMIBASE_2_PDMDRV(pInterface); … … 4953 4896 * @param pDrvIns The driver instance data. 4954 4897 */ 4955 DECLCALLBACK(void) Display:: drvDestruct(PPDMDRVINS pDrvIns)4898 DECLCALLBACK(void) Display::i_drvDestruct(PPDMDRVINS pDrvIns) 4956 4899 { 4957 4900 PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns); … … 4960 4903 4961 4904 if (pThis->pDisplay) 4962 Assert(!pThis->pDisplay-> vbvaLockIsOwner());4905 Assert(!pThis->pDisplay->i_vbvaLockIsOwner()); 4963 4906 4964 4907 pThis->pUpPort->pfnSetRenderVRAM(pThis->pUpPort, false); … … 4974 4917 AutoWriteLock displayLock(pThis->pDisplay COMMA_LOCKVAL_SRC_POS); 4975 4918 #ifdef VBOX_WITH_VPX 4976 pThis->pDisplay-> VideoCaptureStop();4919 pThis->pDisplay->i_VideoCaptureStop(); 4977 4920 #endif 4978 4921 #ifdef VBOX_WITH_CRHGSMI 4979 pThis->pDisplay-> destructCrHgsmiData();4922 pThis->pDisplay->i_destructCrHgsmiData(); 4980 4923 #endif 4981 4924 pThis->pDisplay->mpDrv = NULL; … … 4990 4933 * @copydoc FNPDMDRVCONSTRUCT 4991 4934 */ 4992 DECLCALLBACK(int) Display:: drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags)4935 DECLCALLBACK(int) Display::i_drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags) 4993 4936 { 4994 4937 PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns); … … 5008 4951 * Init Interfaces. 5009 4952 */ 5010 pDrvIns->IBase.pfnQueryInterface = Display:: drvQueryInterface;5011 5012 pThis->IConnector.pfnResize = Display:: displayResizeCallback;5013 pThis->IConnector.pfnUpdateRect = Display:: displayUpdateCallback;5014 pThis->IConnector.pfnRefresh = Display:: displayRefreshCallback;5015 pThis->IConnector.pfnReset = Display:: displayResetCallback;5016 pThis->IConnector.pfnLFBModeChange = Display:: displayLFBModeChangeCallback;5017 pThis->IConnector.pfnProcessAdapterData = Display:: displayProcessAdapterDataCallback;5018 pThis->IConnector.pfnProcessDisplayData = Display:: displayProcessDisplayDataCallback;4953 pDrvIns->IBase.pfnQueryInterface = Display::i_drvQueryInterface; 4954 4955 pThis->IConnector.pfnResize = Display::i_displayResizeCallback; 4956 pThis->IConnector.pfnUpdateRect = Display::i_displayUpdateCallback; 4957 pThis->IConnector.pfnRefresh = Display::i_displayRefreshCallback; 4958 pThis->IConnector.pfnReset = Display::i_displayResetCallback; 4959 pThis->IConnector.pfnLFBModeChange = Display::i_displayLFBModeChangeCallback; 4960 pThis->IConnector.pfnProcessAdapterData = Display::i_displayProcessAdapterDataCallback; 4961 pThis->IConnector.pfnProcessDisplayData = Display::i_displayProcessDisplayDataCallback; 5019 4962 #ifdef VBOX_WITH_VIDEOHWACCEL 5020 pThis->IConnector.pfnVHWACommandProcess = Display:: displayVHWACommandProcess;4963 pThis->IConnector.pfnVHWACommandProcess = Display::i_displayVHWACommandProcess; 5021 4964 #endif 5022 4965 #ifdef VBOX_WITH_CRHGSMI 5023 pThis->IConnector.pfnCrHgsmiCommandProcess = Display:: displayCrHgsmiCommandProcess;5024 pThis->IConnector.pfnCrHgsmiControlProcess = Display:: displayCrHgsmiControlProcess;4966 pThis->IConnector.pfnCrHgsmiCommandProcess = Display::i_displayCrHgsmiCommandProcess; 4967 pThis->IConnector.pfnCrHgsmiControlProcess = Display::i_displayCrHgsmiControlProcess; 5025 4968 #endif 5026 4969 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 5027 pThis->IConnector.pfnCrHgcmCtlSubmit = Display:: displayCrHgcmCtlSubmit;4970 pThis->IConnector.pfnCrHgcmCtlSubmit = Display::i_displayCrHgcmCtlSubmit; 5028 4971 #endif 5029 4972 #ifdef VBOX_WITH_HGSMI 5030 pThis->IConnector.pfnVBVAEnable = Display:: displayVBVAEnable;5031 pThis->IConnector.pfnVBVADisable = Display:: displayVBVADisable;5032 pThis->IConnector.pfnVBVAUpdateBegin = Display:: displayVBVAUpdateBegin;5033 pThis->IConnector.pfnVBVAUpdateProcess = Display:: displayVBVAUpdateProcess;5034 pThis->IConnector.pfnVBVAUpdateEnd = Display:: displayVBVAUpdateEnd;5035 pThis->IConnector.pfnVBVAResize = Display:: displayVBVAResize;5036 pThis->IConnector.pfnVBVAMousePointerShape = Display:: displayVBVAMousePointerShape;4973 pThis->IConnector.pfnVBVAEnable = Display::i_displayVBVAEnable; 4974 pThis->IConnector.pfnVBVADisable = Display::i_displayVBVADisable; 4975 pThis->IConnector.pfnVBVAUpdateBegin = Display::i_displayVBVAUpdateBegin; 4976 pThis->IConnector.pfnVBVAUpdateProcess = Display::i_displayVBVAUpdateProcess; 4977 pThis->IConnector.pfnVBVAUpdateEnd = Display::i_displayVBVAUpdateEnd; 4978 pThis->IConnector.pfnVBVAResize = Display::i_displayVBVAResize; 4979 pThis->IConnector.pfnVBVAMousePointerShape = Display::i_displayVBVAMousePointerShape; 5037 4980 #endif 5038 4981 … … 5069 5012 5070 5013 /* Disable VRAM to a buffer copy initially. */ 5071 Assert(!pDisplay-> vbvaLockIsOwner());5072 pThis->pUpPort->pfnSetRenderVRAM 5014 Assert(!pDisplay->i_vbvaLockIsOwner()); 5015 pThis->pUpPort->pfnSetRenderVRAM(pThis->pUpPort, false); 5073 5016 pThis->IConnector.cBits = 32; /* DevVGA does nothing otherwise. */ 5074 5017 … … 5076 5019 * Start periodic screen refreshes 5077 5020 */ 5078 Assert(!pDisplay-> vbvaLockIsOwner());5021 Assert(!pDisplay->i_vbvaLockIsOwner()); 5079 5022 pThis->pUpPort->pfnSetRefreshRate(pThis->pUpPort, 20); 5080 5023 5081 5024 #ifdef VBOX_WITH_CRHGSMI 5082 pDisplay-> setupCrHgsmiData();5025 pDisplay->i_setupCrHgsmiData(); 5083 5026 #endif 5084 5027 … … 5090 5033 if (fEnabled) 5091 5034 { 5092 rc = pDisplay-> VideoCaptureStart();5035 rc = pDisplay->i_VideoCaptureStart(); 5093 5036 fireVideoCaptureChangedEvent(pDisplay->mParent->i_getEventSource()); 5094 5037 } … … 5123 5066 sizeof(DRVMAINDISPLAY), 5124 5067 /* pfnConstruct */ 5125 Display:: drvConstruct,5068 Display::i_drvConstruct, 5126 5069 /* pfnDestruct */ 5127 Display:: drvDestruct,5070 Display::i_drvDestruct, 5128 5071 /* pfnRelocate */ 5129 5072 NULL, … … 5149 5092 PDM_DRVREG_VERSION 5150 5093 }; 5094 5151 5095 /* vi: set tabstop=4 shiftwidth=4 expandtab: */ -
trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp
r51612 r52064 476 476 return hr; 477 477 478 ULONG dummy; 478 479 LONG xShift, yShift; 479 hr = pDisplay->GetScreenResolution(uScreenId, NULL, NULL, NULL,480 hr = pDisplay->GetScreenResolution(uScreenId, &dummy, &dummy, &dummy, 480 481 &xShift, &yShift); 481 482 if (FAILED(hr)) -
trunk/src/VBox/Main/src-client/MouseImpl.cpp
r51612 r52064 554 554 { 555 555 ULONG displayWidth, displayHeight; 556 ULONG ulDummy; 557 LONG lDummy; 556 558 /* Takes the display lock */ 557 HRESULT rc = pDisplay-> getScreenResolution(0, &displayWidth,558 &displayHeight, NULL, NULL, NULL);559 HRESULT rc = pDisplay->i_getScreenResolution(0, &displayWidth, 560 &displayHeight, &ulDummy, &lDummy, &lDummy); 559 561 if (FAILED(rc)) 560 562 return rc; … … 569 571 int32_t x1, y1, x2, y2; 570 572 /* Takes the display lock */ 571 pDisplay-> getFramebufferDimensions(&x1, &y1, &x2, &y2);573 pDisplay->i_getFramebufferDimensions(&x1, &y1, &x2, &y2); 572 574 *pxAdj = x1 < x2 ? ((x - x1) * VMMDEV_MOUSE_RANGE + ADJUST_RANGE) 573 575 / (x2 - x1) : 0; … … 710 712 ULONG cWidth = 0; 711 713 ULONG cHeight = 0; 714 ULONG cBPP = 0; 712 715 LONG xOrigin = 0; 713 716 LONG yOrigin = 0; 714 HRESULT rc = pDisplay->getScreenResolution(uScreenId, &cWidth, &cHeight, NULL, &xOrigin, &yOrigin); 717 HRESULT rc = pDisplay->i_getScreenResolution(uScreenId, &cWidth, &cHeight, &cBPP, &xOrigin, &yOrigin); 718 NOREF(cBPP); 715 719 ComAssertComRCRetRC(rc); 716 720 -
trunk/src/VBox/Main/src-client/VMMDevInterface.cpp
r51642 r52064 369 369 { 370 370 LogSunlover(("MAIN::VMMDevInterface::iface_VideoAccelEnable: %d, %p\n", fEnable, pVbvaMemory)); 371 return display-> VideoAccelEnable(fEnable, pVbvaMemory);371 return display->i_VideoAccelEnable(fEnable, pVbvaMemory); 372 372 } 373 373 … … 384 384 { 385 385 LogSunlover(("MAIN::VMMDevInterface::iface_VideoAccelFlush\n")); 386 display-> VideoAccelFlush();386 display->i_VideoAccelFlush(); 387 387 } 388 388 } … … 451 451 452 452 /* Forward to Display, which calls corresponding framebuffers. */ 453 pConsole->i_getDisplay()-> handleSetVisibleRegion(cRect, pRect);453 pConsole->i_getDisplay()->i_handleSetVisibleRegion(cRect, pRect); 454 454 455 455 return VINF_SUCCESS; … … 462 462 463 463 /* Forward to Display, which calls corresponding framebuffers. */ 464 pConsole->i_getDisplay()-> handleQueryVisibleRegion(pcRect, pRect);464 pConsole->i_getDisplay()->i_handleQueryVisibleRegion(pcRect, pRect); 465 465 466 466 return VINF_SUCCESS; -
trunk/src/VBox/Main/src-client/xpcom/module.cpp
r51613 r52064 70 70 NS_DECL_CLASSINFO(Keyboard) 71 71 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Keyboard, IKeyboard) 72 NS_DECL_CLASSINFO(Display)73 NS_IMPL_THREADSAFE_ISUPPORTS2_CI(Display, IDisplay, IEventListener)74 72 NS_DECL_CLASSINFO(RemoteUSBDevice) 75 73 NS_IMPL_THREADSAFE_ISUPPORTS2_CI(RemoteUSBDevice, IHostUSBDevice, IUSBDevice) -
trunk/src/VBox/Main/testcase/tstMouseImpl.cpp
r51616 r52064 5 5 6 6 /* 7 * Copyright (C) 2011-201 3Oracle Corporation7 * Copyright (C) 2011-2014 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 40 40 class TestDisplay : public DisplayMouseInterface 41 41 { 42 v oid getFramebufferDimensions(int32_t *px1, int32_t *py1,43 int32_t *px2, int32_t *py2);44 int getScreenResolution(uint32_t cScreen, ULONG *pcx, ULONG *pcy,45 ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin);42 virtual HRESULT i_getScreenResolution(ULONG cScreen, ULONG *pcx, ULONG *pcy, 43 ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin); 44 virtual void i_getFramebufferDimensions(int32_t *px1, int32_t *py1, 45 int32_t *px2, int32_t *py2); 46 46 }; 47 47 … … 233 233 } 234 234 235 void TestDisplay:: getFramebufferDimensions(int32_t *px1, int32_t *py1,236 int32_t *px2, int32_t *py2)235 void TestDisplay::i_getFramebufferDimensions(int32_t *px1, int32_t *py1, 236 int32_t *px2, int32_t *py2) 237 237 { 238 238 if (px1) … … 246 246 } 247 247 248 int TestDisplay::getScreenResolution(uint32_tcScreen, ULONG *pcx,249 ULONG *pcy, ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin)248 HRESULT TestDisplay::i_getScreenResolution(ULONG cScreen, ULONG *pcx, 249 ULONG *pcy, ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin) 250 250 { 251 251 NOREF(cScreen);
Note:
See TracChangeset
for help on using the changeset viewer.