summaryrefslogtreecommitdiff
authoralwin <alwin>2005-04-13 12:55:44 (UTC)
committer alwin <alwin>2005-04-13 12:55:44 (UTC)
commitcb10570b4118161a066b741c2674d8d522670623 (patch) (unidiff)
tree149a5c77bc252443efe658e61717e47cee786f59
parentbe565a8eb0c602e5173b71cf71ba510a7a7f4520 (diff)
downloadopie-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
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/xinevideowidget.cpp24
-rw-r--r--noncore/multimedia/opieplayer2/xinevideowidget.h3
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
@@ -116,7 +116,7 @@ static inline void memcpy_step_rev ( void *_dst, void *_src, size_t len, size_t
116 116
117 117
118XineVideoWidget::XineVideoWidget ( QWidget* parent, const char* name ) 118XineVideoWidget::XineVideoWidget ( QWidget* parent, const char* name )
119 : QWidget ( parent, name, WRepaintNoErase | WResizeNoErase ) 119 : QWidget ( parent, name, WRepaintNoErase | WResizeNoErase ),old_framerect(0,0,0,0),old_size(0,0)
120{ 120{
121 setBackgroundMode ( NoBackground ); 121 setBackgroundMode ( NoBackground );
122 122
@@ -131,12 +131,13 @@ XineVideoWidget::XineVideoWidget ( QWidget* parent, const char* name )
131 131
132XineVideoWidget::~XineVideoWidget ( ) 132XineVideoWidget::~XineVideoWidget ( )
133{ 133{
134 ThreadUtil::AutoLock a(m_bufmutex); 134#if 0
135 if (m_buff) { 135 if (m_buff) {
136 delete[]m_buff; 136 delete[]m_buff;
137 m_lastsize=0; 137 m_lastsize=0;
138 m_buff = 0; 138 m_buff = 0;
139 } 139 }
140#endif
140 if (m_logo) { 141 if (m_logo) {
141 delete m_logo; 142 delete m_logo;
142 } 143 }
@@ -144,12 +145,14 @@ XineVideoWidget::~XineVideoWidget ( )
144 145
145void XineVideoWidget::clear ( ) 146void XineVideoWidget::clear ( )
146{ 147{
148#if 0
147 ThreadUtil::AutoLock a(m_bufmutex); 149 ThreadUtil::AutoLock a(m_bufmutex);
148 if (m_buff) { 150 if (m_buff) {
149 delete[]m_buff; 151 delete[]m_buff;
150 m_lastsize=0; 152 m_lastsize=0;
151 m_buff = 0; 153 m_buff = 0;
152 } 154 }
155#endif
153 repaint ( false ); 156 repaint ( false );
154} 157}
155 158
@@ -210,6 +213,18 @@ void XineVideoWidget::paintEvent2 ( QPaintEvent * )
210 uchar * src = frame; 213 uchar * src = frame;
211 uchar * dst = fb+framerect.y()*m_bytes_per_line_fb+framerect.x()*m_bytes_per_pixel; 214 uchar * dst = fb+framerect.y()*m_bytes_per_line_fb+framerect.x()*m_bytes_per_pixel;
212 215
216 /* clean up the fb screen when shrinking the image only! */
217 if (old_framerect.isValid() && old_size.width()==width()&&old_size.height()==height() &&
218 (old_framerect.width()>framerect.width() || old_framerect.height()>framerect.height())) {
219 uchar*_dst = fb+old_framerect.y()*m_bytes_per_line_fb+old_framerect.x()*m_bytes_per_pixel;
220 for (int z=0;z<old_framerect.height();++z) {
221 memset(_dst,0,m_bytes_per_line_fb);
222 _dst+=m_bytes_per_line_fb;
223 }
224 }
225 old_framerect=framerect;
226 old_size = size();
227
213 if (framerect.height()!=m_framesize.height()) { 228 if (framerect.height()!=m_framesize.height()) {
214 odebug << "Hoehm: " << framerect.height() << " <-> " << m_framesize.height() << oendl; 229 odebug << "Hoehm: " << framerect.height() << " <-> " << m_framesize.height() << oendl;
215 } 230 }
@@ -265,6 +280,7 @@ void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl )
265 } 280 }
266 bool rot90 = (( -m_rotation ) & 1 ); 281 bool rot90 = (( -m_rotation ) & 1 );
267 int l = h*bpl; 282 int l = h*bpl;
283#if 0
268 if (l!=m_lastsize) { 284 if (l!=m_lastsize) {
269 if (m_buff) { 285 if (m_buff) {
270 delete[]m_buff; 286 delete[]m_buff;
@@ -277,11 +293,15 @@ void XineVideoWidget::setVideoFrame ( uchar* img, int w, int h, int bpl )
277 m_buff = 0; 293 m_buff = 0;
278 } 294 }
279 } 295 }
296#endif
280 m_lastsize = l; 297 m_lastsize = l;
281 m_framesize = QSize(w,h); 298 m_framesize = QSize(w,h);
299#if 0
282 if (m_buff && m_lastsize) { 300 if (m_buff && m_lastsize) {
283 memcpy(m_buff,img,m_lastsize); 301 memcpy(m_buff,img,m_lastsize);
284 } 302 }
303#endif
304 m_buff = img;
285 m_bytes_per_line_frame = bpl; 305 m_bytes_per_line_frame = bpl;
286 if (m_buff) paintEvent2(0); 306 if (m_buff) paintEvent2(0);
287 } // Release Mutex 307 } // Release Mutex
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
@@ -34,6 +34,7 @@
34 34
35 35
36#include <qwidget.h> 36#include <qwidget.h>
37#include <qrect.h>
37 38
38#include "lib.h" 39#include "lib.h"
39 40
@@ -57,6 +58,8 @@ protected:
57 void paintEvent2( QPaintEvent *p ); 58 void paintEvent2( QPaintEvent *p );
58 virtual void paintEvent(QPaintEvent*); 59 virtual void paintEvent(QPaintEvent*);
59 virtual void resizeEvent ( QResizeEvent *r ); 60 virtual void resizeEvent ( QResizeEvent *r );
61 QRect old_framerect;
62 QSize old_size;
60 63
61 void mouseReleaseEvent ( QMouseEvent *e ); 64 void mouseReleaseEvent ( QMouseEvent *e );
62 65