Review Request: EngineController: ditch canDecode(), fix supportedMimeTypes(): make it non-static, thread-safe even on first call. (squached patches, recent on top)

Matěj Laitl matej at laitl.cz
Fri Jul 13 12:00:04 UTC 2012



> On July 12, 2012, 11:04 p.m., Ralf Engels wrote:
> > tests/core-impl/playlists/types/file/m3u/TestM3UPlaylist.cpp, line 77
> > <http://git.reviewboard.kde.org/r/105524/diff/3/?file=72272#file72272line77>
> >
> >     If we need to have special code here to ensure a sensible cleanup, might we not run into troubles in Amarok itself?
> >     Could you add the old comment back?
> >     The "Wait for other jobs, ..."
> 
> Matěj Laitl wrote:
>     Changing TestM3UPlaylist is apparently not needed at all in new patch version, altough I don't know whether this fill pass on Jenkins, too. Lets try without and perhaps resurrect this piece of patch.

Oh sorry, I lied. Will reupload the patch with comment re-added.

> If we need to have special code here to ensure a sensible cleanup, might we not run into troubles in Amarok itself?

I don't really know, perhaps is is already called by someone? We never had related crashed of normal Amarok run, only test crashes.


- Matěj


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/105524/#review15763
-----------------------------------------------------------


On July 13, 2012, 11:53 a.m., Matěj Laitl wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/105524/
> -----------------------------------------------------------
> 
> (Updated July 13, 2012, 11:53 a.m.)
> 
> 
> Review request for Amarok, Ralf Engels and Sven Krohlas.
> 
> 
> Description
> -------
> 
> EngineController: always call Phonon::availableMimeTypes() from main thread
> 
> If supportedMimeTypes() is called for the first time in a thread,
> Phonon::BackendCapabilities::availableMimeTypes() creates some QObject
> subclasses in non-main thread and that causes problems when they are
> deleted. Add signal/slot/QSemaphore trickery that causes
> Phonon::BackendCapabilities::availableMimeTypes() is called from the
> main thread without performance penalty for 2nd and next calls.
> 
> Test is added for it (EngineController::supportedMimeTypes()) so that
> this fragile code (hopefully) never breaks again.
> 
> EngineController: make supportedMimeTypes() non-static
> 
> Static methods have no sense in a singleton class. Additionally, it was
> very hacky (and impossible in corner-cases) to keep it thread-safe.
> Making it non-static will allow us to do some tricks so that the calls
> are more robust.
> 
> EngineController: null-pointer checking in destructor
> 
> 
> EngineController: remove unused and confusing destroy()
> 
> 
> EngineController: ditch canDecode()
> 
> MetaFile::Track::isTrack() is partial replacement. Existing 3 calls to
> canDecode() were in fact all related to MetaFile classes, so move the
> method there, simplify it not to query phonon at all (and document it
> can return false positives).
> 
> Works quite well for me and prevents failures in many tests. This
> change is propelled by Bart's and Ralf's legitimate comments on
> http://git.reviewboard.kde.org/r/105524/
> 
> Revert "Prevent hang in testmetamultitrack."
> 
> This reverts commit 115cb80f9bd94b23640ca9245c97d6c8e25d2c97.
> 
> Proper fix will follow, see next commits.
> 
> 
> Diffs
> -----
> 
>   src/EngineController.h ad2e0c4a5e7c80c79bf448bf74cd6b52cd1f0ed3 
>   src/EngineController.cpp 83f0a6ed0a92ae992e1809800cee65d9349dc680 
>   src/browsers/filebrowser/FileBrowser.cpp 567ff799df7ef8bfcd93de73ee120bfc5be634b7 
>   src/browsers/filebrowser/FileView.cpp 8eae4b6731ebfcb7310d3d719687989be125de92 
>   src/core-impl/collections/support/CollectionManager.cpp 9085b5a27d9a7ce94d2325d94bec5fce8d126abe 
>   src/core-impl/meta/file/File.h caa7102fd901ccdac7c9f25ee0caeb554a4ee518 
>   src/core-impl/meta/file/File.cpp 231c98521c3d6b1c609abc5799af47b88f048aee 
>   tests/CMakeLists.txt 901c716a600bca63639939f4e62dbd89d9db707f 
>   tests/TestEngineController.h PRE-CREATION 
>   tests/TestEngineController.cpp PRE-CREATION 
>   tests/core-impl/playlists/types/file/m3u/TestM3UPlaylist.cpp 4bbf29be01aef9043a64075a196ac04a544134cb 
> 
> Diff: http://git.reviewboard.kde.org/r/105524/diff/
> 
> 
> Testing
> -------
> 
> Works, fixes testm3uplaylist
> 
> 
> Thanks,
> 
> Matěj Laitl
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/amarok-devel/attachments/20120713/72b14cb5/attachment-0001.html>


More information about the Amarok-devel mailing list