Diffstat (limited to 'noncore/multimedia/opieplayer2/xinevideowidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.cpp | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp index 7f59085..78ebe19 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp +++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp | |||
@@ -1,7 +1,6 @@ | |||
1 | |||
2 | /* | 1 | /* |
3 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
4 | 3 | ||
5 | Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> | 4 | Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> |
6 | Copyright (c) 2002 L. Potter <ljp@llornkcor.com> | 5 | Copyright (c) 2002 L. Potter <ljp@llornkcor.com> |
7 | Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> | 6 | Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> |
@@ -212,12 +211,15 @@ void XineVideoWidget::paintEvent2 ( QPaintEvent * ) | |||
212 | break; | 211 | break; |
213 | break; | 212 | break; |
214 | } | 213 | } |
215 | int middle_w = _vw/2; | 214 | int middle_w = _vw/2; |
216 | int middle_h = _vh/2; | 215 | int middle_h = _vh/2; |
217 | m_thisframe.setRect(width()/2-middle_w,height()/2-middle_h,_vw,_vh); | 216 | m_thisframe.setRect(width()/2-middle_w,height()/2-middle_h,_vw,_vh); |
217 | |||
218 | { | ||
219 | // is this stuff realy needed? it seems working without, too. | ||
218 | QRect topFill,rightFill,leftFill,downFill; | 220 | QRect topFill,rightFill,leftFill,downFill; |
219 | topFill. setRect(0,0 ,width(),m_thisframe.top()); | 221 | topFill. setRect(0,0 ,width(),m_thisframe.top()); |
220 | downFill.setCoords(0,m_thisframe.bottom(),width(),height()); | 222 | downFill.setCoords(0,m_thisframe.bottom(),width(),height()); |
221 | rightFill.setCoords(m_thisframe.right(),0,width(),height()); | 223 | rightFill.setCoords(m_thisframe.right(),0,width(),height()); |
222 | leftFill.setCoords(0,0,m_thisframe.left(),height()); | 224 | leftFill.setCoords(0,0,m_thisframe.left(),height()); |
223 | 225 | ||
@@ -230,12 +232,14 @@ void XineVideoWidget::paintEvent2 ( QPaintEvent * ) | |||
230 | if (rightFill.isValid()) { | 232 | if (rightFill.isValid()) { |
231 | p.fillRect(rightFill,black); | 233 | p.fillRect(rightFill,black); |
232 | } | 234 | } |
233 | if (leftFill.isValid()) { | 235 | if (leftFill.isValid()) { |
234 | p.fillRect(leftFill,black); | 236 | p.fillRect(leftFill,black); |
235 | } | 237 | } |
238 | |||
239 | } | ||
236 | uchar *fb = dp. frameBuffer ( ); | 240 | uchar *fb = dp. frameBuffer ( ); |
237 | uchar *frame = m_buff; | 241 | uchar *frame = m_buff; |
238 | 242 | ||
239 | // where is the video frame in fb coordinates | 243 | // where is the video frame in fb coordinates |
240 | QRect framerect = qt_screen-> mapToDevice ( QRect ( mapToGlobal ( m_thisframe. topLeft ( )), m_thisframe. size ( )), QSize ( qt_screen-> width ( ), | 244 | QRect framerect = qt_screen-> mapToDevice ( QRect ( mapToGlobal ( m_thisframe. topLeft ( )), m_thisframe. size ( )), QSize ( qt_screen-> width ( ), |
241 | qt_screen-> height ( ))); | 245 | qt_screen-> height ( ))); |
@@ -264,19 +268,12 @@ void XineVideoWidget::paintEvent2 ( QPaintEvent * ) | |||
264 | default: | 268 | default: |
265 | break; | 269 | break; |
266 | } | 270 | } |
267 | dst += m_bytes_per_line_fb; | 271 | dst += m_bytes_per_line_fb; |
268 | } | 272 | } |
269 | } | 273 | } |
270 | |||
271 | |||
272 | { | ||
273 | // QVFB hack by Martin Jones | ||
274 | // We need to "touch" all affected clip rects with a normal QPainter in addition to the QDirectPainter | ||
275 | p.fillRect(QRect(mapFromGlobal (m_thisframe. topLeft ( )), m_thisframe.size ()),QBrush(NoBrush)); | ||
276 | } | ||
277 | } | 274 | } |
278 | } | 275 | } |
279 | 276 | ||
280 | QImage *XineVideoWidget::logo ( ) const | 277 | QImage *XineVideoWidget::logo ( ) const |
281 | { | 278 | { |
282 | return m_logo; | 279 | return m_logo; |
@@ -308,25 +305,22 @@ void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl ) | |||
308 | m_buff = new uchar[l]; | 305 | m_buff = new uchar[l]; |
309 | odebug << "Point to: " << (unsigned long)m_buff << oendl; | 306 | odebug << "Point to: " << (unsigned long)m_buff << oendl; |
310 | m_lastsize=l; | 307 | m_lastsize=l; |
311 | } else { | 308 | } else { |
312 | m_buff = 0; | 309 | m_buff = 0; |
313 | } | 310 | } |
314 | } else if (l==0){ | ||
315 | delete[] m_buff; | ||
316 | m_buff = 0; | ||
317 | } | 311 | } |
318 | m_lastsize = l; | 312 | m_lastsize = l; |
319 | m_framesize = QSize(w,h); | 313 | m_framesize = QSize(w,h); |
320 | if (m_buff && m_lastsize) { | 314 | if (m_buff && m_lastsize) { |
321 | memcpy(m_buff,img,m_lastsize); | 315 | memcpy(m_buff,img,m_lastsize); |
322 | } | 316 | } |
323 | m_bytes_per_line_frame = bpl; | 317 | m_bytes_per_line_frame = bpl; |
324 | } // Release Mutex | 318 | } // Release Mutex |
325 | 319 | ||
326 | paintEvent2(0); | 320 | if (m_buff) paintEvent2(0); |
327 | } | 321 | } |
328 | 322 | ||
329 | void XineVideoWidget::resizeEvent ( QResizeEvent * ) | 323 | void XineVideoWidget::resizeEvent ( QResizeEvent * ) |
330 | { | 324 | { |
331 | emit videoResized( videoSize() ); | 325 | emit videoResized( videoSize() ); |
332 | } | 326 | } |