changed implementation of BayerProcess::FrameCountChanged to use IdleRegister

This commit is contained in:
Alberto Griggio 2017-04-28 17:20:44 +02:00
parent 0f0f76df0b
commit 5d4bd4b352
2 changed files with 50 additions and 16 deletions

View File

@ -945,21 +945,53 @@ void BayerProcess::pixelShiftMotionMethodChanged ()
void BayerProcess::FrameCountChanged(int n, int frameNum)
{
GThreadLock lock;
imageNumber->block (true);
struct Data {
BayerProcess *me;
int n;
int frameNum;
};
const auto func = [](gpointer data) -> gboolean {
Data *d = static_cast<Data *>(data);
BayerProcess *me = d->me;
me->imageNumber->block (true);
int n = d->n;
int frameNum = d->frameNum;
imageNumber->remove_all();
imageNumber->append("1");
me->imageNumber->remove_all();
me->imageNumber->append("1");
for(int i = 2; i <= std::min(n, 4); ++i) {
std::ostringstream entry;
entry << i;
imageNumber->append(entry.str());
me->imageNumber->append(entry.str());
}
imageNumber->set_active(std::min(frameNum, n - 1));
me->imageNumber->set_active(std::min(frameNum, n - 1));
if(n == 1) {
imageNumberBox->hide();
me->imageNumberBox->hide();
} else {
imageNumberBox->show();
me->imageNumberBox->show();
}
imageNumber->block (false);
me->imageNumber->block (false);
delete d;
return FALSE;
};
idle_register.add(func, new Data { this, n, frameNum });
// GThreadLock lock;
// imageNumber->block (true);
// imageNumber->remove_all();
// imageNumber->append("1");
// for(int i = 2; i <= std::min(n, 4); ++i) {
// std::ostringstream entry;
// entry << i;
// imageNumber->append(entry.str());
// }
// imageNumber->set_active(std::min(frameNum, n - 1));
// if(n == 1) {
// imageNumberBox->hide();
// } else {
// imageNumberBox->show();
// }
// imageNumber->block (false);
}

View File

@ -74,6 +74,8 @@ protected:
Adjuster* pixelShiftRedBlueWeight;
#endif
int oldMethod;
IdleRegister idle_register;
public:
BayerProcess ();