author | alwin <alwin> | 2005-04-13 12:55:44 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-04-13 12:55:44 (UTC) |
commit | cb10570b4118161a066b741c2674d8d522670623 (patch) (side-by-side diff) | |
tree | 149a5c77bc252443efe658e61717e47cee786f59 | |
parent | be565a8eb0c602e5173b71cf71ba510a7a7f4520 (diff) | |
download | opie-cb10570b4118161a066b741c2674d8d522670623.zip opie-cb10570b4118161a066b741c2674d8d522670623.tar.gz opie-cb10570b4118161a066b741c2674d8d522670623.tar.bz2 |
sometimes the display must painted black - we'll just use memset
'cause working on fb itself so we'll not interfer with qpaint
from main thread
-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.cpp | 24 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/xinevideowidget.h | 3 |
2 files changed, 25 insertions, 2 deletions
diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.cpp b/noncore/multimedia/opieplayer2/xinevideowidget.cpp index b27b8e1..7c98ce5 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.cpp +++ b/noncore/multimedia/opieplayer2/xinevideowidget.cpp @@ -117,5 +117,5 @@ static inline void memcpy_step_rev ( void *_dst, void *_src, size_t len, size_t XineVideoWidget::XineVideoWidget ( QWidget* parent, const char* name ) - : QWidget ( parent, name, WRepaintNoErase | WResizeNoErase ) + : QWidget ( parent, name, WRepaintNoErase | WResizeNoErase ),old_framerect(0,0,0,0),old_size(0,0) { setBackgroundMode ( NoBackground ); @@ -132,5 +132,5 @@ XineVideoWidget::XineVideoWidget ( QWidget* parent, const char* name ) XineVideoWidget::~XineVideoWidget ( ) { - ThreadUtil::AutoLock a(m_bufmutex); +#if 0 if (m_buff) { delete[]m_buff; @@ -138,4 +138,5 @@ XineVideoWidget::~XineVideoWidget ( ) m_buff = 0; } +#endif if (m_logo) { delete m_logo; @@ -145,4 +146,5 @@ XineVideoWidget::~XineVideoWidget ( ) void XineVideoWidget::clear ( ) { +#if 0 ThreadUtil::AutoLock a(m_bufmutex); if (m_buff) { @@ -151,4 +153,5 @@ void XineVideoWidget::clear ( ) m_buff = 0; } +#endif repaint ( false ); } @@ -211,4 +214,16 @@ void XineVideoWidget::paintEvent2 ( QPaintEvent * ) uchar * dst = fb+framerect.y()*m_bytes_per_line_fb+framerect.x()*m_bytes_per_pixel; + /* clean up the fb screen when shrinking the image only! */ + if (old_framerect.isValid() && old_size.width()==width()&&old_size.height()==height() && + (old_framerect.width()>framerect.width() || old_framerect.height()>framerect.height())) { + uchar*_dst = fb+old_framerect.y()*m_bytes_per_line_fb+old_framerect.x()*m_bytes_per_pixel; + for (int z=0;z<old_framerect.height();++z) { + memset(_dst,0,m_bytes_per_line_fb); + _dst+=m_bytes_per_line_fb; + } + } + old_framerect=framerect; + old_size = size(); + if (framerect.height()!=m_framesize.height()) { odebug << "Hoehm: " << framerect.height() << " <-> " << m_framesize.height() << oendl; @@ -266,4 +281,5 @@ void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl ) bool rot90 = (( -m_rotation ) & 1 ); int l = h*bpl; +#if 0 if (l!=m_lastsize) { if (m_buff) { @@ -278,9 +294,13 @@ void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl ) } } +#endif m_lastsize = l; m_framesize = QSize(w,h); +#if 0 if (m_buff && m_lastsize) { memcpy(m_buff,img,m_lastsize); } +#endif + m_buff = img; m_bytes_per_line_frame = bpl; if (m_buff) paintEvent2(0); diff --git a/noncore/multimedia/opieplayer2/xinevideowidget.h b/noncore/multimedia/opieplayer2/xinevideowidget.h index a0ec5bc..f240b1c 100644 --- a/noncore/multimedia/opieplayer2/xinevideowidget.h +++ b/noncore/multimedia/opieplayer2/xinevideowidget.h @@ -35,4 +35,5 @@ #include <qwidget.h> +#include <qrect.h> #include "lib.h" @@ -58,4 +59,6 @@ protected: virtual void paintEvent(QPaintEvent*); virtual void resizeEvent ( QResizeEvent *r ); + QRect old_framerect; + QSize old_size; void mouseReleaseEvent ( QMouseEvent *e ); |