[vlc-devel] commit: XCB: use dummy color map so selecting a non-default visual works ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sat Feb 7 22:43:01 CET 2009
vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Sat Feb 7 23:40:11 2009 +0200| [5e67e38eca0f1639214fa29682f5c1d2aef095aa] | committer: Rémi Denis-Courmont
XCB: use dummy color map so selecting a non-default visual works
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5e67e38eca0f1639214fa29682f5c1d2aef095aa
---
modules/video_output/xcb/xcb.c | 16 +++++++++++++---
1 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/modules/video_output/xcb/xcb.c b/modules/video_output/xcb/xcb.c
index 02226c7..eae5820 100644
--- a/modules/video_output/xcb/xcb.c
+++ b/modules/video_output/xcb/xcb.c
@@ -77,8 +77,9 @@ struct vout_sys_t
xcb_screen_t *screen;
vout_window_t *embed; /* VLC window (when windowed) */
- xcb_visualid_t vid;
+ xcb_visualid_t vid; /* selected visual */
xcb_window_t parent; /* parent X window */
+ xcb_colormap_t cmap; /* colormap for selected visual */
xcb_window_t window; /* drawable X window */
xcb_gcontext_t gc; /* context to put images */
bool shm; /* whether to use MIT-SHM */
@@ -202,6 +203,11 @@ static int Open (vlc_object_t *obj)
}
vout->fmt_out.i_chroma = vout->output.i_chroma;
+ /* Create colormap (needed to select non-default visual) */
+ p_sys->cmap = xcb_generate_id (p_sys->conn);
+ xcb_create_colormap (p_sys->conn, XCB_COLORMAP_ALLOC_NONE,
+ p_sys->cmap, scr->root, p_sys->vid);
+
/* Check shared memory support */
p_sys->shm = var_CreateGetBool (vout, "x11-shm") > 0;
if (p_sys->shm)
@@ -241,6 +247,7 @@ static void Close (vlc_object_t *obj)
vout_sys_t *p_sys = vout->p_sys;
assert (p_sys->embed == NULL);
+ /* colormap is garbage-ollected by X (?) */
if (p_sys->conn)
xcb_disconnect (p_sys->conn);
free (p_sys);
@@ -429,13 +436,16 @@ static int Init (vout_thread_t *vout)
width * VOUT_ASPECT_FACTOR / height;
/* Create window */
- const uint32_t mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
- uint32_t values[2] = {
+ const uint32_t mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK
+ | XCB_CW_COLORMAP;
+ uint32_t values[] = {
/* XCB_CW_BACK_PIXEL */
screen->black_pixel,
/* XCB_CW_EVENT_MASK */
XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE |
XCB_EVENT_MASK_POINTER_MOTION,
+ /* XCB_CW_COLORMAP */
+ p_sys->cmap,
};
xcb_void_cookie_t c;
xcb_window_t window = xcb_generate_id (p_sys->conn);
More information about the vlc-devel
mailing list