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;
}
Ejemplo n.º 2
0
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();
}