Good news! I had the "review" time set to 2 seconds on the SX260, and set to 0 on the other cameras. When I set review time to 0, the SX260 no longer turns on between pictures. So the new method works on all 4 cameras.
I did some tests last night to see how much longer the battery lasts with the display off. I used 2 identical batteries, but battery #2 lasted significantly longer.
Battery Tests - event_proc method of turning off display
2 Second Shot Interval | 1 second fixed exposure, 100 ISO | Continuous drive mode
Camera Display OFF Display ON Difference (# of pictures | time)
SX260 2916 | 97 min 2453 | 82 min 463 | 15 min = 19% longer -- Battery #1
D20 4043 | 135 min 3543 | 118 min 500 | 17 min = 14% longer -- Battery #2
D20 3088 | 103 min = 6% longer than SX260 -- Battery #1
Also, CHDK shell has check boxes for compiler options. I have the box to allow native Lua calls checked, which worked until the recent trunk update. reyalp just fixed the expire by default problem, but it appears other CHDK shell compiler options are still being overridden. Was that fixed too? Thanks.
[EDIT] Never mind. CHDK Shell unchecked OPT_FORCE_LUA_CALL_NATIVE for the new trunk. I guess I have to recheck it for every new trunk.
Since native calls were disabled, my script stopped with an error. The enable native calls menu option was now visible, and it worked after doing that.
I'll try changing set_backlight() to use the new method in C, using eventprocs from C. That way my custom builds won't require native calls. I'll also try to figure out how to set the record review to 0 in C and restore it when the script exits. When (or if) I get it working, I'll post a patch. Phil can then re-write it correctly if you want it in the trunk.
I do think it's worth it to keep the backlight (display?) off without flashing while taking pictures. I'm thinking you could use a small camera as a dashboard camera taking pictures in continuous mode as fast as possible, perhaps at lower resolution if space is a problem. Having the screen on is distracting in this situation, as well as for night photography. The moderate power saving is also nice.
Here's the script function I used for the tests:
blight=1 -- backlight on / current state
bldisp=true -- turn off display with eventproc if true
if call_event_proc('DispDev_EnableEventProc') == -1 then
if call_event_proc('DispDev.Create') == -1 then
bldisp=false -- must turn off display with set_backlight
end
end -- end of initialization code
function backlight(bl) -- bl=0 off, 1 on, -1 toggle
if(bl<0)then bl=bitxor(blight,1) -- toggles 0 or 1
elseif (bl>1)then bl=1 end
if(bl==blight)then return end -- don't double set to current state
blight=bl
set_backlight(bl) -- also do the old way in case event_proc doesn't work
if(bldisp)then
if(bl==0)then call_event_proc('DispCon_TurnOffDisplay')
else call_event_proc('DispCon_TurnOnDisplay') end
end
end