Changeset 41963 in vbox for trunk/src/VBox
- Timestamp:
- Jun 28, 2012 1:22:08 PM (13 years ago)
- Location:
- trunk/src/VBox/Additions/common/crOpenGL
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/common/crOpenGL/context.c
r39631 r41963 121 121 winInfo->width = size[0]; 122 122 winInfo->height = size[1]; 123 winInfo->mapped = 1; 123 #ifdef VBOX_WITH_WDDM 124 if (stub.bRunningUnderWDDM) 125 winInfo->mapped = 0; 126 else 127 #endif 128 { 129 winInfo->mapped = 1; 130 } 124 131 125 132 if (!dpyName) … … 166 173 { 167 174 #if defined(WINDOWS) 175 # ifdef VBOX_WITH_WDDM 176 if (stub.bRunningUnderWDDM) 177 return win->mapped; 178 # endif 168 179 return GL_TRUE; 169 180 #elif defined(Darwin) … … 289 300 winInfo->type = UNDECIDED; 290 301 winInfo->spuWindow = -1; 291 winInfo->mapped = -1; /* don't know */ 302 #ifdef VBOX_WITH_WDDM 303 if (stub.bRunningUnderWDDM) 304 winInfo->mapped = 0; 305 else 306 #endif 307 { 308 winInfo->mapped = -1; /* don't know */ 309 } 292 310 winInfo->pOwner = NULL; 293 311 #ifdef CR_NEWWINTRACK … … 1146 1164 window->width = winW; 1147 1165 window->height = winH; 1148 if (stub.trackWindowSize) 1149 stub.spuDispatch.WindowSize( window->spuWindow, winW, winH ); 1150 if (stub.trackWindowPos) 1151 stub.spuDispatch.WindowPosition(window->spuWindow, x, y); 1152 if (winW > 0 && winH > 0) 1153 stub.spu->dispatch_table.Viewport( 0, 0, winW, winH ); 1166 #if defined(WINDOWS) && defined(VBOX_WITH_WDDM) 1167 if (stubIsWindowVisible(window)) 1168 #endif 1169 { 1170 if (stub.trackWindowSize) 1171 stub.spuDispatch.WindowSize( window->spuWindow, winW, winH ); 1172 if (stub.trackWindowPos) 1173 stub.spuDispatch.WindowPosition(window->spuWindow, x, y); 1174 if (winW > 0 && winH > 0) 1175 stub.spu->dispatch_table.Viewport( 0, 0, winW, winH ); 1176 } 1154 1177 #ifdef VBOX_WITH_WDDM 1155 1178 stub.spu->dispatch_table.WindowVisibleRegion(window->spuWindow, 0, NULL); -
trunk/src/VBox/Additions/common/crOpenGL/load.c
r41638 r41963 831 831 PVBOXCR_UPDATEWNDCB pCbData = (PVBOXCR_UPDATEWNDCB) data2; 832 832 VBOXDISPMP_REGIONS *pRegions = &pCbData->Regions; 833 bool bChanged = false ;833 bool bChanged = false, bDoMap = false; 834 834 HRGN hNewRgn = INVALID_HANDLE_VALUE; 835 835 … … 847 847 } 848 848 849 if (!pWindow->mapped)850 {851 pWindow->mapped = GL_TRUE;852 bChanged = true;853 crDebug("Dispatched: WindowShow(%i, %i)", pWindow->spuWindow, pWindow->mapped);854 stub.spu->dispatch_table.WindowShow(pWindow->spuWindow, pWindow->mapped);855 }856 857 849 if (pRegions->pRegions->fFlags.bAddVisibleRects || pRegions->pRegions->fFlags.bSetViewRect) 858 850 { 851 if (!pWindow->mapped) 852 { 853 bDoMap = true; 854 } 855 859 856 /* ensure data integrity */ 860 857 Assert(!pRegions->pRegions->fFlags.bAddHiddenRects); … … 871 868 winH = pRegions->pRegions->RectsInfo.aRects[0].bottom - winY; 872 869 873 if (stub.trackWindowPos && ( winX!=pWindow->x || winY!=pWindow->y))870 if (stub.trackWindowPos && (bDoMap || winX!=pWindow->x || winY!=pWindow->y)) 874 871 { 875 872 crDebug("Dispatched WindowPosition (%i)", pWindow->spuWindow); … … 880 877 } 881 878 882 if (stub.trackWindowSize && ( winW!=pWindow->width || winH!=pWindow->height))879 if (stub.trackWindowSize && (bDoMap || winW!=pWindow->width || winH!=pWindow->height)) 883 880 { 884 881 crDebug("Dispatched WindowSize (%i)", pWindow->spuWindow); … … 962 959 } 963 960 } 961 } 962 963 if (bDoMap) 964 { 965 pWindow->mapped = GL_TRUE; 966 bChanged = true; 967 crDebug("Dispatched: WindowShow(%i, %i)", pWindow->spuWindow, pWindow->mapped); 968 stub.spu->dispatch_table.WindowShow(pWindow->spuWindow, pWindow->mapped); 964 969 } 965 970 -
trunk/src/VBox/Additions/common/crOpenGL/stub.c
r39631 r41963 249 249 if (bForceUpdate || winW != pWindow->width || winH != pWindow->height) { 250 250 crDebug("Dispatched WindowSize (%i)", pWindow->spuWindow); 251 stub.spuDispatch.WindowSize(pWindow->spuWindow, winW, winH); 251 #ifdef VBOX_WITH_WDDM 252 if (!stub.bRunningUnderWDDM || pWindow->mapped) 253 #endif 254 { 255 stub.spuDispatch.WindowSize(pWindow->spuWindow, winW, winH); 256 } 252 257 pWindow->width = winW; 253 258 pWindow->height = winH; … … 258 263 if (bForceUpdate || winX != pWindow->x || winY != pWindow->y) { 259 264 crDebug("Dispatched WindowPosition (%i)", pWindow->spuWindow); 260 stub.spuDispatch.WindowPosition(pWindow->spuWindow, winX, winY); 265 #ifdef VBOX_WITH_WDDM 266 if (!stub.bRunningUnderWDDM || pWindow->mapped) 267 #endif 268 { 269 stub.spuDispatch.WindowPosition(pWindow->spuWindow, winX, winY); 270 } 261 271 pWindow->x = winX; 262 272 pWindow->y = winY;
Note:
See TracChangeset
for help on using the changeset viewer.