-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.cpp | 101 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.h | 42 |
2 files changed, 57 insertions, 86 deletions
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp index 78ebe19..b27b8e1 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp +++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp @@ -1,30 +1,30 @@ /* - This file is part of the Opie Project + This file is part of the Opie Project - Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> + Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> Copyright (c) 2002 L. Potter <ljp@llornkcor.com> Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> =. .=l. - .>+-= - _;:, .> :=|. This program is free software; you can -.> <`_, > . <= redistribute it and/or modify it under -:`=1 )Y*s>-.-- : the terms of the GNU General Public -.="- .-=="i, .._ License as published by the Free Software - - . .-<_> .<> Foundation; either version 2 of the License, - ._= =} : or (at your option) any later version. - .%`+i> _;_. - .i_,=:_. -<s. This program is distributed in the hope that - + . -:. = it will be useful, but WITHOUT ANY WARRANTY; - : .. .:, . . . without even the implied warranty of - =_ + =;=|` MERCHANTABILITY or FITNESS FOR A - _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.= = ; Library General Public License for more -++= -. .` .: details. - : = ...= . :.=- - -. .:....=;==+<; You should have received a copy of the GNU - -_. . . )=. = Library General Public License along with - -- :-=` this library; see the file COPYING.LIB. + .>+-= + _;:, .> :=|. This program is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This program is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -170,10 +170,6 @@ QSize XineVideoWidget::videoSize() const void XineVideoWidget::paintEvent ( QPaintEvent * ) { - if (m_bufmutex.isLocked()) { - return; - } - ThreadUtil::AutoLock a(m_bufmutex); QPainter p ( this ); p. fillRect ( rect (), black ); if (m_logo) @@ -182,23 +178,13 @@ void XineVideoWidget::paintEvent ( QPaintEvent * ) void XineVideoWidget::paintEvent2 ( QPaintEvent * ) { - ThreadUtil::AutoLock a(m_bufmutex); - QPainter p (this); if ( m_buff == 0 ) { - p. fillRect ( rect ( ), black ); - if ( m_logo ) - p. drawImage ( 0, 0, *m_logo ); + return; } else if (m_lastsize){ - // Qt needs to be notified which areas were really updated .. strange - QArray <QRect> qt_bug_workaround_clip_rects; - { QDirectPainter dp ( this ); - int rot = dp. transformOrientation ( ) + m_rotation; // device rotation + custom rotation - bool rot90 = (( -m_rotation ) & 1 ); - int _vw,_vh; switch (rot90) { case true: @@ -214,29 +200,6 @@ void XineVideoWidget::paintEvent2 ( QPaintEvent * ) int middle_w = _vw/2; int middle_h = _vh/2; m_thisframe.setRect(width()/2-middle_w,height()/2-middle_h,_vw,_vh); - - { - // is this stuff realy needed? it seems working without, too. - QRect topFill,rightFill,leftFill,downFill; - topFill. setRect(0,0 ,width(),m_thisframe.top()); - downFill.setCoords(0,m_thisframe.bottom(),width(),height()); - rightFill.setCoords(m_thisframe.right(),0,width(),height()); - leftFill.setCoords(0,0,m_thisframe.left(),height()); - - if (topFill.isValid()) { - p.fillRect(topFill,black); - } - if (downFill.isValid()) { - p.fillRect(downFill,black); - } - if (rightFill.isValid()) { - p.fillRect(rightFill,black); - } - if (leftFill.isValid()) { - p.fillRect(leftFill,black); - } - - } uchar *fb = dp. frameBuffer ( ); uchar *frame = m_buff; @@ -247,7 +210,10 @@ void XineVideoWidget::paintEvent2 ( QPaintEvent * ) uchar * src = frame; uchar * dst = fb+framerect.y()*m_bytes_per_line_fb+framerect.x()*m_bytes_per_pixel; - for (int y=framerect.top();y<=framerect.bottom();++y) { + if (framerect.height()!=m_framesize.height()) { + odebug << "Hoehm: " << framerect.height() << " <-> " << m_framesize.height() << oendl; + } + for (int y = 0;y<framerect.height();++y) { switch (rot) { case 0: memcpy(dst,src,m_bytes_per_line_frame); @@ -290,11 +256,13 @@ void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl ) { // mutex area for AutoLock { - if (m_bufmutex.isLocked()||w>width()||h>height()) { - // no time to wait - drop frame +#if 0 + ThreadUtil::AutoLock a(m_bufmutex); +#endif + if (!isVisible()||w>width()||h>height()/*||m_bufmutex.isLocked()*/) { + //drop frame return; } - ThreadUtil::AutoLock a(m_bufmutex); bool rot90 = (( -m_rotation ) & 1 ); int l = h*bpl; if (l!=m_lastsize) { @@ -315,14 +283,17 @@ void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl ) memcpy(m_buff,img,m_lastsize); } m_bytes_per_line_frame = bpl; - } // Release Mutex - if (m_buff) paintEvent2(0); + } // Release Mutex } void XineVideoWidget::resizeEvent ( QResizeEvent * ) { +#if 0 + ThreadUtil::AutoLock a(m_bufmutex); +#endif emit videoResized( videoSize() ); + odebug << "All resize done" << oendl; } diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.h b/noncore/multimedia/opieplayer2/xinevideowidget.h index eccff1a..a0ec5bc 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.h +++ b/noncore/multimedia/opieplayer2/xinevideowidget.h @@ -1,31 +1,31 @@ /* - This file is part of the Opie Project + This file is part of the Opie Project - Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> + Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> Copyright (c) 2002 L. Potter <ljp@llornkcor.com> Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> =. .=l. - .>+-= - _;:, .> :=|. This program is free software; you can -.> <`_, > . <= redistribute it and/or modify it under -:`=1 )Y*s>-.-- : the terms of the GNU General Public -.="- .-=="i, .._ License as published by the Free Software - - . .-<_> .<> Foundation; either version 2 of the License, - ._= =} : or (at your option) any later version. - .%`+i> _;_. - .i_,=:_. -<s. This program is distributed in the hope that - + . -:. = it will be useful, but WITHOUT ANY WARRANTY; - : .. .:, . . . without even the implied warranty of - =_ + =;=|` MERCHANTABILITY or FITNESS FOR A - _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU -..}^=.= = ; Library General Public License for more -++= -. .` .: details. - : = ...= . :.=- - -. .:....=;==+<; You should have received a copy of the GNU - -_. . . )=. = Library General Public License along with - -- :-=` this library; see the file COPYING.LIB. + .>+-= + _;:, .> :=|. This program is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This program is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |