Hi all,
I have a strange problem during script execution in the Ixus55 port: Every time I use the "shoot" command, the command is executed but the script does not continue afterwards. What I have found out so far is the following:
- The "shoot" command executes kbd_sched_shoot (form core/kbd.c). Here several commands are executed incl. waits for flash receicling and so on.
- Aparently script execution hangs in KBD_STACK_PUSH(SCRIPT_WAIT_SAVE). When I comment that out everything works as expected.
- The SCRIPT_WAIT_SAVE is processed in process_script (also in kbd.c):
case SCRIPT_WAIT_SAVE:{
if (state_shooting_progress == SHOOTING_PROGRESS_DONE)
kbd_int_stack_ptr-=1; // pop op.
return;
- state_shooting_progress is updated in platform/generic/shooting.c:
int shooting_in_progress()
{
int t = 0;
_GetPropertyCase(PROPCASE_SHOOTING, &t, sizeof(&t));
return t != 0;
}
- Since the Ixus55 is using the DIGIC II processer, PROPCASE_SHOOTING is set to 205
- When I observe this property-case during normal shooting it behaves ok, that means it is set to 1 during shooting process and back to 0 afterwards.
- During script execution, however, it seems that PROPCASE_SHOOTING is never set back to zero leading to an infinite loop in SCRIPT_WAIT_SAVE. I have tried to verify that by inserting some debug code into the case SCRIPT_WAIT_SAVE and it always prints 1 for the property case 205 inside the script execution.
What is going on here? Apparently the Ixus70 port had a similar problem although that might have been caused by calling the wrong property case. I am absolutely running out of ideas...
Thx in advance
- 3DBruce