summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/xinevideowidget.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp
index 791818e..0833784 100644
--- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp
+++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp
@@ -42,27 +42,28 @@
42 42
43#include <qpe/resource.h> 43#include <qpe/resource.h>
44 44
45#include "xinevideowidget.h" 45#include "xinevideowidget.h"
46 46
47 47
48// 0 deg rot: copy a line from src to dst (use libc memcpy) 48// 0 deg rot: copy a line from src to dst (use libc memcpy)
49 49
50// 180 deg rot: copy a line from src to dst reversed 50// 180 deg rot: copy a line from src to dst reversed
51 51
52static inline void memcpy_rev ( void *dst, void *src, size_t len ) 52static inline void memcpy_rev ( void *dst, void *src, size_t len )
53{ 53{
54 ((char *) src ) += len;
55
56 len >>= 1; 54 len >>= 1;
55
56 ((char *) src ) += ( len << 1 );
57
57 while ( len-- ) 58 while ( len-- )
58 *((short int *) dst )++ = *--((short int *) src ); 59 *((short int *) dst )++ = *--((short int *) src );
59} 60}
60 61
61// 90 deg rot: copy a column from src to dst 62// 90 deg rot: copy a column from src to dst
62 63
63static inline void memcpy_step ( void *dst, void *src, size_t len, size_t step ) 64static inline void memcpy_step ( void *dst, void *src, size_t len, size_t step )
64{ 65{
65 len >>= 1; 66 len >>= 1;
66 while ( len-- ) { 67 while ( len-- ) {
67 *((short int *) dst )++ = *((short int *) src ); 68 *((short int *) dst )++ = *((short int *) src );
68 ((char *) src ) += step; 69 ((char *) src ) += step;
@@ -183,25 +184,25 @@ void XineVideoWidget::paintEvent ( QPaintEvent * )
183 if (( y < framerect. top ( )) || ( y > framerect. bottom ( ))) { 184 if (( y < framerect. top ( )) || ( y > framerect. bottom ( ))) {
184 // "above" or "below" the video -> black 185 // "above" or "below" the video -> black
185 memset ( dst, 0, clipwidth ); 186 memset ( dst, 0, clipwidth );
186 } 187 }
187 else { 188 else {
188 if ( leftfill ) 189 if ( leftfill )
189 memset ( dst, 0, leftfill ); // "left" border -> black 190 memset ( dst, 0, leftfill ); // "left" border -> black
190 191
191 if ( framefill ) { // blit in the video frame 192 if ( framefill ) { // blit in the video frame
192 // see above for an explanation of the different memcpys 193 // see above for an explanation of the different memcpys
193 194
194 switch ( rot ) { 195 switch ( rot ) {
195 case 0: memcpy ( dst + leftfill, src, framefill ); break; 196 case 0: memcpy ( dst + leftfill, src, framefill & ~1 ); break;
196 case 1: memcpy_step ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break; 197 case 1: memcpy_step ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break;
197 case 2: memcpy_rev ( dst + leftfill, src, framefill ); break; 198 case 2: memcpy_rev ( dst + leftfill, src, framefill ); break;
198 case 3: memcpy_step_rev ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break; 199 case 3: memcpy_step_rev ( dst + leftfill, src, framefill, m_bytes_per_line_frame ); break;
199 default: break; 200 default: break;
200 } 201 }
201 } 202 }
202 if ( rightfill ) 203 if ( rightfill )
203 memset ( dst + leftfill + framefill, 0, rightfill ); // "right" border -> black 204 memset ( dst + leftfill + framefill, 0, rightfill ); // "right" border -> black
204 } 205 }
205 206
206 dst += m_bytes_per_line_fb; // advance one line in the framebuffer 207 dst += m_bytes_per_line_fb; // advance one line in the framebuffer
207 208