Changeset 3884 in vbox for trunk/src/VBox/Additions
- Timestamp:
- Jul 26, 2007 3:58:26 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/VBoxService/VBoxSeamless.cpp
r3881 r3884 35 35 const VBOXSERVICEENV *pEnv; 36 36 37 HMODULE hModule; 38 39 BOOL (* pfnVBoxInstallHook)(HMODULE hDll, HWND hwndPostWindow); 40 BOOL (* pfnVBoxRemoveHook)(); 41 37 HMODULE hModule; 38 39 BOOL (* pfnVBoxInstallHook)(HMODULE hDll, HWND hwndPostWindow); 40 BOOL (* pfnVBoxRemoveHook)(); 41 42 LPRGNDATA lpRgnData; 42 43 } VBOXSEAMLESSCONTEXT; 43 44 … … 132 133 if (gCtx.pfnVBoxRemoveHook) 133 134 gCtx.pfnVBoxRemoveHook(); 135 136 if (gCtx.lpRgnData) 137 { 138 free(gCtx.lpRgnData); 139 gCtx.lpRgnData = NULL; 140 } 134 141 } 135 142 … … 221 228 if (cbSize) 222 229 { 223 LPRGNDATA lpRgnData = (LPRGNDATA) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,cbSize);224 230 LPRGNDATA lpRgnData = (LPRGNDATA)malloc(cbSize); 231 memset(lpRgnData, 0, cbSize); 225 232 if (lpRgnData) 226 233 { … … 237 244 } 238 245 #endif 239 /* send to display driver */ 240 ExtEscape(param.hdc, VBOXESC_SETVISIBLEREGION, cbSize, (LPCSTR)lpRgnData, 0, NULL); 246 if ( !gCtx.lpRgnData 247 || lpRgnData->rdh.dwSize != gCtx.lpRgnData->rdh.dwSize 248 || memcmp(gCtx.lpRgnData, lpRgnData, lpRgnData->rdh.dwSize)) 249 { 250 /* send to display driver */ 251 ExtEscape(param.hdc, VBOXESC_SETVISIBLEREGION, cbSize, (LPCSTR)lpRgnData, 0, NULL); 252 253 if (gCtx.lpRgnData) 254 free(gCtx.lpRgnData); 255 gCtx.lpRgnData = lpRgnData; 256 } 257 else 258 dprintf(("Visible rectangles haven't changed; ignore\n")); 241 259 } 242 HeapFree(GetProcessHeap(), 0, lpRgnData); 260 if (lpRgnData != gCtx.lpRgnData) 261 free(lpRgnData); 243 262 } 244 263 }
Note:
See TracChangeset
for help on using the changeset viewer.