I think delaying writes till shutdown might be reasonable. The downside is
that if Mixxx crashes then we might not write the data. We could keep a
queue persisted in a database table so that even across crashes we can
write metadata on startup or shutdown.
The TIO cache is still alive and well but only keeps track of Mixxx-library
TIOs. If you load a file via iTunes and via the Mixxx library then you'll
have two TIOs for the one file.
2012/4/1 Albert Santoni <albe...@mixxx.org>
> 2012/4/1 "Daniel Schürmann" <dasch...@gmx.de>:
> > Hi,
> >
> > I have made some investigations about file locks and mmap.
> >
> > On Linux file locks are useless for our alleged problem because all
> applications have to be "cooperative". There is a paper on kernel.orgwhich
> describes a mandatory locking, but I have not managed to get it
> working with ubuntu.
> > http://kernel.org/doc/Documentation/filesystems/mandatory-locking.txt
> >
> > But the original problem on Bug #728197 was different. Mixxx corrupts
> its own mmap buffer in SoundSourceMp3 due to its own metatdata writes.
> >
> > Unfortunately the Qt implementation uses the MAP_SHARED flag. But in my
> test writes from a different process to the original file does not effect
> the mmap buffer. Is this true in general?
> >
> > Conclusion:
> > * we have to verify that all track files are read mmaped by Mixxx.
> > * we have to figure out if my test results are valid for Linux Mac Os
> and Windows in general
> > * If so, we need not to be worried about external processes that writes
> metatdata to the files.
> > * If the Mixxx mmap buffer is still untouched due writes from a forked()
> process in face of Qts MAP_SHARED flag, it should be save to write metadata
> to a track file using an external process.
> >
> > What do you think?
>
> This sounds pretty tricky. Would it simplify our lives if we dropped
> mmapped I/O? (sorry Owen!)
>
> Also, I thought we had a TIO cache at one point so you wouldn't have
> multiple TrackInfoObjects for a single track loaded into multiple
> decks. If that's still true, I'd just write in the destructor. I'm
> probably oversimplifying though....
>
> Albert
>
>
>
> --
> Albert Santoni
> Developer, Mixxx
> http://www.mixxx.org
> http://www.oscillicious.com
>
>
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here
> http://p.sf.net/sfu/sfd2d-msazure
> _______________________________________________
> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
> http://mixxx.org
>
>
> Mixxx-devel mailing list
> Mixxx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org
Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel