@philmoz Initial feedback is great work. No flickering
I also note that LCD vs EVF display is handled seamlessly. Before I had to detect if the LCD or EVF was active and scale things myself.
Of course, drawing space is restricted/reduced to 360x240, but that is a small price to pay for eliminating the flickering.
One advantage/disadvantage is that the CHDK histogram is huge
Great for those of us with old eyes
The histogram, if always on, goes away when the Canon Menu is displayed, great, but remains whatever Canon INFO state you are in. Do you think it would be possible to have the CHDK histogram disappear, as with the Canon Menu, when the cycle through the INFO states, ie only show if Canon stuff not showing. Or have an enhanced shoot feature that means you can toggle the histogram on and off by using a half shutter press, say.
Bottom line: great work and I'm more than happy to keep testing future developments.
UPDATE 1
One thing I have noticed is that switching to EVF seems to offset all CHDK drawing by about -15 pixels, ie everything is shifted up.
UPDATE 2
I think something is amiss with the histogram as when I set the exposure to the fastest, 1/4000 and have the lens cap on, the histogram shows highlights warnings at the highlight end, but only on the LCD, not the EVF
The green channel changes radically in the LCD, ie looks wrong in the LCD, but not the EVF.
UPDATE 3
My script refreshes the info bar every 1s. In LCD mode I see 'random', ie not correlated to a 1s interval, flashing of my bar, ie the drawing. In EVF mode this random flashing is noticeably less and near non existent.
UPDATE 4
I currently I use
lcd = get_gui_screen_width()
to detect LCD/EVF switching. The above now always gives 360. Is there another way to detect EVF or LCD, or even implement one, eg get_screen_type()
UPDATE 5
Have experimented with my drawing refresh logic, and concluded, that with this build, the best way forward is to only refresh my drawing IF DoF things change, eg focus; else don't redraw. This logic results in no flashing. The downside is that my drawing disappears when I switch between LCD and EVF, hence the need to detect LCD/EVF changes. A work around is that I've implemented a half shutter based refresh, ie in LCD or EVF mode pressing the half shutter refreshes my drawing stuff.