Skip to content

Commit 6e3be66

Browse files
committed
解决闪屏问题
1 parent 2a37f24 commit 6e3be66

File tree

7 files changed

+86
-9
lines changed

7 files changed

+86
-9
lines changed

apps/player/BitmapFactory.cpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,59 @@ namespace mango
126126
//log_i("DecodeFile space time %dms",end);
127127
}
128128
}
129+
void BitmapFactory::caputerScreen(){
130+
SkBitmap skBitmap,*pskBitmap = NULL;
131+
//SkCanvas *skCanvas = NULL;
132+
int w = gSession.mScreen.mWidth;
133+
int h = gSession.mScreen.mHeight;
134+
135+
pskBitmap = new SkBitmap();
136+
pskBitmap->setConfig(SkBitmap::kARGB_8888_Config,w,h);
137+
pskBitmap->allocPixels();
138+
if(gSession.mScreen.mYOffset == 0)
139+
memcpy((char *)pskBitmap->getPixels(),(char *)gSessionLocal.mSurface[1].mBits,w*h*4);
140+
else
141+
memcpy((char *)pskBitmap->getPixels(),(char *)gSessionLocal.mSurface[0].mBits,w*h*4);
142+
143+
SkImageEncoder::EncodeFile("/mnt/screen.png", *pskBitmap, SkImageEncoder::kPNG_Type, 100);
144+
145+
log_i("--------->caputerScreen");
146+
delete pskBitmap;
147+
}
148+
void getDrawName(CString& out){
149+
int i=0;
150+
151+
while(1){
152+
char path[100]={0};
153+
154+
sprintf(path,"/mnt/draw/darw_%d.png",i);
155+
if(!FileAttr::FileExist(path)){
156+
out = path;
157+
break;
158+
}
159+
i++;
160+
}
161+
162+
}
163+
void BitmapFactory::caputerDrawScreen(){
164+
SkBitmap skBitmap,*pskBitmap = NULL;
165+
//SkCanvas *skCanvas = NULL;
166+
int w = gSession.mScreen.mWidth;
167+
int h = gSession.mScreen.mHeight;
168+
CString out;
169+
170+
getDrawName(out);
171+
pskBitmap = new SkBitmap();
172+
pskBitmap->setConfig(SkBitmap::kARGB_8888_Config,w,h);
173+
pskBitmap->allocPixels();
129174

175+
memcpy((char *)pskBitmap->getPixels(),(char *)gSessionLocal.mStockGraphic.mBitmap.getBits(),w*h*4);
176+
177+
SkImageEncoder::EncodeFile(out.string, *pskBitmap, SkImageEncoder::kPNG_Type, 100);
178+
179+
delete pskBitmap;
180+
log_i("--->invalidCount caputerDrawScreen:%s",out.string);
181+
}
130182
void Environment::space_info(const char *path,__u32& toatl,__u32& avail,__u32& free)
131183
{
132184
struct statfs sfs;

apps/player/BitmapFactory.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ namespace mango
88
static bool decodeFile(MSkBitmap* mMSkBitmap,char* path,int w,int h);
99
static bool decodeBuffer(MSkBitmap* mMSkBitmap,void* buf,int size,int w,int h);
1010
static bool genBitmapFromFile(MSkBitmap* mMSkBitmap,char* path,int w,int h);
11+
static void caputerScreen();
12+
static void caputerDrawScreen();
1113
};
1214

1315
class Environment{

apps/player/playingView.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "SkStream.h"
22
#include "SkImageDecoder.h"
3+
#include "SkImageEncoder.h"
34
#include "SkBitmap.h"
45
#include "SkCanvas.h"
56
#include "SkDevice.h"

apps/player/playinglist.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,7 @@ void Playinglist::startSlient(){
811811
gSettingProvider.query(SETTING_EQMODE_ID,&eqMode);
812812
gSettingProvider.EqQuery(eqMode,EqValue);
813813
#if CODEC_VOLUME
814-
mParticleplayer->setAudioVolume(255);
814+
//mParticleplayer->setAudioVolume(255);
815815
log_i("codec volume,setAudioVolume(255)");
816816
#else
817817
mParticleplayer->setAudioVolume(gPlayer.mPlayerVolume);

apps/player/resource.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Module Name:
2121
2222
Revision History:
2323
24-
2014-3-27 15:59:47 Created by Fibo Lu
24+
2014-3-31 17:13:23 Created by Fibo Lu
2525
2626
--*/
2727

base/view/staticView.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace mango
1313
StaticView::StaticView(const TCHAR* title, View* parent, Rect* rect, int style, int show)
1414
:View(title, parent, rect, style, show)
1515
{
16-
updateTextPaintExtent(title);
16+
//updateTextPaintExtent(title);
1717
}
1818

1919

@@ -77,7 +77,6 @@ namespace mango
7777
{
7878
canvas.setTextColor(mColor);
7979
canvas.setTextSize(mTextSize);
80-
//canvas.drawImageResource(mBkRes,0,0);
8180
if (mTitlePaintExtent.cx < rect.right - rect.left)
8281
canvas.drawText(title, -1, rect, DT_SINGLELINE | DT_NOPREFIX);
8382
else
@@ -157,11 +156,11 @@ namespace mango
157156
if (title)
158157
{
159158

160-
canvas = getCanvas();
159+
canvas = &gSessionLocal.mStockGraphic.mCanvas;
161160
canvas->setTextColor(mColor);
162161
canvas->setTextSize(mTextSize);
163162
canvas->getTextExtentPoint(title, -1, mTitlePaintExtent);
164-
releaseCanvas();
163+
//releaseCanvas();
165164
}
166165
else
167166
{

base/view/viewZAxis.cpp

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -531,13 +531,16 @@ namespace mango
531531
return view ;
532532
}
533533

534-
534+
#define INVAL_COUNT 1
535535
//给无效窗口发WM_PAINT, 并返回哪一些层存无效窗口, 用SendMessage
536536
bool ViewZAxis::sendPainMessageToAllInvalidateView()
537537
{
538538
View* view;
539539
int count;
540-
540+
#if INVAL_COUNT
541+
View* invalidView[500];
542+
int invalidCount=0,i;
543+
#endif
541544
mMutex.lock() ;
542545
mExistInvalidateView = false;
543546
mMutex.unlock() ;
@@ -547,9 +550,29 @@ namespace mango
547550
view = findInvalidateView();
548551
if (view == NULL)
549552
break ;
550-
553+
554+
#if INVAL_COUNT
555+
for(i=0;i<invalidCount;i++){
556+
if(view == invalidView[i])
557+
break;
558+
}
559+
if(i == invalidCount){
560+
invalidView[invalidCount] = view;
561+
invalidCount++;
562+
messageQueue->send(view, VM_PAINT);
563+
//messageQueue->send(invalidView[0], VM_ACTIVATE);
564+
//log_i("invalidCount senddraw view=%s,view=0x%x",view->name,view);
565+
}else{
566+
log_i("invalidCount view=%s,view=0x%x",view->name,view);
567+
}
568+
#else
551569
messageQueue->send(view, VM_PAINT);
570+
#endif
571+
552572
}
573+
#if INVAL_COUNT
574+
//log_i("count=%d,invalidCount=%d",count,invalidCount);
575+
#endif
553576
return true;
554577
}
555578

0 commit comments

Comments
 (0)