This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/v4l-utils.git tree:
Subject: qv4l2: disable grabbed controls in the GUI Author: Hans Verkuil <hverk...@xs4all.nl> Date: Sat Apr 3 15:37:02 2010 +0200 Signed-off-by: Hans Verkuil <hverk...@xs4all.nl> utils/qv4l2/capture-win.h | 1 + utils/qv4l2/ctrl-tab.cpp | 19 ++++++++++++++----- utils/qv4l2/qv4l2.cpp | 3 +++ utils/qv4l2/qv4l2.h | 1 + 4 files changed, 19 insertions(+), 5 deletions(-) --- http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=981160f79b089458084a0b1dd66b9016ac4404e4 diff --git a/utils/qv4l2/capture-win.h b/utils/qv4l2/capture-win.h index 25a1bac..5546056 100644 --- a/utils/qv4l2/capture-win.h +++ b/utils/qv4l2/capture-win.h @@ -36,6 +36,7 @@ public: void setImage(const QImage &image, bool init = false); void stop(); + unsigned frame() const { return m_frame; } protected: virtual void closeEvent(QCloseEvent *event); diff --git a/utils/qv4l2/ctrl-tab.cpp b/utils/qv4l2/ctrl-tab.cpp index 13926ee..ee475ce 100644 --- a/utils/qv4l2/ctrl-tab.cpp +++ b/utils/qv4l2/ctrl-tab.cpp @@ -38,6 +38,8 @@ #include <sys/ioctl.h> #include <errno.h> +#define CTRL_FLAG_DISABLED (V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_INACTIVE | V4L2_CTRL_FLAG_GRABBED) + void ApplicationWindow::addWidget(QGridLayout *grid, QWidget *w, Qt::Alignment align) { grid->addWidget(w, m_row, m_col, align | Qt::AlignVCenter); @@ -282,7 +284,7 @@ void ApplicationWindow::addCtrl(QGridLayout *grid, const v4l2_queryctrl &qctrl) return; } m_sigMapper->setMapping(m_widgetMap[qctrl.id], qctrl.id); - if (qctrl.flags & (V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_INACTIVE)) + if (qctrl.flags & CTRL_FLAG_DISABLED) m_widgetMap[qctrl.id]->setDisabled(true); } @@ -334,7 +336,7 @@ void ApplicationWindow::ctrlAction(int id) for (unsigned i = 0; i < count; i++) { unsigned id = m_classMap[ctrl_class][i]; - if (m_ctrlMap[id].flags & (V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_INACTIVE)) + if (m_ctrlMap[id].flags & CTRL_FLAG_DISABLED) continue; c[idx].id = id; c[idx].size = 0; @@ -455,7 +457,7 @@ void ApplicationWindow::updateCtrl(unsigned id) if (ctrl_class == V4L2_CID_PRIVATE_BASE) ctrl_class = V4L2_CTRL_CLASS_USER; - if (m_ctrlMap[id].flags & (V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_INACTIVE)) + if (m_ctrlMap[id].flags & CTRL_FLAG_DISABLED) return; if (!m_haveExtendedUserCtrls && ctrl_class == V4L2_CTRL_CLASS_USER) { @@ -562,13 +564,18 @@ void ApplicationWindow::refresh(unsigned ctrl_class) else setVal(id, c[i].value); queryctrl(m_ctrlMap[id]); - m_widgetMap[id]->setDisabled(m_ctrlMap[id].flags & - (V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_INACTIVE)); + m_widgetMap[id]->setDisabled(m_ctrlMap[id].flags & CTRL_FLAG_DISABLED); } } delete [] c; } +void ApplicationWindow::refresh() +{ + for (ClassMap::iterator iter = m_classMap.begin(); iter != m_classMap.end(); ++iter) + refresh(iter->first); +} + void ApplicationWindow::setWhat(QWidget *w, unsigned id, const QString &v) { const v4l2_queryctrl &qctrl = m_ctrlMap[id]; @@ -711,6 +718,8 @@ void ApplicationWindow::setDefaults(unsigned ctrl_class) if (m_ctrlMap[id].flags & V4L2_CTRL_FLAG_READ_ONLY) continue; + if (m_ctrlMap[id].flags & V4L2_CTRL_FLAG_GRABBED) + continue; if (m_ctrlMap[id].type == V4L2_CTRL_TYPE_INTEGER64) setVal64(id, 0); else if (m_ctrlMap[id].type == V4L2_CTRL_TYPE_STRING) diff --git a/utils/qv4l2/qv4l2.cpp b/utils/qv4l2/qv4l2.cpp index afa80bf..61a7ab6 100644 --- a/utils/qv4l2/qv4l2.cpp +++ b/utils/qv4l2/qv4l2.cpp @@ -217,6 +217,8 @@ void ApplicationWindow::capFrame() break; } m_capture->setImage(*m_capImage); + if (m_capture->frame() == 1) + refresh(); } bool ApplicationWindow::startCapture(unsigned buffer_size) @@ -367,6 +369,7 @@ void ApplicationWindow::stopCapture() free(m_buffers); m_buffers = NULL; m_capture->stop(); + refresh(); } void ApplicationWindow::startOutput(unsigned) diff --git a/utils/qv4l2/qv4l2.h b/utils/qv4l2/qv4l2.h index b78eceb..0a3e5ef 100644 --- a/utils/qv4l2/qv4l2.h +++ b/utils/qv4l2/qv4l2.h @@ -125,6 +125,7 @@ private: void addCtrl(QGridLayout *grid, const struct v4l2_queryctrl &qctrl); void updateCtrl(unsigned id); void refresh(unsigned ctrl_class); + void refresh(); void setDefaults(unsigned ctrl_class); int getVal(unsigned id); long long getVal64(unsigned id); _______________________________________________ linuxtv-commits mailing list linuxtv-commits@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits