void wf_info_find_invalid_region(wfInfo* wfi) { #ifdef WITH_WIN8 wf_dxgi_getInvalidRegion(&wfi->invalid); #else int i; GETCHANGESBUF* buf; buf = (GETCHANGESBUF*) wfi->changeBuffer; for (i = wfi->lastUpdate; i != wfi->nextUpdate; i = (i + 1) % MAXCHANGES_BUF) { UnionRect(&wfi->invalid, &wfi->invalid, &buf->buffer->pointrect[i].rect); } #endif if (wfi->invalid.left < 0) wfi->invalid.left = 0; if (wfi->invalid.top < 0) wfi->invalid.top = 0; if (wfi->invalid.right >= wfi->width) wfi->invalid.right = wfi->width - 1; if (wfi->invalid.bottom >= wfi->height) wfi->invalid.bottom = wfi->height - 1; }
void wf_info_find_invalid_region(wfInfo* wfi) { #ifdef WITH_DXGI_1_2 wf_dxgi_getInvalidRegion(&wfi->invalid); #else int i; GETCHANGESBUF* buf; buf = (GETCHANGESBUF*) wfi->changeBuffer; for (i = wfi->lastUpdate; i != wfi->nextUpdate; i = (i + 1) % MAXCHANGES_BUF) { LPRECT lpR = &buf->buffer->pointrect[i].rect; //need to make sure we only get updates from the selected screen if ( (lpR->left >= wfi->servscreen_xoffset) && (lpR->right <= (wfi->servscreen_xoffset + wfi->servscreen_width) ) && (lpR->top >= wfi->servscreen_yoffset) && (lpR->bottom <= (wfi->servscreen_yoffset + wfi->servscreen_height) ) ) { UnionRect(&wfi->invalid, &wfi->invalid, lpR); } else { continue; } } #endif if (wfi->invalid.left < 0) wfi->invalid.left = 0; if (wfi->invalid.top < 0) wfi->invalid.top = 0; if (wfi->invalid.right >= wfi->servscreen_width) wfi->invalid.right = wfi->servscreen_width - 1; if (wfi->invalid.bottom >= wfi->servscreen_height) wfi->invalid.bottom = wfi->servscreen_height - 1; //WLog_DBG(TAG, "invalid region: (%d, %d), (%d, %d)", wfi->invalid.left, wfi->invalid.top, wfi->invalid.right, wfi->invalid.bottom); }