VirtualBox

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


Ignore:
Timestamp:
Jun 8, 2020 5:52:03 PM (5 years ago)
Author:
vboxsync
Message:

VBoxTray: error checking in multiple screens resizing code; removed unused code.

Location:
trunk/src/VBox/Additions/WINNT/VBoxTray
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDispIf.cpp

    r84452 r84728  
    17731773BOOL VBoxDispIfResizeDisplayWin7(PCVBOXDISPIF const pIf, uint32_t cDispDef, const VMMDevDisplayDef *paDispDef)
    17741774{
    1775     const VMMDevDisplayDef* pDispDef;
     1775    const VMMDevDisplayDef *pDispDef;
    17761776    uint32_t i;
    17771777
     
    17981798            Size.cy = pDispDef->cy;
    17991799
    1800             vboxDispIfUpdateModesWDDM(&Op, pDispDef->idDisplay, &Size);
     1800            winEr = vboxDispIfUpdateModesWDDM(&Op, pDispDef->idDisplay, &Size);
     1801            if (winEr != ERROR_SUCCESS)
     1802                break;
    18011803        }
    18021804    }
    18031805
    18041806    vboxDispIfOpEnd(&Op);
     1807
     1808    if (winEr != ERROR_SUCCESS)
     1809        return (winEr == ERROR_SUCCESS);
    18051810
    18061811    VBOXDISPIF_WDDM_DISPCFG DispCfg;
     
    20442049}
    20452050
    2046 BOOL VBoxDispIfResizeDisplayVista(PCVBOXDISPIF const pIf, uint32_t cDispDef, const VMMDevDisplayDef *paDispDef)
    2047 {
    2048     const VMMDevDisplayDef* pDispDef;
    2049     VBOXDISPIF_OP Op;
    2050     DWORD winEr = ERROR_SUCCESS;
    2051     uint32_t id;
    2052     DISPLAY_DEVICE *paDisplayDevices;
    2053     DEVMODE *paDisplayModes;
    2054     RECTL *paRects;
    2055     DWORD DevNum = 0;
    2056     DWORD DevPrimaryNum = 0;
    2057     DWORD status;
    2058     DISPLAY_DEVICE *pDev;
    2059     DEVMODE *pMode;
    2060     DWORD cDisplays;
    2061 
    2062     //    if (!pCtx->fAnyX)
    2063     //       Width &= 0xFFF8;
    2064 
    2065     cDisplays = VBoxDisplayGetCount();
    2066 
    2067     paDisplayDevices = (DISPLAY_DEVICE *)alloca(sizeof(DISPLAY_DEVICE) * cDisplays);
    2068     paDisplayModes = (DEVMODE *)alloca(sizeof(DEVMODE) * cDisplays);
    2069     paRects = (RECTL *)alloca(sizeof(RECTL) * cDisplays);
    2070 
    2071     status = VBoxDisplayGetConfig(cDisplays, &DevPrimaryNum, &DevNum, paDisplayDevices, paDisplayModes);
    2072     if (status != NO_ERROR)
    2073     {
    2074         LogFlowFunc(("ResizeDisplayDevice: VBoxGetDisplayConfig failed, %d\n", status));
    2075         return FALSE;
    2076     }
    2077 
    2078     if (cDisplays != DevNum)
    2079         LogFlowFunc(("ResizeDisplayDevice: NumDevices(%d) != DevNum(%d)\n", cDisplays, DevNum));
    2080 
    2081     if (cDisplays != cDispDef)
    2082     {
    2083         LogFlowFunc(("ResizeDisplayDevice: cDisplays(%d) != cModeHints(%d)\n", cDisplays, cDispDef));
    2084         return FALSE;
    2085     }
    2086 
    2087     vboxDispIfOpBegin(pIf, &Op);
    2088     if (winEr != ERROR_SUCCESS)
    2089     {
    2090         WARN(("VBoxTray: vboxDispIfOpBegin failed winEr 0x%x", winEr));
    2091         return (winEr == ERROR_SUCCESS);
    2092     }
    2093 
    2094     for (id = 0; id < cDispDef; ++id)
    2095     {
    2096         pDispDef = &paDispDef[id];
    2097 
    2098         if (RT_BOOL(pDispDef->fDisplayFlags & VMMDEV_DISPLAY_DISABLED))
    2099             continue;
    2100 
    2101         if (   RT_BOOL(pDispDef->fDisplayFlags & VMMDEV_DISPLAY_CX)
    2102             && RT_BOOL(pDispDef->fDisplayFlags & VMMDEV_DISPLAY_CY))
    2103         {
    2104             RTRECTSIZE Size;
    2105             Size.cx = pDispDef->cx;
    2106             Size.cy = pDispDef->cy;
    2107 
    2108             vboxDispIfUpdateModesWDDM(&Op, id, &Size);
    2109         }
    2110     }
    2111 
    2112     vboxDispIfOpEnd(&Op);
    2113 
    2114     for (id = 0; id < cDispDef; id++)
    2115     {
    2116         DEVMODE tempDevMode;
    2117 
    2118         ZeroMemory (&tempDevMode, sizeof (tempDevMode));
    2119         tempDevMode.dmSize = sizeof(DEVMODE);
    2120 
    2121         EnumDisplaySettings((LPSTR)paDisplayDevices[id].DeviceName, 0xffffff, &tempDevMode);
    2122     }
    2123 
    2124     for (id = 0; id < cDispDef; ++id)
    2125     {
    2126         pDev = &paDisplayDevices[id];
    2127         pMode = &paDisplayModes[id];
    2128         pDispDef = &paDispDef[id];
    2129 
    2130         if (pDev->StateFlags & DISPLAY_DEVICE_ACTIVE)
    2131         {
    2132             if (!(pDispDef->fDisplayFlags & VMMDEV_DISPLAY_DISABLED))
    2133             {
    2134                 pMode->dmFields = 0;
    2135 
    2136                 if (pMode->dmPosition.x != pDispDef->xOrigin || pMode->dmPosition.y != pDispDef->yOrigin)
    2137                 {
    2138                     pMode->dmPosition.x = pDispDef->xOrigin;
    2139                     pMode->dmPosition.y = pDispDef->yOrigin;
    2140                     pMode->dmFields |= DM_POSITION;
    2141                 }
    2142 
    2143                 if (pMode->dmBitsPerPel != pDispDef->cBitsPerPixel)
    2144                 {
    2145                     pMode->dmBitsPerPel = pDispDef->cBitsPerPixel;
    2146                     pMode->dmFields |= DM_BITSPERPEL;
    2147                 }
    2148 
    2149                 if (pMode->dmPelsWidth != pDispDef->cx)
    2150                 {
    2151                     pMode->dmPelsWidth = pDispDef->cx;
    2152                     pMode->dmFields |= DM_PELSWIDTH;
    2153                 }
    2154 
    2155                 if (pMode->dmPelsHeight != pDispDef->cy)
    2156                 {
    2157                     pMode->dmPelsHeight = pDispDef->cy;
    2158                     pMode->dmFields |= DM_PELSHEIGHT;
    2159                 }
    2160 
    2161                 if (pMode->dmFields)
    2162                     status = pIf->modeData.wddm.pfnChangeDisplaySettingsEx((LPSTR)pDev->DeviceName, pMode, NULL, CDS_NORESET | CDS_UPDATEREGISTRY, NULL);
    2163             }
    2164             else
    2165             {
    2166                 DEVMODE tmpDevMode;
    2167 
    2168                 ZeroMemory(&tmpDevMode, sizeof(DEVMODE));
    2169                 tmpDevMode.dmSize = sizeof(DEVMODE);
    2170                 tmpDevMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_POSITION | DM_DISPLAYFREQUENCY | DM_DISPLAYFLAGS;
    2171 
    2172                 status = pIf->modeData.wddm.pfnChangeDisplaySettingsEx(pDev->DeviceName, &tmpDevMode, NULL, CDS_UPDATEREGISTRY | CDS_NORESET, NULL);
    2173             }
    2174         }
    2175         else
    2176         {
    2177             pMode->dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_POSITION | DM_DISPLAYFREQUENCY | DM_DISPLAYFLAGS;
    2178 
    2179             pMode->dmPosition.x = pDispDef->xOrigin;
    2180             pMode->dmPosition.y = pDispDef->yOrigin;
    2181             pMode->dmBitsPerPel = pDispDef->cBitsPerPixel;
    2182             pMode->dmPelsWidth  = pDispDef->cx;
    2183             pMode->dmPelsHeight = pDispDef->cy;
    2184 
    2185             status = pIf->modeData.wddm.pfnChangeDisplaySettingsEx((LPSTR)pDev->DeviceName, pMode, NULL, CDS_NORESET | CDS_UPDATEREGISTRY, NULL);
    2186         }
    2187     }
    2188 
    2189     pIf->modeData.wddm.pfnChangeDisplaySettingsEx(NULL, NULL, NULL, 0, NULL);
    2190 
    2191     return (winEr == ERROR_SUCCESS);
    2192 }
    2193 
    21942051static DWORD vboxDispIfWddmResizeDisplay2(PCVBOXDISPIF const pIf, DISPLAY_DEVICE *paDisplayDevices, DEVMODE *paDeviceModes, UINT devModes)
    21952052{
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDispIf.h

    r82968 r84728  
    8989
    9090BOOL VBoxDispIfResizeDisplayWin7(PCVBOXDISPIF const pIf, uint32_t cDispDef, const VMMDevDisplayDef *paDispDef);
    91 BOOL VBoxDispIfResizeDisplayVista(PCVBOXDISPIF const pIf, uint32_t cDispDef, const VMMDevDisplayDef *paDispDef);
    9291
    9392typedef struct VBOXDISPIF_SEAMLESS
Note: See TracChangeset for help on using the changeset viewer.

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