mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-09-01 18:01:13 +02:00
Merge branch 'master' into pu/mp
This commit is contained in:
@@ -99,7 +99,7 @@ FBFontRenderClass::~FBFontRenderClass()
|
||||
for (fontListEntry * f = font; f; f = g)
|
||||
{
|
||||
g = f->next;
|
||||
delete f;
|
||||
delete f; f = NULL;
|
||||
}
|
||||
|
||||
FTC_Manager_Done(cacheManager);
|
||||
|
@@ -92,14 +92,18 @@ void CNeutrinoFonts::InitDynFonts()
|
||||
CNeutrinoFonts::~CNeutrinoFonts()
|
||||
{
|
||||
if (!v_share_fonts.empty()) {
|
||||
for (unsigned int i = 0; i < v_share_fonts.size(); i++)
|
||||
for (unsigned int i = 0; i < v_share_fonts.size(); i++){
|
||||
delete v_share_fonts[i].font;
|
||||
v_share_fonts[i].font = NULL;
|
||||
}
|
||||
v_share_fonts.clear();
|
||||
}
|
||||
|
||||
if (!v_dyn_fonts.empty()) {
|
||||
for (unsigned int i = 0; i < v_dyn_fonts.size(); i++)
|
||||
for (unsigned int i = 0; i < v_dyn_fonts.size(); i++){
|
||||
delete v_dyn_fonts[i].font;
|
||||
v_dyn_fonts[i].font = NULL;
|
||||
}
|
||||
v_dyn_fonts.clear();
|
||||
}
|
||||
if (!vDynSize.empty()) {
|
||||
@@ -402,8 +406,10 @@ void CNeutrinoFonts::deleteDynFontExtAll()
|
||||
{
|
||||
if (!v_dyn_fonts_ext.empty()) {
|
||||
for (size_t i = 0; i < v_dyn_fonts_ext.size(); ++i) {
|
||||
if (v_dyn_fonts_ext[i].font != NULL)
|
||||
if (v_dyn_fonts_ext[i].font != NULL){
|
||||
delete v_dyn_fonts_ext[i].font;
|
||||
v_dyn_fonts_ext[i].font = NULL;
|
||||
}
|
||||
}
|
||||
v_dyn_fonts_ext.clear();
|
||||
}
|
||||
|
@@ -854,12 +854,38 @@ unsigned char * CPictureViewer::ResizeA(unsigned char *orgin, int ox, int oy, in
|
||||
return int_Resize(orgin, ox, oy, dx, dy, COLOR, NULL, true);
|
||||
}
|
||||
|
||||
static size_t getCachedMemSize(void)
|
||||
{
|
||||
FILE *procmeminfo = fopen("/proc/meminfo", "r");
|
||||
size_t cached = 0;
|
||||
if (procmeminfo) {
|
||||
char buf[80] = {0}, a[80] = {0};
|
||||
size_t v = 0;
|
||||
while (fgets(buf, sizeof(buf), procmeminfo)) {
|
||||
char unit[10];
|
||||
*unit = 0;
|
||||
if ((3 == sscanf(buf, "%[^:]: %zu %s", a, &v, unit))
|
||||
|| (2 == sscanf(buf, "%[^:]: %zu", a, &v))) {
|
||||
if (*unit == 'k')
|
||||
v <<= 10;
|
||||
if (!strcasecmp(a, "Cached")){
|
||||
cached = v;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(procmeminfo);
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
bool CPictureViewer::checkfreemem(size_t bufsize)
|
||||
{
|
||||
struct sysinfo info;
|
||||
sysinfo( &info );
|
||||
if(bufsize + 4096 > (size_t)info.freeram + (size_t)info.freeswap){
|
||||
dprintf(DEBUG_NORMAL, "[CPictureViewer] [%s - %d] Error: Out of memory: need %zu > free %zu\n", __func__, __LINE__,bufsize,(size_t)info.freeram + (size_t)info.freeswap);
|
||||
size_t cached = getCachedMemSize();
|
||||
if(bufsize + sysconf(_SC_PAGESIZE) > (size_t)info.freeram + (size_t)info.freeswap + (size_t)info.bufferram + cached){
|
||||
dprintf(DEBUG_NORMAL, "[CPictureViewer] [%s - %d] Error: Out of memory: need %zu > free %zu\n", __func__, __LINE__,bufsize,(size_t)info.freeram + (size_t)info.freeswap + (size_t)info.bufferram + cached);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user