From df382ea245959ed4d27012358e24c4c95767270f Mon Sep 17 00:00:00 2001 From: alwin Date: Mon, 11 Apr 2005 21:53:59 +0000 Subject: next stage of bug hunting seems that errors/problems in pure display are fixed. removed all qpaint stuff may invoked in xine-thread (evil,evil!) - I think it isn't needed there. so I deactivated the mutex this moment --- (limited to 'noncore/multimedia') 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 + Copyright (c) 2002 Max Reiss Copyright (c) 2002 L. Potter Copyright (c) 2002 Holger Freyther =. .=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_,=:_.      -`: 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_,=:_. -`: 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 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;ywidth()||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; + if (m_buff) paintEvent2(0); } // Release Mutex - - if (m_buff) paintEvent2(0); } 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 + Copyright (c) 2002 Max Reiss Copyright (c) 2002 L. Potter Copyright (c) 2002 Holger Freyther =. .=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_,=:_.      -`: 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_,=:_. -`: 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. -- cgit v0.9.0.2