Reduced memory consumption of thumbnail browser; see issue #396
This commit is contained in:
parent
dfbc458ac9
commit
062a7f21a4
@ -42,6 +42,9 @@ Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, CacheImageDa
|
|||||||
loadProcParams ();
|
loadProcParams ();
|
||||||
_loadThumbnail ();
|
_loadThumbnail ();
|
||||||
generateExifDateTimeStrings ();
|
generateExifDateTimeStrings ();
|
||||||
|
|
||||||
|
delete tpp;
|
||||||
|
tpp = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, const std::string& md5)
|
Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, const std::string& md5)
|
||||||
@ -56,6 +59,9 @@ Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, const std::s
|
|||||||
cfs.recentlySaved = false;
|
cfs.recentlySaved = false;
|
||||||
|
|
||||||
initial_ = false;
|
initial_ = false;
|
||||||
|
|
||||||
|
delete tpp;
|
||||||
|
tpp = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Thumbnail::_generateThumbnailImage () {
|
void Thumbnail::_generateThumbnailImage () {
|
||||||
@ -277,17 +283,30 @@ rtengine::IImage8* Thumbnail::processThumbImage (const rtengine::procparams::Pro
|
|||||||
|
|
||||||
Glib::Mutex::Lock lock(mutex);
|
Glib::Mutex::Lock lock(mutex);
|
||||||
|
|
||||||
if (!tpp)
|
if ( tpp == 0 )
|
||||||
return NULL;
|
{
|
||||||
|
_loadThumbnail();
|
||||||
|
if ( tpp == 0 )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rtengine::IImage8* image = 0;
|
||||||
|
|
||||||
if ( cfs.thumbImgType == CacheImageData::QUICK_THUMBNAIL )
|
if ( cfs.thumbImgType == CacheImageData::QUICK_THUMBNAIL )
|
||||||
{
|
{
|
||||||
return tpp->quickProcessImage (pparams, h, rtengine::TI_Nearest, scale);
|
image = tpp->quickProcessImage (pparams, h, rtengine::TI_Nearest, scale);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return tpp->processImage (pparams, h, rtengine::TI_Bilinear, scale);
|
image = tpp->processImage (pparams, h, rtengine::TI_Bilinear, scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//_saveThumbnail();
|
||||||
|
delete tpp;
|
||||||
|
tpp = 0;
|
||||||
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtengine::IImage8* Thumbnail::upgradeThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale) {
|
rtengine::IImage8* Thumbnail::upgradeThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale) {
|
||||||
@ -300,7 +319,17 @@ rtengine::IImage8* Thumbnail::upgradeThumbImage (const rtengine::procparams::Pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
_generateThumbnailImage();
|
_generateThumbnailImage();
|
||||||
return tpp->processImage (pparams, h, rtengine::TI_Bilinear, scale);
|
if ( tpp == 0 )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
rtengine::IImage8* image = tpp->processImage (pparams, h, rtengine::TI_Bilinear, scale);
|
||||||
|
|
||||||
|
//_saveThumbnail();
|
||||||
|
delete tpp;
|
||||||
|
tpp = 0;
|
||||||
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Thumbnail::generateExifDateTimeStrings () {
|
void Thumbnail::generateExifDateTimeStrings () {
|
||||||
@ -397,6 +426,8 @@ void Thumbnail::infoFromImage (const Glib::ustring& fname, rtengine::RawMetaData
|
|||||||
void Thumbnail::_loadThumbnail(bool firstTrial) {
|
void Thumbnail::_loadThumbnail(bool firstTrial) {
|
||||||
|
|
||||||
needsReProcessing = true;
|
needsReProcessing = true;
|
||||||
|
tw = -1;
|
||||||
|
th = options.maxThumbnailHeight;
|
||||||
delete tpp;
|
delete tpp;
|
||||||
tpp = new rtengine::Thumbnail ();
|
tpp = new rtengine::Thumbnail ();
|
||||||
tpp->isRaw = (cfs.format == (int) FT_Raw);
|
tpp->isRaw = (cfs.format == (int) FT_Raw);
|
||||||
@ -415,8 +446,10 @@ void Thumbnail::_loadThumbnail(bool firstTrial) {
|
|||||||
else if (!succ) {
|
else if (!succ) {
|
||||||
delete tpp;
|
delete tpp;
|
||||||
tpp = NULL;
|
tpp = NULL;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else if ( cfs.thumbImgType == CacheImageData::FULL_THUMBNAIL ) {
|
|
||||||
|
if ( cfs.thumbImgType == CacheImageData::FULL_THUMBNAIL ) {
|
||||||
// load aehistogram
|
// load aehistogram
|
||||||
tpp->readAEHistogram (getCacheFileName ("aehistograms"));
|
tpp->readAEHistogram (getCacheFileName ("aehistograms"));
|
||||||
|
|
||||||
@ -426,6 +459,8 @@ void Thumbnail::_loadThumbnail(bool firstTrial) {
|
|||||||
tpp->init ();
|
tpp->init ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getThumbnailSize(tw,th);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Thumbnail::loadThumbnail (bool firstTrial) {
|
void Thumbnail::loadThumbnail (bool firstTrial) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user