Commit Graph

26 Commits

Author SHA1 Message Date
John Maguire 341dc7326f Reformat all C++ 2020-09-22 14:56:06 +01:00
Jim Broadus d3d6c1ff3c Fix UNC paths.
The fix-up for URLs for files that that begin with // no longer works since the
QUrl class determines that these modifications are invalid, resulting in an
empty string when converted. Instead of attempting to modify the QUrl, add a
utility function that makes the correction on the encoded byte array at time of
usage.
2020-01-29 00:38:43 -08:00
Jonas Kvinge 1a2274bd2b Merge branch 'master' into qt5-update 2019-07-21 14:20:59 +02:00
Jim Broadus 55edcf5321 Fix MoodbarPipeline crash on gstreamer error.
As reported in issue 6302, playing a stream that causes gstreamer to error at
start can cause a crash. The problem occurs when the MoodbarPipeline receives a
pad-added signal after it has handled an error callback. In the error callback,
the builder_ is freed. In the pad-added handler (NewPadCallback), this object
is accessed.

This change adds a running_ flag that is set when the pipeline is started and
cleared on an error, end of stream, or object destruction. We check this flag at
the beginning of NewPadCallback. For sanity sake, we also check the builder_
pointer before dereferencing. Note that checking the state of the pipeline
wasn't an option since the pipeline is in the process of changing states during
the pad-added callback and gst_element_get_state wants to block during a state
change.

This solution is not complete as there are still some syncronization issues.
With this specific situation, the error and new pad callbacks appear to always
occur on the same thread, but that's probably not true for all error conditions.
The object is also destroyed by a different thread, so it may be possible that a
callback can occur at the wrong time during or after the deletion of the object.

See https://github.com/clementine-player/Clementine/issues/6302
2019-03-17 22:26:01 -07:00
Chocobozzz 42aafd247a Update optional components to qt5 2015-04-15 18:26:09 +02:00
Mark Furneaux 3886f3d1e4 Fix socket leak in moodbarpipeline
Fixes #4663
When tearing down the pipeline, there was a leak of a GstBus which holds a socketpair open.
Eventually the OS runs out of file descriptors and terminates Clementine.
2014-12-22 16:13:44 -05:00
Chocobozzz 50b7b7d889 Make format after update to avoid conflicts 2014-10-15 21:57:57 +02:00
Chocobozzz 8279f21251 Revert "Make format"
This reverts commit 17b1e9fbe6.
2014-10-15 21:55:03 +02:00
Chocobozzz 17b1e9fbe6 Make format 2014-10-15 20:55:24 +02:00
Pasi Saarinen 1ecee037c7 Fix moodbar segfault when playing broken mp3
When playing a broken mp3 (eg empty file) clementine crashed if moodbar
was enabled.
2014-10-06 15:40:10 +02:00
David Sansome 50551d987a Rewrite moodbar stuff for gstreamer-1.0:
- Rewrite gstspectrum (1.0) to use FFTW (2x faster) and emit raw magnitude
  values (not log scaled).
- Rewrite the moodbar generation code to be somewhat understandable, and
  do it in Clementine instead of gstreamer.
2014-09-21 19:38:13 +10:00
David Sansome 6bb81328e8 Merge branch 'master' into gstreamer-1.2
Conflicts:
	ext/clementine-spotifyblob/mediapipeline.cpp
	gst/moodbar/gstfftwspectrum.c
	src/core/songloader.cpp
	src/core/songloader.h
	src/engines/gstengine.cpp
	src/engines/gstenginepipeline.cpp
	src/moodbar/moodbarpipeline.cpp
	src/musicbrainz/chromaprinter.cpp
	src/transcoder/transcoder.cpp
	src/ui/mainwindow.cpp
	src/visualisations/projectmvisualisation.cpp
2014-06-09 16:20:24 +10:00
John Maguire bebd781fdf Reformat all non-3rd-party C/C++/Objective-C++.
Command line:
find src ext -regex '.*\.\(h\|cpp\|mm\)' -exec clang-format -i
 -style='{BasedOnStyle: Google, DerivePointerBinding: false}' {} \;
2014-02-07 16:34:20 +01:00
John Maguire 71893e4847 Use nullptr instead of NULL everywhere. 2014-02-06 17:29:59 +01:00
John Maguire 56c949815b First pass at Gstreamer 1.0 porting.
This at least compiles against gstreamer 1.2.
Things that work:
* Playing audio
* Automatically completing tags

Things that don't work
* Spotify
* Moodbar

Things I haven't tested
* Transcoding
2013-09-26 17:49:24 +02:00
David Sansome a3f927cde2 Run moodbar pipeline threads at idle CPU and IO priority. Fixes issue 3644. 2013-05-04 22:48:11 +10:00
John Maguire 90803fa0e0 Remove use of deprecated gstreamer functions. 2013-01-29 13:19:26 +01:00
John Maguire 80ab12aeff More concise checking of callback param counts. 2012-06-08 15:13:23 +02:00
John Maguire 2da6c40fb5 Add runtime checker for gsignal callback arguments. 2012-06-08 14:27:38 +02:00
John Maguire 38f1b71761 Use url instead of filename. 2012-05-28 15:33:37 -07:00
John Maguire 823b59e3a7 Use uridecodebin for Moodbar. 2012-05-28 15:18:36 -07:00
David Sansome 4cfa474fb8 Stop listening for synchronous bus callbacks from the moodbar pipeline, fixes some weird event loop stalls 2012-05-27 21:33:17 +01:00
David Sansome d36dd4d753 Oops, actually load moodbar data on a different thread 2012-05-27 20:05:01 +01:00
David Sansome a2feaa61e7 Create and render moodbars in background threads to avoid blocking the UI 2012-05-27 18:53:57 +01:00
David Sansome 19c3e1d5ec Add a Mood column to the playlist 2012-05-27 16:46:16 +01:00
David Sansome 51229b88c5 Create or load moodbar data for songs 2012-05-25 17:18:07 +01:00