The above builds have a nasty bug that affects the bad.dng files (they are corrupted when saving). I've fixed it in the source code, so Audionut may update the builds.
I've moved the retry mechanism from mlv_rec.c to raw.c (raw_update_params_retry_lv), so all other raw-based code can use retrying as needed (and be explicit about it). This fixes the ETTR issue (raw error when hitting the zoom button like crazy), and the UI remains responsive even if black level is broken for a longer period (because overlays or things that just print something in the menu do not have to retry, since they are cyclic processes anyway).
To test the UI responsiveness, you should first disable the bad.dng code (raw.c:839), because it's quite slow. Then, you can set the camera to ISO 100/6400 in movie mode, 5 fps, and overexpose completely. This will create bad pixels and nonuniform black level, which will fail the tests and will trigger the retry mechanism. Then, enable some raw-intensive stuff (like raw/mlv recording, or ettr always on in LV, or some raw overlays), make sure the black level calculation keeps failing (watch the debug console) and try to navigate the menu (should work at normal speed, without lockups or slowdowns). Or watch the raw overlays giving up.
So the issue is quite hard to solve in the presence of random bad frames, and it starts to rely on some tricky error paths that are not exercised often in practice. Before, it simply reported "success" with wrong black level values, and it appeared to work. Need to think some more about it.