[vbox-dev] seamless display update question

Huihong Luo huisinro at yahoo.com
Sat Jul 17 00:59:13 GMT 2010


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 <huisinro at yahoo.com> wrote:


From: Huihong Luo <huisinro at yahoo.com>
Subject: Re: [vbox-dev] seamless display update question
To: vbox-dev at virtualbox.org
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 <huisinro at yahoo.com> wrote:


From: Huihong Luo <huisinro at yahoo.com>
Subject: [vbox-dev] seamless display update question
To: vbox-dev at virtualbox.org
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
vbox-dev at virtualbox.org
http://vbox.innotek.de/mailman/listinfo/vbox-dev

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


_______________________________________________
vbox-dev mailing list
vbox-dev at virtualbox.org
http://vbox.innotek.de/mailman/listinfo/vbox-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20100716/faffb1a9/attachment.html>


More information about the vbox-dev mailing list