Merge branch 'dev' into rt-cli2
This commit is contained in:
@@ -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");
|
||||
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);
|
||||
me->imageNumber->remove_all();
|
||||
me->imageNumber->append("1");
|
||||
for(int i = 2; i <= std::min(n, 4); ++i) {
|
||||
std::ostringstream entry;
|
||||
entry << i;
|
||||
me->imageNumber->append(entry.str());
|
||||
}
|
||||
me->imageNumber->set_active(std::min(frameNum, n - 1));
|
||||
if(n == 1) {
|
||||
me->imageNumberBox->hide();
|
||||
} else {
|
||||
me->imageNumberBox->show();
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
@@ -74,6 +74,8 @@ protected:
|
||||
Adjuster* pixelShiftRedBlueWeight;
|
||||
#endif
|
||||
int oldMethod;
|
||||
|
||||
IdleRegister idle_register;
|
||||
public:
|
||||
|
||||
BayerProcess ();
|
||||
|
@@ -187,18 +187,6 @@ void ExifPanel::setImageData (const ImageMetaData* id)
|
||||
idata = id;
|
||||
exifTreeModel->clear ();
|
||||
|
||||
const std::vector<Tag*> defTags = ExifManager::getDefaultTIFFTags (nullptr);
|
||||
|
||||
for (size_t i = 0; i < defTags.size(); i++) {
|
||||
Tag* defTag = defTags[i];
|
||||
if (defTag->nameToString() == "ImageWidth" || defTag->nameToString() == "ImageHeight" || defTag->nameToString() == "BitsPerSample") {
|
||||
addTag (exifTreeModel->children(), defTag->nameToString(), "?", AC_SYSTEM, false);
|
||||
} else {
|
||||
addTag (exifTreeModel->children(), defTag->nameToString(), defTag->valueToString(), AC_SYSTEM, false);
|
||||
}
|
||||
delete defTag;
|
||||
}
|
||||
|
||||
if (id && id->getExifData ()) {
|
||||
// id->getExifData ()->printAll ();
|
||||
addDirectory (id->getExifData (), exifTreeModel->children());
|
||||
|
@@ -45,12 +45,6 @@ IdleRegister::~IdleRegister()
|
||||
|
||||
void IdleRegister::add(GSourceFunc function, gpointer data, gint priority)
|
||||
{
|
||||
struct DataWrapper {
|
||||
IdleRegister* const self;
|
||||
GSourceFunc function;
|
||||
gpointer data;
|
||||
};
|
||||
|
||||
const auto dispatch = [](gpointer data) -> gboolean {
|
||||
DataWrapper* const data_wrapper = static_cast<DataWrapper*>(data);
|
||||
|
||||
@@ -80,9 +74,11 @@ void IdleRegister::add(GSourceFunc function, gpointer data, gint priority)
|
||||
void IdleRegister::destroy()
|
||||
{
|
||||
mutex.lock();
|
||||
for (const auto id : ids) {
|
||||
for (const auto& id : ids) {
|
||||
g_source_remove(id.second);
|
||||
delete id.first;
|
||||
}
|
||||
ids.clear();
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
|
@@ -54,7 +54,13 @@ public:
|
||||
void destroy();
|
||||
|
||||
private:
|
||||
std::map<void*, guint> ids;
|
||||
struct DataWrapper {
|
||||
IdleRegister* const self;
|
||||
GSourceFunc function;
|
||||
gpointer data;
|
||||
};
|
||||
|
||||
std::map<const DataWrapper*, guint> ids;
|
||||
MyMutex mutex;
|
||||
};
|
||||
|
||||
|
770
rtgui/retinex.cc
770
rtgui/retinex.cc
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user