VirtualBox

Changeset 62865 in vbox for trunk/src/VBox/Additions


Ignore:
Timestamp:
Aug 2, 2016 10:11:36 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
109461
Message:

3D: report guest screen position to the host when the user rearranges screens in the guest. bugref:8450

Location:
trunk/src/VBox/Additions/WINNT
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r62522 r62865  
    49294929                break;
    49304930            }
     4931            case VBOXESC_GUEST_DISPLAYCHANGED:
     4932            {
     4933                LOG(("=> VBOXESC_GUEST_DISPLAYCHANGED"));
     4934
     4935                for (int i = 0; i < VBoxCommonFromDeviceExt(pDevExt)->cDisplays; ++i)
     4936                {
     4937                    vboxWddmDisplaySettingsCheckPos(pDevExt, i);
     4938                }
     4939                break;
     4940            }
    49314941            default:
    49324942                WARN(("unsupported escape code (0x%x)", pEscapeHdr->escapeCode));
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDisplay.cpp

    r62522 r62865  
    10111011        else
    10121012        {
     1013            // Checking once a second whether or not WM_DISPLAYCHANGED happened.
     1014            if (ASMAtomicXchgU32(&g_fGuestDisplaysChanged, 0))
     1015            {
     1016                // XPDM driver has VBoxDispDrvNotify to receive such a notifications
     1017                if (pCtx->pEnv->dispIf.enmMode >= VBOXDISPIF_MODE_WDDM)
     1018                {
     1019                    VBOXDISPIFESCAPE EscapeHdr = { 0 };
     1020                    EscapeHdr.escapeCode = VBOXESC_GUEST_DISPLAYCHANGED;
     1021
     1022                    DWORD err = VBoxDispIfEscapeInOut(&pCtx->pEnv->dispIf, &EscapeHdr, 0);
     1023                    LogFlowFunc(("VBoxDispIfEscapeInOut returned %d\n", err));
     1024                }
     1025            }
    10131026            /* sleep a bit to not eat too much CPU in case the above call always fails */
    10141027            RTThreadSleep(10);
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxTray.cpp

    r62522 r62865  
    144144NOTIFYICONDATA        g_NotifyIconData;
    145145DWORD                 g_dwMajorVersion;
     146
     147uint32_t              g_fGuestDisplaysChanged = 0;
    146148
    147149static PRTLOGGER      g_pLoggerRelease = NULL;
     
    11651167
    11661168        case WM_DISPLAYCHANGE:
     1169            ASMAtomicUoWriteU32(&g_fGuestDisplaysChanged, 1);
     1170            // No break or return is intentional here.
    11671171        case WM_VBOX_SEAMLESS_UPDATE:
    11681172        {
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxTray.h

    r62679 r62865  
    189189extern HWND         g_hwndToolWindow;
    190190extern HINSTANCE    g_hInstance;
     191extern uint32_t     g_fGuestDisplaysChanged;
    191192
    192193#endif /* !___VBOXTRAY_H */
  • trunk/src/VBox/Additions/WINNT/include/VBoxDisplay.h

    r62522 r62865  
    4242# define VBOXESC_CRHGSMICTLCON_GETHOSTCAPS  0xABCD9015
    4343# define VBOXESC_UPDATEMODES                0xABCD9016
     44# define VBOXESC_GUEST_DISPLAYCHANGED       0xABCD9017
    4445#endif /* #ifdef VBOX_WITH_WDDM */
    4546
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette