- Status: open --> merged
Brett Kerwin wants to merge 1 commit from /u/bkerwin/guvcview/ to master, 2 days ago
Integer controls use a GtkScale and GtkSpinButton backed by the same
GtkAdjustment.
During gui_gtk3_update_controls_state(), slider_changed() is blocked
before gtk_range_set_value(), but spin_changed() is still enabled at
that point. Since both widgets share the GtkAdjustment, refreshing the
scale can emit a value change through the spin button and write the
read-back value back to the V4L2 device.
I reproduced this with a Logitech GROUP camera on Fedora 44.
With both hardware autofocus and guvcview software autofocus disabled,
setting Focus Absolute could result in a slightly different read-back
value (for example SET 157 -> GET 156). The unpatched guvcview would
then progressively write back new values on successive refreshes.
With guvcview closed, the V4L2 value remained stable.
I applied this fix to Fedora's guvcview 2.1.0 package, rebuilt the RPM,
and tested it with the same Logitech GROUP camera. The feedback loop
was eliminated: after the camera adjusted the requested value, the
read-back value remained stable instead of continuing to decrease.
This patch ports the same fix to current upstream master.
The Fedora 2.1.0 version of the fix was hardware-tested successfully.
I no longer have access to the camera, so this upstream-master port has
only been build-tested.
| Commit | Date | |
|---|---|---|
|
[55af82]
(HEAD, fix-gtk3-control-refresh-feedback, master)
by
gtk3: avoid feedback loop when refreshing integer controls The scale and spin button for integer controls share the same When refreshing a control value, gui_gtk3_update_controls_state() This can write a read-back value back to the V4L2 device. On devices Block both handlers before updating either widget, and unblock them |
2026-09-25 13:22:58 | Tree |