bool RemoteViewerCore::updatePixelFormat() { PixelFormat pxFormat; m_logWriter.debug(_T("Check pixel format change...")); { AutoLock al(&m_pixelFormatLock); if (!m_isNewPixelFormat) return false; m_isNewPixelFormat = false; pxFormat = m_viewerPixelFormat; } int bitsPerPixel = m_viewerPixelFormat.bitsPerPixel; if (bitsPerPixel != 8 && bitsPerPixel != 16 && bitsPerPixel != 32) { throw Exception(_T("Only 8, 16 or 32 bits per pixel supported!")); } { AutoLock al(&m_fbLock); // FIXME: here isn't accept true-colour flag. // PixelFormats may be equal, if isn't. if (pxFormat.isEqualTo(&m_frameBuffer.getPixelFormat())) { return false; } if (m_frameBuffer.getBuffer() != 0) setFbProperties(&m_frameBuffer.getDimension(), &pxFormat); } RfbSetPixelFormatClientMessage pixelFormatMessage(&pxFormat); pixelFormatMessage.send(m_output); return true; }
bool WindowsScreenGrabber::getPixelFormatChanged() { m_screen.update(); PixelFormat currentPF = m_screen.getPixelFormat(); PixelFormat frameBufferPF = m_workFrameBuffer.getPixelFormat(); return !frameBufferPF.isEqualTo(¤tPF); }
bool WindowsScreenGrabber::getPixelFormatChanged() { BMI bmi; if (!getBMI(&bmi)) { return false; } PixelFormat currentPF; PixelFormat frameBufferPF = m_workFrameBuffer.getPixelFormat(); fillPixelFormat(¤tPF, &bmi); if (!frameBufferPF.isEqualTo(¤tPF)) { return true; } return false; }