author | alwin <alwin> | 2005-04-13 12:55:44 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-04-13 12:55:44 (UTC) |
commit | cb10570b4118161a066b741c2674d8d522670623 (patch) (unidiff) | |
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 | |||
@@ -116,7 +116,7 @@ static inline void memcpy_step_rev ( void *_dst, void *_src, size_t len, size_t | |||
116 | 116 | ||
117 | 117 | ||
118 | XineVideoWidget::XineVideoWidget ( QWidget* parent, const char* name ) | 118 | XineVideoWidget::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 | ||
132 | XineVideoWidget::~XineVideoWidget ( ) | 132 | XineVideoWidget::~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 | ||
145 | void XineVideoWidget::clear ( ) | 146 | void 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 | ||