summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuenter Bartsch <guenter@users.sourceforge.net>2002-11-26 02:25:26 +0000
committerGuenter Bartsch <guenter@users.sourceforge.net>2002-11-26 02:25:26 +0000
commit6d934c2b2876352340800f327e7dcb18e2b27c18 (patch)
tree9c7ae8ec27e5d2a7f757a85a6a7598b25a73f5c0
parent8967449999de602f335ab605b28a3c2520fe3152 (diff)
downloadxine-lib-6d934c2b2876352340800f327e7dcb18e2b27c18.tar.gz
xine-lib-6d934c2b2876352340800f327e7dcb18e2b27c18.tar.bz2
fix xshm video display
CVS patchset: 3373 CVS date: 2002/11/26 02:25:26
-rw-r--r--src/libreal/xine_decoder.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c
index 49b86600b..163927f0a 100644
--- a/src/libreal/xine_decoder.c
+++ b/src/libreal/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.8 2002/11/26 00:37:29 guenter Exp $
+ * $Id: xine_decoder.c,v 1.9 2002/11/26 02:25:26 guenter Exp $
*
* thin layer to use real binary-only codecs in xine
*
@@ -323,19 +323,33 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf)
#endif
result = this->rvyuv_transform (this->chunk_buffer,
- this->frame_buffer,
- transform_in,
- transform_out,
- this->context);
+ this->frame_buffer,
+ transform_in,
+ transform_out,
+ this->context);
xine_fast_memcpy (img->base[0], this->frame_buffer, this->frame_size);
xine_fast_memcpy (img->base[1], this->frame_buffer+this->frame_size,
this->frame_size/4);
- xine_fast_memcpy (img->base[2], this->frame_buffer+this->frame_size*5/4,
+ xine_fast_memcpy (img->base[2],
+ this->frame_buffer+this->frame_size*5/4,
this->frame_size/4);
- /* FIXME: call copy on slices */
-
+ if (img->copy) {
+ int height = img->height;
+ uint8_t *src[3];
+
+ src[0] = img->base[0];
+ src[1] = img->base[1];
+ src[2] = img->base[2];
+
+ while ((height -= 16) >= 0) {
+ img->copy(img, src);
+ src[0] += 16 * img->pitches[0];
+ src[1] += 8 * img->pitches[1];
+ src[2] += 8 * img->pitches[2];
+ }
+ }
img->draw(img, this->stream);
img->free(img);