#define WL_TBM_TRACE(fmt, ...)
#endif
+#define IS_RGB(f) ((f) == TBM_FORMAT_XRGB8888 || (f) == TBM_FORMAT_ARGB8888)
+
struct wayland_tbm_buffer *
_wayland_tbm_client_find_tbm_buffer_wl_buffer(struct wayland_tbm_client *tbm_client,
struct wl_buffer *wl_buffer);
_wayland_tbm_client_is_valid_attach_bufs(struct wayland_tbm_surface_queue *queue_info,
struct wayland_tbm_buffer *buffer)
{
- if (queue_info->width != buffer->width ||
- queue_info->height != buffer->height ||
- queue_info->format != buffer->format)
+ if ((queue_info->width != buffer->width) || (queue_info->height != buffer->height))
return 0;
+ if (queue_info->format != buffer->format) {
+ if (!IS_RGB(queue_info->format) || !IS_RGB(buffer->format))
+ return 0;
+ }
+
return 1;
}
}
wl_list_for_each(buffer, &queue_info->attach_bufs, link) {
- if ((queue_info->width != buffer->width) ||
- (queue_info->height != buffer->height) ||
- (queue_info->format != buffer->format)) {
+ if (!_wayland_tbm_client_is_valid_attach_bufs(queue_info, buffer)) {
pthread_mutex_unlock(&queue_info->lock);
return 0;
}