27 qCDebug(lcQpaScreenBuffer) << Q_FUNC_INFO <<
"Normal";
32 "Failed to query buffer size");
37 "Failed to query buffer stride");
41 uchar *dataPtr =
nullptr;
43 screen_get_buffer_property_pv(buffer, SCREEN_PROPERTY_POINTER, (
void **)&dataPtr),
44 "Failed to query buffer pointer");
46 if (Q_UNLIKELY(!dataPtr))
47 qFatal(
"QQNX: buffer pointer is NULL, errno=%d", errno);
52 screen_get_buffer_property_iv(buffer, SCREEN_PROPERTY_FORMAT, &screenFormat),
53 "Failed to query buffer format");
56 QImage::Format imageFormat = QImage::Format_Invalid;
57 switch (screenFormat) {
58 case SCREEN_FORMAT_RGBX4444:
59 imageFormat = QImage::Format_RGB444;
61 case SCREEN_FORMAT_RGBA4444:
62 imageFormat = QImage::Format_ARGB4444_Premultiplied;
64 case SCREEN_FORMAT_RGBX5551:
65 imageFormat = QImage::Format_RGB555;
67 case SCREEN_FORMAT_RGB565:
68 imageFormat = QImage::Format_RGB16;
70 case SCREEN_FORMAT_RGBX8888:
71 imageFormat = QImage::Format_RGB32;
73 case SCREEN_FORMAT_RGBA8888:
74 imageFormat = QImage::Format_ARGB32_Premultiplied;
77 qFatal(lcQpaScreenBuffer,
"QQNX: unsupported buffer format, format=%d", screenFormat);
81 m_image = QImage(dataPtr, size[0], size[1], stride, imageFormat);
98 qCDebug(lcQpaScreenBuffer) << Q_FUNC_INFO;
101 if (Q_UNLIKELY(!m_buffer))
102 qFatal(lcQpaScreenBuffer,
"QQNX: can't invalidate cache for null buffer");
106 int result = msync(m_image.bits(), m_image.height() * m_image.bytesPerLine(), MS_INVALIDATE | MS_CACHE_ONLY);
107 if (Q_UNLIKELY(result != 0))
108 qFatal(lcQpaScreenBuffer,
"QQNX: failed to invalidate cache, errno=%d", errno);