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) void BayerProcess::FrameCountChanged(int n, int frameNum)
{ {
GThreadLock lock; struct Data {
imageNumber->block (true); 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(); me->imageNumber->remove_all();
imageNumber->append("1"); me->imageNumber->append("1");
for(int i = 2; i <= std::min(n, 4); ++i) { for(int i = 2; i <= std::min(n, 4); ++i) {
std::ostringstream entry; std::ostringstream entry;
entry << i; 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) { if(n == 1) {
imageNumberBox->hide(); me->imageNumberBox->hide();
} else { } 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; Adjuster* pixelShiftRedBlueWeight;
#endif #endif
int oldMethod; int oldMethod;
IdleRegister idle_register;
public: public:
BayerProcess (); BayerProcess ();