Try adding: while (focus_busy) msleep(10);before the call to _MoveZoomLensWithPoint
Quote from: philmoz on 11 / November / 2011, 14:43:28Try adding: while (focus_busy) msleep(10);before the call to _MoveZoomLensWithPointWill do - this could work. I was thinking of something much more complicated so this is better. If not, an other choice might be to try and work backwards up the tree in the Canon source code to see what the camera does before & after it calls _MoveZoomLensWithPoint() (assuming that's what it uses to move the zoom lens). Or would that be a painful exercise with little chance of success in your experience ?
If the focus_busy check doesn't work then digging deeper into what the MoveZoomLensWithPoint code is doing is probably the next step.
Quote from: philmoz on 11 / November / 2011, 15:10:25If the focus_busy check doesn't work then digging deeper into what the MoveZoomLensWithPoint code is doing is probably the next step.The focus_busy check did not help on either camera (double checked by commenting out MoveZoomLensWithPoint after and rebuilding/testing to be sure that was the problem line) . It was worth a shot - but the camera still crashes after it completes the zoom step and then trys to refocus. So I guess it makes sense that it did not help as the patch simply made sure there was no focus activity prior to the zoom step. I've attached a couple of dumps from the SD940 running the same script and crashing the same way. Looks like its in a different task when it dies ?Has anyone posted how to interpret the romlog.log dumps ? The task and stack dump seem obvious - what's the significance of the rest - lines like Code: [Select]00001240: UI:ScreenUnLock
//_MoveZoomLensWithPoint((short*)&newpt); extern void _PT_MoveOpticalZoomAt(long*); _PT_MoveOpticalZoomAt(&newpt);
set_aflock(1) set_zoom(p) set_aflock(0)
--[[@title zoom test@param r zoom speed@default r 2]]function zoomout() p=get_zoom() if p<s then p=p+1 end print("zoom to ",p) set_aflock(1) set_zoom(p) set_aflock(0)endfunction zoomin() p=get_zoom() if p>0 then p=p-1 end print("zoom to ",p) set_aflock(1) set_zoom(p) set_aflock(0)end--start scriptset_console_layout(10, 0, 40, 14)s=get_zoom_steps()print ("started - zoom steps=", s)set_zoom_speed(r)print("zoom speed set to ",r)repeat sleep(100) wait_click() print("click ") if is_pressed("right") then zoomout() end if is_pressed("left") then zoomin() end until false
Might be possible to embed the af_lock()'s into lens_set_zoom_point() although it might actually only work with the delays between script step execution.
_DoAFLock(); msleep(100); _MoveZoomLensWithPoint((short*)&newpt); msleep(100); _UnlockAF();
What happens if you remove the msleep after the zoom ?Maybe it is in a hurry to immediately autofocus.
Started by RickShelton
Started by Microfunguy
General Discussion and Assistance
Started by barianet
« 1 2 3 »
Started by Rogerio
« 1 2 »
Started by arjayagbunag