Commit 8b65aa8a authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

XCB-XV: do not clobber video chroma is port grabbing fails

parent a74e5b04
...@@ -356,9 +356,8 @@ static int Open (vlc_object_t *obj) ...@@ -356,9 +356,8 @@ static int Open (vlc_object_t *obj)
if (r == NULL) if (r == NULL)
continue; continue;
const xcb_xv_image_format_info_t *xfmt; /* Look for an image format */
const xcb_xv_image_format_info_t *xfmt = NULL;
/* */
const vlc_fourcc_t *chromas, chromas_default[] = { const vlc_fourcc_t *chromas, chromas_default[] = {
fmt.i_chroma, fmt.i_chroma,
VLC_CODEC_RGB32, VLC_CODEC_RGB32,
...@@ -373,20 +372,19 @@ static int Open (vlc_object_t *obj) ...@@ -373,20 +372,19 @@ static int Open (vlc_object_t *obj)
else else
chromas = chromas_default; chromas = chromas_default;
for (size_t i = 0; chromas[i]; i++) vlc_fourcc_t chroma;
for (size_t i = 0; chromas[i] && (xfmt == NULL); i++)
{ {
vlc_fourcc_t chroma = chromas[i]; chroma = chromas[i];
xfmt = FindFormat (vd, chroma, &fmt, a->base_id, r, &p_sys->att); xfmt = FindFormat (vd, chroma, &fmt, a->base_id, r, &p_sys->att);
if (xfmt != NULL)
{
fmt.i_chroma = chroma;
goto found_format;
}
} }
if (xfmt == NULL) /* No acceptable image formats */
{
free (r); free (r);
continue; continue;
}
found_format:
/* Grab a port */ /* Grab a port */
for (unsigned i = 0; i < a->num_ports; i++) for (unsigned i = 0; i < a->num_ports; i++)
{ {
...@@ -417,6 +415,7 @@ static int Open (vlc_object_t *obj) ...@@ -417,6 +415,7 @@ static int Open (vlc_object_t *obj)
p_sys->id = xfmt->id; p_sys->id = xfmt->id;
msg_Dbg (vd, "using image format 0x%"PRIx32, p_sys->id); msg_Dbg (vd, "using image format 0x%"PRIx32, p_sys->id);
fmt.i_chroma = chroma;
if (xfmt->type == XCB_XV_IMAGE_FORMAT_INFO_TYPE_RGB) if (xfmt->type == XCB_XV_IMAGE_FORMAT_INFO_TYPE_RGB)
{ {
fmt.i_rmask = xfmt->red_mask; fmt.i_rmask = xfmt->red_mask;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment