(3) OSD sometimes fails to redraw, getting wiped off the display.
Example: When CHDK menu is active in shooting mode and camera tries to lock something (moving rectangle on the screen), CHDK menu gets wiped off the screen as the rectangle moves behind (or over, as it looks like). Once we force CHDK menu to refresh (by pressing the down arrow, for example), it gets visible once again - just to be wiped off again by the moving rectangle. It makes navigating the CHDK menu in shooting mode a bit hard.
Can't comment on the rest of your observations but this is more of a limitation than a bug. Its been discussed many times on this forum and believe it or not, is much less of an issue since philmoz greatly improved the code last year. In simple terms, the problem is that the Canon firmware does not know CHDK exists and so writes to the display whenever it chooses to (not knowing or caring that there might be CHDK information also being displayed). Unless somebody discovers a way to override that in the Canon firmware (and nobody has after 7 years) then we will just have to live with that behavior.
I wonder if the problem can be approached this way:
# We know this problem does not effect the Canon Menus
# Therefore, we can infer that before the Canon Menus are displayed the features causing the corruption are disabled
# We can demonstrate we are right for System Menus, as the screen can be observed to ||pause|| before the (full-screen) menu pops up
# We can also demonstrate this for User Menus, as the "focus/lock box" feature is obviously disabled before the User Menu is displayed ...so clearly Canon had the same problem!
# Canon will achieve the 'disable' features by either
=1= poking a number in a register on a chip, possibly over i2c
=2= writing a value to a memory location, which may be easily examined by the Screen Task
=3= calling a function that does one of the above
# Let's assume the Canon codebase is fairly well written ...which seems likely as they have to support many many Cameras on a professional basis ...On that presumption, it's going to be a function ala screen_lockbox_disable() or screen_ccd_disable()
# We've already hooked the keyboard code, so we have a *good* starting point to work out what functions get called when the [disp] or [menu] buttons get pressed.
# To someone who has just closed IDA Pro after porting to a new camera, I imagine the journey to find the screen_*_enable/disable() functions would not be an especially long or arduous one.
# Then we simply call the screen() function of our choice when required
BC
PS. Someone here must have, at some point, attacked the firmware with IDA (Pro) ...I've not used IDA, but I understand you can tell it things about the code and get it to embed documentation ...If I'm right - who might be able to furnish me with copies of these files?