icfans

Gallery的widget在图片放大时会花屏

0
阅读(1013)

[DESCRIPTION]
在widget gallery应用, 尝试把图片的宽高放大时会出现花屏。
[SOLUTION]
此问题的原因是在文件mediacache中会根据图片的size保存一些信息,当重新修改size后需要把mediacache删除
,然后重新生成.
如果您修改的size只是出现花屏问题,半导体则尝试修改后把文件夹MoDIS_VC9\WIN32FS\DRIVE_E下面的@MediaCache删除掉,然
后再重新编译运行;
如果改的过大,超过1/4LCD大小,会出现assert,则可按以下方法修改:
在函数VappGalleryMediaListMediaCache::prepareMediaCache()中做如下修改:
VappGalleryMediaListMediaCache::prepareMediaCache()
{
....
// initialize MediaCache
const U32 desired_work_buf_num = m_cacheCount ? m_cacheCount : DEFAULT_THUMB_CACHE_COUNT;
const U32 mediaCacheWorkingSize = SRV_MEDIACACHE_RUN_BUF_SIZE(desired_work_buf_num);
把以下代码
const U32 sqliteWorkingSize = m_cacheType == VGCT_PREVIEW_ZOOM ?
SRV_MEDIACACHE_SQLITE_DB_L1_BUF_SIZE_BEST :
SRV_MEDIACACHE_SQLITE_DB_BUF_SIZE_DEFAULT;
改为:
U32 sqliteWorkingSize = SRV_MEDIACACHE_SQLITE_DB_L1_BUF_SIZE_DEFAULT;
if(m_cacheType == VGCT_PREVIEW_ZOOM)
{
sqliteWorkingSize = SRV_MEDIACACHE_SQLITE_DB_L1_BUF_SIZE_DEFAULT;
}
else
{
const U32 thumbIOBufSize = m_thumbSize.width * m_thumbSize.height * (GDI_MAINLCD_BIT_PER_PIXEL
>> 3);
sqliteWorkingSize = SRV_MEDIACACHE_SQLITE_DB_BUF_SIZE_DEFAULT + thumbIOBufSize * 2; // 2x
because Input and Output buffer are separated
}
.....
srv_mediacache_config_database_store_cache_type(
m_hMediaCache,
m_cacheType == VGCT_PREVIEW_ZOOM ?
SRV_MEDIACACHE_CACHE_TYPE_L1 :
SRV_MEDIACACHE_CACHE_TYPE_L2);
//添加如下代码
if(VGCT_THUMBNAIL == m_cacheType)
{
srv_mediacache_config_level2_size(m_hMediaCache, m_thumbSize.width, m_thumbSize.height);
}
//添加如上代码
srv_mediacache_config_db(
m_hMediaCache,
pSQLiteWorking,
sqliteWorkingSize,
const_cast((const WCHAR*)m_dbFolderPath),
const_cast((const WCHAR*)m_dbName));
if(VGCT_THUMBNAIL == m_cacheType)
{
//去掉如下语句
srv_mediacache_config_level2_size(m_hMediaCache, m_thumbSize.width, m_thumbSize.height);
//去掉如上语句
srv_mediacache_add_cache(
m_hMediaCache,
SRV_MEDIACACHE_CACHE_TYPE_L2,
pCache,
cacheSize);
}
}