Changeset 44382 in vbox for trunk/src/VBox/Main
- Timestamp:
- Jan 25, 2013 2:14:51 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-client/DisplayImpl.cpp
r44347 r44382 2774 2774 } 2775 2775 2776 void Display::InvalidateAndUpdateEMT(Display *pDisplay )2776 void Display::InvalidateAndUpdateEMT(Display *pDisplay, unsigned uId, bool fUpdateAll) 2777 2777 { 2778 2778 pDisplay->vbvaLock(); 2779 2779 unsigned uScreenId; 2780 for (uScreenId = 0; uScreenId < pDisplay->mcMonitors; uScreenId++)2780 for (uScreenId = (fUpdateAll ? 0 : uId); uScreenId < pDisplay->mcMonitors; uScreenId++) 2781 2781 { 2782 2782 DISPLAYFBINFO *pFBInfo = &pDisplay->maFramebuffers[uScreenId]; … … 2789 2789 { 2790 2790 if ( !pFBInfo->pFramebuffer.isNull() 2791 && !(pFBInfo->fDisabled)) 2791 && !(pFBInfo->fDisabled) 2792 && pFBInfo->u32ResizeStatus == ResizeStatus_Void) 2792 2793 { 2793 2794 /* Render complete VRAM screen to the framebuffer. … … 2797 2798 { 2798 2799 BYTE *address = NULL; 2800 ULONG uWidth = 0; 2801 ULONG uHeight = 0; 2802 pFBInfo->pFramebuffer->COMGETTER(Width) (&uWidth); 2803 pFBInfo->pFramebuffer->COMGETTER(Height) (&uHeight); 2799 2804 HRESULT hrc = pFBInfo->pFramebuffer->COMGETTER(Address) (&address); 2800 2805 if (SUCCEEDED(hrc) && address != NULL) … … 2820 2825 uint32_t u32DstBitsPerPixel = 32; 2821 2826 2822 pDisplay->mpDrv->pUpPort->pfnCopyRect(pDisplay->mpDrv->pUpPort, 2823 width, height, 2824 pu8Src, 2825 xSrc, ySrc, 2826 u32SrcWidth, u32SrcHeight, 2827 u32SrcLineSize, u32SrcBitsPerPixel, 2828 pu8Dst, 2829 xDst, yDst, 2830 u32DstWidth, u32DstHeight, 2831 u32DstLineSize, u32DstBitsPerPixel); 2827 /* if uWidth != pFBInfo->w and uHeight != pFBInfo->h 2828 * implies resize of Framebuffer is in progress and 2829 * copyrect should not be called. 2830 */ 2831 if (uWidth == pFBInfo->w && uHeight == pFBInfo->h) 2832 { 2833 2834 pDisplay->mpDrv->pUpPort->pfnCopyRect(pDisplay->mpDrv->pUpPort, 2835 width, height, 2836 pu8Src, 2837 xSrc, ySrc, 2838 u32SrcWidth, u32SrcHeight, 2839 u32SrcLineSize, u32SrcBitsPerPixel, 2840 pu8Dst, 2841 xDst, yDst, 2842 u32DstWidth, u32DstHeight, 2843 u32DstLineSize, u32DstBitsPerPixel); 2844 } 2832 2845 } 2833 2846 } … … 2836 2849 } 2837 2850 } 2851 if (!fUpdateAll) 2852 break; 2838 2853 } 2839 2854 pDisplay->vbvaUnlock(); … … 2870 2885 /* pdm.h says that this has to be called from the EMT thread */ 2871 2886 int rcVBox = VMR3ReqCallVoidWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display::InvalidateAndUpdateEMT, 2872 1, this);2887 3, this, 0, true); 2873 2888 alock.acquire(); 2874 2889 … … 3228 3243 * Repaint all displays because VM continued to run during the framebuffer resize. 3229 3244 */ 3230 pDisplay->InvalidateAndUpdateEMT(pDisplay );3245 pDisplay->InvalidateAndUpdateEMT(pDisplay, uScreenId, false); 3231 3246 } 3232 3247 else if (u32ResizeStatus == ResizeStatus_InProgress)
Note:
See TracChangeset
for help on using the changeset viewer.