bool WindowsScreenGrabber::getScreenSizeChanged() { m_screen.update(); Rect screenRect = m_screen.getDesktopRect(); int width = screenRect.getWidth(); int height = screenRect.getHeight(); if (width != m_fullScreenRect.getWidth() || height != m_fullScreenRect.getHeight()) { return true; } int left = screenRect.left; int top = screenRect.top; if (left != m_fullScreenRect.left|| top != m_fullScreenRect.top) { // In this case apply new properties automatically // and don't inform anybody. applyNewProperties(); } return false; }
bool WindowsScreenGrabber::getScreenSizeChanged() { BMI bmi; if (!getBMI(&bmi)) { return false; } int width = bmi.bmiHeader.biWidth; int height = bmi.bmiHeader.biHeight; if (width != m_fullScreenRect.getWidth() || height != m_fullScreenRect.getHeight()) { return true; } int left = GetSystemMetrics(SM_XVIRTUALSCREEN); int top = GetSystemMetrics(SM_YVIRTUALSCREEN); if (left != m_fullScreenRect.left|| top != m_fullScreenRect.top) { applyNewProperties(); } return false; }
void WindowsScreenGrabber::execute() { applyNewProperties(); m_hasStartedSignal.notify(); m_threadStopper.waitForEvent(); }