Convert almost all IdleRegister::add() calls to add(std::function<>)

This commit is contained in:
Flössie
2019-01-01 15:53:39 +01:00
parent 5af3f64a9d
commit b08fb04dae
22 changed files with 574 additions and 610 deletions

View File

@@ -23,18 +23,6 @@
using namespace rtengine;
using namespace rtengine::procparams;
namespace
{
struct iaimgpar {
IImage8* image;
PreviewHandlerIdleHelper* pih;
double scale;
CropParams cp;
};
}
PreviewHandler::PreviewHandler () : image(nullptr), previewScale(1.)
{
@@ -61,22 +49,14 @@ void PreviewHandler::setImage(rtengine::IImage8* i, double scale, const rtengine
{
pih->pending++;
iaimgpar* iap = new iaimgpar;
iap->image = i;
iap->pih = pih;
iap->scale = scale;
iap->cp = cp;
const auto func =
[](iaimgpar* iap) -> bool
idle_register.add(
[this, i, scale, cp]() -> bool
{
PreviewHandlerIdleHelper* const pih = iap->pih;
if (pih->destroyed) {
if (pih->pending == 1) {
delete pih;
} else {
pih->pending--;
--pih->pending;
}
return false;
@@ -84,21 +64,21 @@ void PreviewHandler::setImage(rtengine::IImage8* i, double scale, const rtengine
if (pih->phandler->image) {
IImage8* const oldImg = pih->phandler->image;
oldImg->getMutex().lock ();
pih->phandler->image = iap->image;
oldImg->getMutex().unlock ();
oldImg->getMutex().lock();
pih->phandler->image = i;
oldImg->getMutex().unlock();
} else {
pih->phandler->image = iap->image;
pih->phandler->image = i;
}
pih->phandler->cropParams = iap->cp;
pih->phandler->previewScale = iap->scale;
pih->pending--;
pih->phandler->cropParams = cp;
pih->phandler->previewScale = scale;
--pih->pending;
return false;
};
idle_register.add<iaimgpar>(func, iap, true);
}
);
}
@@ -106,20 +86,14 @@ void PreviewHandler::delImage(IImage8* i)
{
pih->pending++;
iaimgpar* iap = new iaimgpar;
iap->image = i;
iap->pih = pih;
const auto func =
[](iaimgpar* iap) -> bool
idle_register.add(
[this, i]() -> bool
{
PreviewHandlerIdleHelper* const pih = iap->pih;
if (pih->destroyed) {
if (pih->pending == 1) {
delete pih;
} else {
pih->pending--;
--pih->pending;
}
return false;
@@ -127,57 +101,51 @@ void PreviewHandler::delImage(IImage8* i)
if (pih->phandler->image) {
IImage8* oldImg = pih->phandler->image;
oldImg->getMutex().lock ();
oldImg->getMutex().lock();
pih->phandler->image = nullptr;
oldImg->getMutex().unlock ();
oldImg->getMutex().unlock();
}
iap->image->free ();
pih->phandler->previewImgMutex.lock ();
pih->phandler->previewImg.clear ();
pih->phandler->previewImgMutex.unlock ();
i->free();
pih->phandler->previewImgMutex.lock();
pih->phandler->previewImg.clear();
pih->phandler->previewImgMutex.unlock();
pih->pending--;
--pih->pending;
return false;
};
idle_register.add<iaimgpar>(func, iap, true);
}
);
}
void PreviewHandler::imageReady(const rtengine::procparams::CropParams& cp)
{
pih->pending++;
iaimgpar* iap = new iaimgpar;
iap->pih = pih;
iap->cp = cp;
const auto func =
[](iaimgpar* iap) -> bool
idle_register.add(
[this, cp]() -> bool
{
PreviewHandlerIdleHelper* const pih = iap->pih;
if (pih->destroyed) {
if (pih->pending == 1) {
delete pih;
} else {
pih->pending--;
--pih->pending;
}
return false;
}
pih->phandler->previewImgMutex.lock ();
pih->phandler->previewImg = Gdk::Pixbuf::create_from_data (pih->phandler->image->getData(), Gdk::COLORSPACE_RGB, false, 8, pih->phandler->image->getWidth(), pih->phandler->image->getHeight(), 3 * pih->phandler->image->getWidth());
pih->phandler->previewImgMutex.lock();
pih->phandler->previewImg = Gdk::Pixbuf::create_from_data(pih->phandler->image->getData(), Gdk::COLORSPACE_RGB, false, 8, pih->phandler->image->getWidth(), pih->phandler->image->getHeight(), 3 * pih->phandler->image->getWidth());
pih->phandler->previewImgMutex.unlock ();
pih->phandler->cropParams = iap->cp;
pih->phandler->cropParams = cp;
pih->phandler->previewImageChanged ();
pih->pending--;
--pih->pending;
return false;
};
idle_register.add<iaimgpar>(func, iap, true);
}
);
}
Glib::RefPtr<Gdk::Pixbuf> PreviewHandler::getRoughImage (int x, int y, int w, int h, double zoom)