Review idle_register.add() calls: wavelets, ciecam02, colortoning

This commit is contained in:
heckflosse
2018-10-24 17:12:11 +02:00
parent eee6837385
commit ccc882dbcf
8 changed files with 75 additions and 124 deletions

View File

@@ -144,7 +144,6 @@ Wavelet::Wavelet() :
neutrHBox(Gtk::manage(new Gtk::HBox()))
{
CurveListener::setMulti(true);
nextnlevel = 7.;
expsettings->signal_button_release_event().connect_notify( sigc::bind( sigc::mem_fun(this, &Wavelet::foldAllButMe), expsettings) );
@@ -886,36 +885,25 @@ Wavelet::~Wavelet ()
}
void Wavelet::wavChanged (double nlevel)
{
nextnlevel = nlevel;
const auto func = [](gpointer data) -> gboolean {
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
static_cast<Wavelet*>(data)->wavComputed_();
return FALSE;
};
idle_register.add(func, this);
}
bool Wavelet::wavComputed_ ()
{
disableListener ();
enableListener ();
updatewavLabel ();
return false;
}
void Wavelet::updatewavLabel ()
{
if (!batchMode) {
float lv;
lv = nextnlevel;
wavLabels->set_text(
struct Data {
Wavelet *me;
double nlevel;
};
const auto func = [](gpointer data) -> gboolean {
Data *d = static_cast<Data *>(data);
Wavelet *me = d->me;
me->wavLabels->set_text(
Glib::ustring::compose(M("TP_WAVELET_LEVLABEL"),
Glib::ustring::format(std::fixed, std::setprecision(0), lv))
);
Glib::ustring::format(std::fixed, std::setprecision(0), d->nlevel))
);
delete d;
return FALSE;
};
idle_register.add(func, new Data { this, nlevel });
}
}