Fixed thumbnail delete ordering issues (also found ffsup2).
Fixed minor memory leak found by valgrind. Fixed thumbnail processing ordering issue.
This commit is contained in:
@@ -98,6 +98,9 @@ Thumbnail* Thumbnail::loadFromMemory (const char* image, int length, int &w, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
tpp->thumbImg = img->resize (w, h, TI_Nearest);
|
tpp->thumbImg = img->resize (w, h, TI_Nearest);
|
||||||
|
|
||||||
|
tpp->autowbTemp=2700;
|
||||||
|
tpp->autowbGreen=1.0;
|
||||||
delete img;
|
delete img;
|
||||||
|
|
||||||
tpp->init ();
|
tpp->init ();
|
||||||
|
@@ -249,7 +249,6 @@ void FileBrowser::close () {
|
|||||||
|
|
||||||
for (int i=0; i<fd.size(); i++)
|
for (int i=0; i<fd.size(); i++)
|
||||||
{
|
{
|
||||||
((FileBrowserEntry*)fd[i])->thumbnail->decreaseRef ();
|
|
||||||
delete fd[i];
|
delete fd[i];
|
||||||
}
|
}
|
||||||
fd.clear ();
|
fd.clear ();
|
||||||
|
@@ -48,6 +48,7 @@ FileBrowserEntry::FileBrowserEntry (Thumbnail* thm, const Glib::ustring& fname)
|
|||||||
editedIcon = safe_create_from_file (argv0+"/images/edited.png");
|
editedIcon = safe_create_from_file (argv0+"/images/edited.png");
|
||||||
recentlySavedIcon = safe_create_from_file (argv0+"/images/saved.png");
|
recentlySavedIcon = safe_create_from_file (argv0+"/images/saved.png");
|
||||||
enqueuedIcon = safe_create_from_file (argv0+"/images/processing.png");
|
enqueuedIcon = safe_create_from_file (argv0+"/images/processing.png");
|
||||||
|
iconsLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (thm)
|
if (thm)
|
||||||
@@ -68,8 +69,10 @@ FileBrowserEntry::~FileBrowserEntry () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
thumbImageUpdater->removeJobs (this);
|
thumbImageUpdater->removeJobs (this);
|
||||||
if (thumbnail)
|
if (thumbnail){
|
||||||
thumbnail->removeThumbnailListener (this);
|
thumbnail->removeThumbnailListener (this);
|
||||||
|
thumbnail->decreaseRef ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileBrowserEntry::refreshThumbnailImage () {
|
void FileBrowserEntry::refreshThumbnailImage () {
|
||||||
@@ -186,6 +189,7 @@ void FileBrowserEntry::updateImage (rtengine::IImage8* img, double scale, rtengi
|
|||||||
if ( feih == 0 ||
|
if ( feih == 0 ||
|
||||||
feih->destroyed )
|
feih->destroyed )
|
||||||
{
|
{
|
||||||
|
img->free();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -97,7 +97,7 @@ public:
|
|||||||
// nothing to do; could be jobs have been removed
|
// nothing to do; could be jobs have been removed
|
||||||
if ( jobs_.empty() )
|
if ( jobs_.empty() )
|
||||||
{
|
{
|
||||||
DEBUG("processing: nothing to do (%d,%d)",paused_,jobs_.empty());
|
DEBUG("processing: nothing to do (%d)",jobs_.empty());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,6 +114,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// see if any none upgrade jobs exist
|
// see if any none upgrade jobs exist
|
||||||
|
if ( i == jobs_.end() )
|
||||||
|
{
|
||||||
for ( i = jobs_.begin(); i != jobs_.end(); ++i)
|
for ( i = jobs_.begin(); i != jobs_.end(); ++i)
|
||||||
{
|
{
|
||||||
if ( !i->upgrade_ )
|
if ( !i->upgrade_ )
|
||||||
@@ -122,6 +124,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// if none, then use first
|
// if none, then use first
|
||||||
if ( i == jobs_.end() )
|
if ( i == jobs_.end() )
|
||||||
|
@@ -489,13 +489,16 @@ void Thumbnail::setFileName (const Glib::ustring fn) {
|
|||||||
|
|
||||||
void Thumbnail::addThumbnailListener (ThumbnailListener* tnl) {
|
void Thumbnail::addThumbnailListener (ThumbnailListener* tnl) {
|
||||||
|
|
||||||
|
increaseRef();
|
||||||
listeners.push_back (tnl);
|
listeners.push_back (tnl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Thumbnail::removeThumbnailListener (ThumbnailListener* tnl) {
|
void Thumbnail::removeThumbnailListener (ThumbnailListener* tnl) {
|
||||||
|
|
||||||
std::vector<ThumbnailListener*>::iterator f = std::find (listeners.begin(), listeners.end(), tnl);
|
std::vector<ThumbnailListener*>::iterator f = std::find (listeners.begin(), listeners.end(), tnl);
|
||||||
if (f!=listeners.end())
|
if (f!=listeners.end()) {
|
||||||
listeners.erase (f);
|
listeners.erase (f);
|
||||||
|
decreaseRef();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user