ok, i found a quick fix. You can check in this change after testing.
 
This will work if there is no visible regions.
 
Just need to comment off one line of code, so display will be refreshed even if 
cRectVisibleRegion == 0
 
src\VBox\Main\DisplayImpl.cpp
 
int Display::handleSetVisibleRegion(uint32_t cRect, PRTRECT pRect)
{
...
 
//if (cRectVisibleRegion > 0)
{
pFBInfo->pFramebuffer->SetVisibleRegion((BYTE *)pVisibleRegion, 
cRectVisibleRegion);
}
 
...
 
}

--- On Fri, 7/16/10, Huihong Luo <[email protected]> wrote:


From: Huihong Luo <[email protected]>
Subject: Re: [vbox-dev] seamless display update question
To: [email protected]
Date: Friday, July 16, 2010, 5:35 PM






did a bit more testing.

The bug can be easily reproduced this way.

Windows XP guest on Windows host, seamless window, kill Explorer.exe in vm, so 
there is no taskbar, then run IE or any other apps from vm, Make sure there is 
only one visible window inside vm in seamless mode.

now minimize the window, and you will see background not updated.

This is to do with if there is no visible regions, host display somehow does 
not get displayed.

The call in [VBoxC.dll]Display::handleSetVisibleRegion() in displayimple.cpp, 
variable cRectVisibleRegion == 0, and thus not causing 
UIMachineViewSeamless.cpp to handle UISetRegionEvent.

This should be easy to fix. Basically, need to clear display even if there is 
no visible regions.

--- On Fri, 7/16/10, Huihong Luo <[email protected]> wrote:


From: Huihong Luo <[email protected]>
Subject: [vbox-dev] seamless display update question
To: [email protected]
Date: Friday, July 16, 2010, 12:21 PM







If explorer.exe windows (taskbar) are made invisible in seamless mode, when 
another application window is minimized, the desktop is not updated. i.e., xp 
background is still shown.
 
I need to understand what happens when a window is minized inside xp guest in 
seamless mode. As I understand this is the sequences:
 
(1) vboxhook.dll will enumerate all visible windows to build a list of visible 
rects
 
(2)  visible areas will send to host via requst VMMDevReq_VideoSetVisibleRegion
 
(3) host refresh the displays
 
I did some debuging, after a window is minized, nagative numbers appears for 
visible areas, which might be the cause?
 
Any ideas why display is not updated correctly? I traced the calls, 
VBoxSeamlessCheckWindows() in VBoxTray.cpp gets called when a window is 
minized, and 
VBoxDispIfEscape() is also invoked to send reques to host. but somehow, not 
working right.
 
Moving a window has no issues.
 
Thanks,
 
 
 
-----Inline Attachment Follows-----


_______________________________________________
vbox-dev mailing list
[email protected]
http://vbox.innotek.de/mailman/listinfo/vbox-dev

-----Inline Attachment Follows-----


_______________________________________________
vbox-dev mailing list
[email protected]
http://vbox.innotek.de/mailman/listinfo/vbox-dev
_______________________________________________
vbox-dev mailing list
[email protected]
http://vbox.innotek.de/mailman/listinfo/vbox-dev

Reply via email to