Re: FILE_ADDED events getting lost

Dave Taylor <[email protected]> Thu, 8 Oct 2020 08:57:27 -0700
Newsgroups gmane.comp.multimedia.gphoto.user
Message-ID <CAL2tZyeDhWEiFi0Zp4h4uxR6j_7=_Ft+i2gMgXmPMppEUaG5Zg@mail.gmail.com>
On Wed, Oct 7, 2020 at 11:42 PM Marcus Meissner <[email protected]> wrote:
>
> On Tue, Oct 06, 2020 at 12:39:23PM -0700, Dave Taylor wrote:
> > On Tue, Oct 6, 2020 at 10:36 AM Marcus Meissner <[email protected]> wrote:
> > >
> > > On Tue, Oct 06, 2020 at 09:39:37AM -0700, Dave Taylor wrote:
> > > > On Mon, Oct 5, 2020 at 10:54 PM Marcus Meissner <[email protected]> wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > - Is this libgphoto2 using libusb1 or libusb0?
> > > > >
> > > > >   If you are using libusb0, it is possible to lose USB interrupts if you are not
> > > > >   waiting for events actively.
> > > >
> > > > Not sure how I would find out for the version that came with Debian
> > > > buster.  I did an ldd on my executable, and it doesn't appear to be
> > > > referencing libusb as a dynamically loaded library.  How would I tell
> > > > which version was compiled in?
> > >
> > > gphoto2 --version
> > >
> > > will list either libusb0 or libusb1 in its output.
> >
> > Thanks!  I'm seeing usb1.
>
> very good.
>
> > > > > - just to check, you are polling with gp_camera_wait_for_event until GP_EVENT_TIMEOUT
> > > > >   is returned?
> > > > >
> > > > >   There might be multiple events buffered.
> > > >
> > > > Yes.  I fetch all the buffered events, and the timeout is always below
> > > > 10ms for each call, but the actual elapsed time for some reason can
> > > > vary widely.
> > >
> > > There might be waits of 150ms in the function, so a bit more coarse grained waiting
> > > might be better
> >
> > So if I have a timeout below the time needed, say 150ms, might it
> > abort the event it was preparing?  Or possibly delay it until later?
> >
> > I will set the timeouts to 200ms and see if reliability improves.
> > Thanks for the idea!
>
>
> It should not, but it might then wait 150ms, not just 10ms, skewing the timing.
>
>
> > > > I never pass more than 10ms as a timeout, but it gets really slow
> > > > sometimes, on the order of 100ms to 1s.  I haven't correlated why/when
> > > > it happens yet, but when it does, I'm definitely not going to get a
> > > > GP_EVENT_FILE_ADDED, but this isn't the only time it happens.  It can
> > > > respond in normal time and still not return FILE_ADDED.
> > > >
> > > > Please let me know if there's anything I can do to help isolate the issue.
> > >
> > > Hmm. weird :/
> >
> > Agreed.  I'm guessing it doesn't sound familiar to you, which tells me
> > maybe I'm doing something wrong on my end to upset libgphoto2?  Is
> > there anything I should be calling besides gp_camera_wait_for_event()
> > to keep libgphoto2 in a happy state while waiting for the FILE_ADDED
> > event to come in from an external shutter press?
>
> No, this should be sufficient.
>
> The Nikon uses 2 different event get methods, one with usb interrupts
> and one over a ptp command, we could probably experiment with forcing
> the more reliable command method :/

I'm up for that.  Is it pretty straightforward to toggle?

        =-ddt->