XCB/X11: reorient video
authorMatthias Keiser <matthias@tristan-inc.com>
Thu, 6 Mar 2014 00:12:32 +0000 (01:12 +0100)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 13 Mar 2014 20:22:19 +0000 (22:22 +0200)
(Note that the pointer position is not reoriented, this comes with a
later patch in the series for all XCB video outputs.)

Modified-and-...
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
modules/video_output/xcb/x11.c

index b2e782e..7bdb944 100644 (file)
@@ -139,7 +139,7 @@ static int Open (vlc_object_t *obj)
         if (fmt->depth <= sys->depth)
             continue; /* no better than earlier format */
 
-        fmt_pic = vd->fmt;
+        video_format_ApplyRotation(&vd->fmt, &fmt_pic);
 
         /* Check that the pixmap format is supported by VLC. */
         switch (fmt->depth)
@@ -533,13 +533,16 @@ static int Control (vout_display_t *vd, int query, va_list ap)
         vout_display_place_t place;
         vout_display_PlacePicture (&place, &vd->source, vd->cfg, false);
 
-        vd->fmt.i_width  = vd->source.i_width  * place.width  / vd->source.i_visible_width;
-        vd->fmt.i_height = vd->source.i_height * place.height / vd->source.i_visible_height;
+        video_format_t source_rot;
+        video_format_ApplyRotation(&vd->source, &source_rot);
+
+        vd->fmt.i_width  = source_rot.i_width  * place.width  / source_rot.i_visible_width;
+        vd->fmt.i_height = source_rot.i_height * place.height / source_rot.i_visible_height;
 
         vd->fmt.i_visible_width  = place.width;
         vd->fmt.i_visible_height = place.height;
-        vd->fmt.i_x_offset = vd->source.i_x_offset * place.width  / vd->source.i_visible_width;
-        vd->fmt.i_y_offset = vd->source.i_y_offset * place.height / vd->source.i_visible_height;
+        vd->fmt.i_x_offset = source_rot.i_x_offset * place.width  / source_rot.i_visible_width;
+        vd->fmt.i_y_offset = source_rot.i_y_offset * place.height / source_rot.i_visible_height;
         return VLC_SUCCESS;
     }