xwayland: Look up 32 depth rgba render format as well

dev
Kristian Høgsberg 13 years ago
parent e6d8d2f62a
commit e89cef37eb
  1. 15
      src/xwayland/window-manager.c
  2. 2
      src/xwayland/xwayland.h

@ -528,7 +528,7 @@ weston_wm_handle_map_request(struct weston_wm *wm, xcb_generic_event_t *event)
cairo_xcb_surface_create_with_xrender_format(wm->conn, cairo_xcb_surface_create_with_xrender_format(wm->conn,
wm->screen, wm->screen,
window->frame_id, window->frame_id,
&wm->render_format, &wm->format_rgb,
width, height); width, height);
hash_table_insert(wm->window_hash, window->frame_id, window); hash_table_insert(wm->window_hash, window->frame_id, window);
@ -1065,10 +1065,19 @@ wxs_wm_get_resources(struct weston_wm *wm)
return; return;
formats = xcb_render_query_pict_formats_formats(formats_reply); formats = xcb_render_query_pict_formats_formats(formats_reply);
for (i = 0; i < formats_reply->num_formats; i++) for (i = 0; i < formats_reply->num_formats; i++) {
if (formats[i].direct.red_mask != 0xff &&
formats[i].direct.red_shift != 16)
continue;
if (formats[i].type == XCB_RENDER_PICT_TYPE_DIRECT && if (formats[i].type == XCB_RENDER_PICT_TYPE_DIRECT &&
formats[i].depth == 24) formats[i].depth == 24)
wm->render_format = formats[i]; wm->format_rgb = formats[i];
if (formats[i].type == XCB_RENDER_PICT_TYPE_DIRECT &&
formats[i].depth == 32 &&
formats[i].direct.alpha_mask == 0xff &&
formats[i].direct.alpha_shift == 24)
wm->format_rgba = formats[i];
}
free(formats_reply); free(formats_reply);
} }

@ -58,7 +58,7 @@ struct weston_wm {
xcb_window_t wm_window; xcb_window_t wm_window;
struct weston_wm_window *focus_window; struct weston_wm_window *focus_window;
struct theme *theme; struct theme *theme;
xcb_render_pictforminfo_t render_format; xcb_render_pictforminfo_t format_rgb, format_rgba;
struct wl_listener activate_listener; struct wl_listener activate_listener;
xcb_window_t selection_window; xcb_window_t selection_window;

Loading…
Cancel
Save