There are 3 ways in which a camera device could fail during StartSequenceAcquisition():
- Something in the camera fails before the call to
GetCoreCallback()->PrepareForAcq() → camera returns an error code
PrepareForAcq() returns an error (typically, shutter failed to open) → camera should propagate the error code (a few need fixing)
- Something in the camera fails after the call to
PrepareForAcq() → camera should return an error code
Currently, when case 3 happens, we have no mechanism to reverse the effect of PrepareForAcq() (i.e., closing the shutter if autoshutter is enabled). (Some cameras might call AcqFinished() if the app calls stopSequenceAcquisition(), but this is not required behavior.)
The Core needs to keep track of whether the shutter was opened for autoshutter, and close it on the error return path of startSequenceAcquisition() when applicable (case 3).
(The alternative would be to require the cameras themselves to call AcqFinished() in case 3, but afaict no existing camera does this, and it's better to let the Core handle as much as it can.)
There are 3 ways in which a camera device could fail during
StartSequenceAcquisition():GetCoreCallback()->PrepareForAcq()→ camera returns an error codePrepareForAcq()returns an error (typically, shutter failed to open) → camera should propagate the error code (a few need fixing)PrepareForAcq()→ camera should return an error codeCurrently, when case 3 happens, we have no mechanism to reverse the effect of
PrepareForAcq()(i.e., closing the shutter if autoshutter is enabled). (Some cameras might callAcqFinished()if the app callsstopSequenceAcquisition(), but this is not required behavior.)The Core needs to keep track of whether the shutter was opened for autoshutter, and close it on the error return path of
startSequenceAcquisition()when applicable (case 3).(The alternative would be to require the cameras themselves to call
AcqFinished()in case 3, but afaict no existing camera does this, and it's better to let the Core handle as much as it can.)