Commit Graph

338 Commits

Author SHA1 Message Date
Andreas 55e5eab157 Fix Race-Condition in SpotifyClient that caused playback to break.
QList.removeAll calls the destructor for the elements in the list. This caused `req` to be initialized in `SpotifyClient::TryPlaybackAgain()`. Therefore, spotify method calls might crash because the pointers are invalid.

This commit moves the `pending_playback_requests_.removeAll` to the end of the method to ensure `req` is accessible all the time.
2015-03-13 14:12:19 +01:00
John Maguire 705cdf11fc Move ScopedNSAutoreleasePool to ext 2015-03-02 17:51:17 +01:00
Chocobozzz 071be6bc83 Make format 2015-02-21 16:57:37 +01:00
Chocobozzz fb5781eee2 Add performer tag support for mpeg 2015-02-21 16:49:00 +01:00
John Maguire 87fed5d0f4 Merge pull request #4715 from Chocobozzz/albumartist_flac
Fix album artist for FLAC/OGG files (with vorbis comments)
2015-01-19 10:57:31 +01:00
Chocobozzz c61d866caf Fix album artist for FLAC/OGG files (with vorbis comments) 2015-01-16 18:30:11 +01:00
Arnaud Bienner e1139e731f run make format 2015-01-14 22:55:20 +01:00
Arnaud Bienner 7039c2a2bf Spotify: add the ability to add/remove tracks to/from Starred playlist 2015-01-14 22:49:36 +01:00
Arnaud Bienner 7278e7c4d0 Add ability to get a link to share Spotify playlists 2014-12-27 18:05:04 +01:00
Andreas ff172f6ed4 Network remote can now transcode lossless files before sending them to the remote.
- It is configurable in the settings.
- Any format can be chosen that is supported by the transcoder.
- The status of the transcoder is send to the remote.

- Transcoder format settings have now a postfix so we can define mutliple transcoder formats and use them separatly. Here one for the normal transcoder and one for the network remote transcode. You can pass the postfix in the constructor.
- Fixed Transcoder crash (was introduced with the gstreamer1.0 merge, decodebin doesn't have a "new-decoded-pad").
- Transcoder emits the output filename as well on "JobComplete" signal
- Transcoder can now convert a file to a temporary file ("AddTemporaryJob")
2014-11-13 22:31:49 +01:00
John Maguire 4f4c8f6894 Merge pull request #4580 from Chocobozzz/hide_internet_services
Hide internet services
2014-10-31 12:02:29 +01:00
Arnaud Bienner f2eecadbd3 Don't write rating if not set
Fixes issue #4128
2014-10-21 21:49:23 +02:00
Andreas c43eb02efd Android Remote: Add global search. 2014-10-21 18:07:02 +02:00
Chocobozzz 50b7b7d889 Make format after update to avoid conflicts 2014-10-15 21:57:57 +02:00
David Sansome 88a6300509 Completely revert the Spotify seeking stuff - it's hacky and I don't like
waiting 4 seconds to have my songs start.  I'll reimplement it properly later.

Reverts commits 96387803cd and 160b151652.
2014-10-14 19:33:03 +11:00
Arnaud Bienner f81fa2d119 Add the ability to remove tracks from Spotify playlists 2014-09-28 02:00:32 +02:00
Arnaud Bienner 39db4dbefe Add the ability to add a Spotify track to a Spotify playlist through context menu.
TODO: drag and drop (i.e. implement DropMimeData), update special playlist (Favorites), remove from playlist.
2014-09-22 22:40:21 +02:00
David Sansome eaad4c32ee Merge branch 'gstreamer-1.2'
Fixes #3332
2014-09-22 22:45:28 +10:00
David Sansome bb08a0f416 Fix misleading offset_bytes names 2014-09-22 00:13:00 +10:00
David Sansome 3f0dc01b06 Make Spotify work with gstreamer-1.0. 2014-09-21 22:39:30 +10:00
David Sansome a2408f7c0e Merge branch 'master' into gstreamer-1.2
Conflicts:
	src/moodbar/moodbarloader.cpp
2014-09-21 19:39:27 +10:00
David Sansome 6b32ecec27 Various bits for gstreamer-1.0 compatability 2014-09-21 19:38:13 +10:00
Arnaud Bienner 160b151652 Add seek ability to Spotify tracks.
This is functional but pretty hacky.
And, as noted in the comments, there is a small delay (depends, but usually several seconds) to have the seek taken into account. But IMHO it's better than nothing.
Fixes #2503
2014-09-14 02:15:58 +02:00
pie.or.paj cbc6e5cf4d Pause spotify track (issue 2503)
(patch slightly modified, not sure why it wasn't applied before: it looks good to me)
2014-09-06 19:21:23 +02: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
Chocobozzz ef6dd38d0d use unique_ptr instead 2014-06-05 17:42:55 +02:00
Chocobozzz 2595df9779 Change the comment for TagLib::MPEG:File 2014-06-05 15:48:20 +02:00
Chocobozzz 357a9ff194 Fix memory leak in tagreader 2014-06-05 15:47:14 +02:00
David Sansome 0bf911aec4 Clean up the stream if ownership isn't taken by a taglib file. 2014-06-05 20:20:57 +10:00
Andreas f52e48c956 Send filesize and file count in advance when client wants to download songs. 2014-05-10 14:53:38 +02:00
Andreas 24481ae7bc Clementine Remote can now download all urls that are in the library. 2014-05-08 19:17:58 +02:00
John Maguire 41e9c15248 Add arraysize macro from Chromium 2014-04-29 14:11:52 +02:00
John Maguire 30d1c2f8db Remove Ubuntu One support.
http://blog.canonical.com/2014/04/02/shutting-down-ubuntu-one-file-services/
2014-04-02 16:02:00 +02:00
John Maguire 192b60d965 Use nullptr as parent parameter default everywhere 2014-02-10 16:03:54 +01:00
John Maguire 3323c2d094 Convert all instances of foreach() to a C++11 for
find ext src -name '*.cpp' -exec \
    sed -i -e 's/foreach(\([^,]\+\),/for (\1 :/' {} \;
2014-02-10 14:43:32 +01: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 1ac3f53a89 Build spotify blob as c++11 2014-02-06 18:06:25 +01:00
John Maguire 71893e4847 Use nullptr instead of NULL everywhere. 2014-02-06 17:29:59 +01:00
John Maguire d309d4ab27 Use c++11 instead of boost where possible. 2014-02-06 16:51:39 +01:00
David Sansome 5ac83bd463 Merge branch 'master' into gstreamer-1.2 2014-01-25 00:24:31 +11:00
Andreas 8ff0692809 Network remote: send md5 hash along with library and files. 2013-12-31 15:26:42 +01:00
Martin Brodbeck b5eb77528b Don't use TPE1 for performer 2013-12-19 14:03:23 +01:00
Martin Brodbeck a8ae737bce Improved file type detection for Ogg/Opus 2013-12-16 13:45:25 +01:00
Martin Brodbeck 587fa39dad Improved embedded cover handling for Ogg METADATA_BLOCK_PICTURE 2013-12-11 14:30:27 +01:00
Martin Brodbeck 818a028739 Added rudimentary support for METADATA_BLOCK_PICTURE tag 2013-12-10 15:39:43 +01:00
Andreas 03a4145082 Check if track position is valid before sending. Bump protocol version. 2013-12-08 20:19:25 +01:00
John Maguire cc43e339c1 Use boost function for compatibility 2013-11-22 11:53:47 +00:00
John Maguire b17b075361 Compile fixes for 10.9 2013-11-21 17:59:31 +00:00
Andreas 7470f67acf - Fix remove songs from playlist in network remote.
- Update protocol buffer version.
2013-10-31 19:52:02 +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
Andreas 9237356e33 - Send songrating to client.
- Receive songrating as float (like saved in Song).
- On RemoteClient destructor check if socket is still connected before calling waitForDisconnect()
2013-09-22 12:06:19 +02:00
David Sansome f0b9120c43 Create a Fatal logging level, and use it when sqlite symbols can't be resolved. 2013-09-18 00:15:46 +10:00
Andreas 1254d025ab Include rate song feature in network remote. 2013-08-15 20:52:12 +02:00
Arnaud Bienner 8ddba1dfb5 Make ConvertPOPMRating works with slightly different POPM rating scheme for 5 stars. Fix issue 3794. 2013-08-02 22:13:29 +02:00
Arnaud Bienner c32408eded Fix ConvertToPOPMRating 2013-08-02 22:09:46 +02:00
Andreas 3a309e9b25 Added message to retrive the library (table songs). 2013-08-01 18:13:14 +02:00
Andreas 0785214949 - Do not offer streams to download clients.
- Move Google Play logo and qr code to the middle of the settings screen.
2013-07-27 14:13:02 +02:00
Andreas cf1dfe0d58 Clementine will offer a song before download first. The client can deceide if it want to download it or not. Only when the client accepted the file, Clementine sends it. 2013-07-23 16:59:50 +02:00
Andreas 1e4819f2df Add stop after current track feature to network remote. 2013-07-20 19:38:37 +02:00
Andreas f67083c92e Network remote: Each song will be send after client confirms that the previous track was received. Saves a lot of memory especially when sendings lossless files. 2013-07-18 11:28:53 +02:00
Andreas c09d77f413 Network remote can now send songs to clients. 2013-07-12 12:31:27 +02:00
Andreas 9e0b877e5a The network remote can now send lyrics to clients. 2013-07-10 13:24:23 +02:00
Andreas 7406057e5f Bump proto version, so users have to update Clementine in order to use the new features. 2013-05-07 18:33:45 +02:00
Andreas 4bb433e912 - Correct filename in coverexport when textfield is empty.
- Network clients can now love and ban tracks.
2013-05-07 17:57:53 +02:00
Andreas 5fe0f3402a New requests for opening and closing playlists in the network remote. 2013-04-20 16:11:57 +02:00
Andreas 8888cc410a Send closed playlists too if requested. 2013-04-16 13:57:04 +02:00
pie.or.paj 18e8d6ca20 - Added basic playlist management (add and remove tracks) in network remote. 2013-04-13 11:57:05 +02:00
Arnaud Bienner 88918d45c5 Update issue 1175:
Save rating and statistics in two distinct ways, and let users activate them separately in preferences.
2013-03-30 23:42:29 +01:00
Andreas a79834755b Change connect message handling. 2013-03-27 16:54:02 +01:00
Andreas 8251b53411 Merge branch 'master' of https://code.google.com/p/clementine-player 2013-03-21 16:15:38 +01:00
Andreas 7939890545 - Send the playlisttracks from the currenly active one in SendFirstData().
- New proto type FIRST_DATA_SENT_COMPLETE: Is send, when the method SendFirstData() finishes.
2013-03-21 16:14:13 +01:00
John Maguire a459eff0d3 Support audio/x-flac as a mime type for FLAC files. 2013-03-21 14:03:41 +01:00
Andreas be68c9f702 If use auth code is enabled, check if the client has sent the correct auth code before processing any messages. 2013-03-21 10:57:52 +01:00
Andreas ed86c7b09b - New protocol buffer type: ACTIVE_PLAYLIST_CHANGED. This type is sent when the currenly active playlist changes instead of sending all playlists to the clients. 2013-03-20 15:57:22 +01:00
Arnaud Bienner 8450a9ded0 Try to fix Windows build 2013-03-18 23:41:01 +01:00
Arnaud Bienner 77c6a22962 Write/Read score to/from files' tags, as "Amarok score" as we use the same algorithm 2013-03-15 22:54:59 +01:00
Uwe Klotz a6d3b48231 Extend tag support: performer, grouping
The transaction handling while upgrading the database schema had to be revised.
Furthermore some QSqlQuery statements needed to be finished properly.

Fixes issue 2556
2013-03-10 18:16:03 +11:00
Arnaud Bienner 1abadaf8fd Use constants 2013-03-03 00:49:51 +01:00
Arnaud Bienner 0b6e91daea FMPS support for MP4 files 2013-03-03 00:18:59 +01:00
Arnaud Bienner f04923210d FMPS support for ASF files 2013-03-02 23:54:54 +01:00
Arnaud Bienner b0d643cbd9 Save/read FMPS tags to/from FLAC using Vorbis comments + some refactoring to parse VorbisComments in a unique place, when possible. 2013-03-02 00:03:51 +01:00
Arnaud Bienner 1386a54d78 Read/Write FMPS tags for Ogg files 2013-02-28 20:55:21 +01:00
Arnaud Bienner 16793744c0 Read and write POPM tags 2013-02-28 02:17:15 +01:00
John Maguire dd59aaada0 Delete closures if the receiver is deleted. 2013-02-26 16:27:44 +01:00
Arnaud Bienner 08d40f5fca Handle statistics tags apart, and write them to file when they change.
Next step: add a preference to activate this (should be deactivated by default IMO).
2013-02-24 17:45:25 +01:00
Arnaud Bienner 39e1275980 Write FMPS metadata (rating, playcount) to MP3 files in tagreader + corresponding test cases 2013-02-23 20:12:17 +01:00
Arnaud Bienner ba1a3f45ec Fix the build 2013-02-23 01:02:36 +01:00
Arnaud Bienner 3fb041ff03 Ooops... I forgot tagreader files :/ 2013-02-23 00:02:02 +01:00
Arnaud Bienner 47c9153fe2 Move everything about reading/writing tags from tagreaderworker to a new tagreader class.
Re-activate Song tests.
2013-02-22 23:57:31 +01:00
John Maguire b3d5c3e6e2 Remove unused variables. 2013-02-12 12:23:29 +01:00
Andreas 589816e82c - Added various playlist signals.
- Bump Proto version to 3, so that people update Clementine when using new Android App Version is released.
2013-02-07 21:34:04 +01:00
John Maguire 53608665e4 Merge branch 'master' of https://code.google.com/r/asfa194-clementineremote 2013-01-28 15:41:51 +01:00
Martin Brodbeck d05041dfa1 Add support for Opus tags. 2013-01-26 11:18:24 +00:00
Andreas 9472c5ace2 - Fixed a bug where clementine crashed when restarting the server (e.g. changed setting). Cause by wrong connect statement.
- Added set track position feature in proto
- Added authentication method
- Clementine sends now a disconnect message when closed
2013-01-23 20:02:12 +01:00
Andreas 0828115c74 - Display a qr code in the remote control settings to download the android app
- Transfer the current track position to clients
2013-01-22 22:02:16 +01:00
Chris Throup 6cb083be30 Read comments from MP4 tags. 2013-01-22 08:58:28 +00:00
Chris Throup f41d333788 Read and write extra metadata for MP4 tags. Fixes issue 222.
Now writes album artist, disc number, composer, compilation and bpm.
Now reads disc number and composer.
Previously read album artist.
Unconfirmed read for compilation and bpm.
2013-01-21 09:16:18 +00:00
Andreas 51ba9f47dc added repeat and shuffe functionality 2013-01-15 14:43:02 +01:00
Andreas 0a97623df3 Changed sending playlist songs 2013-01-15 14:03:00 +01:00
John Maguire 06568248fc Tidy up some remote control protobuf usage and style quirks. 2013-01-15 13:05:43 +01:00
Andreas 8cb0b3d349 fixed commit 2013-01-14 22:00:56 +01:00
Andreas 570b4f9e88 Corrected proto 2013-01-14 21:42:08 +01:00
Andreas aa8d512444 Merge remote-tracking branch 'remote/remotecontrol'
Conflicts:
	ext/libclementine-remote/remotecontrolmessages.proto
	src/networkremote/networkremote.cpp
2013-01-14 21:39:01 +01:00
Andreas 516e58fbc9 Changed proto 2013-01-14 19:07:34 +01:00
John Maguire d1a1f70bf9 Make version and msgType optional for better backwards-compatibility. 2013-01-14 16:53:57 +01:00
John Maguire 088d179e9b Add UNKNOWN to remote control proto to make backwards compatible changes
easier later.
2013-01-14 16:50:00 +01:00
John Maguire 555467e764 Tidy up remote control protobuf. 2013-01-14 16:17:36 +01:00
Andreas e915d2e993 Transfer coverart without base64 2013-01-14 16:09:22 +01:00
Andreas 6bb02d2731 Transfer coverart without base64 2013-01-12 17:22:40 +01:00
Andreas 04ccdbbf08 added version to protocol buffer message
changed client handling
only non public ips can connect (can change that in options)
2013-01-10 21:21:55 +01:00
Andreas c732e70511 multiclient support and shuffle feature 2013-01-09 20:07:28 +01:00
Andreas fe0c1b5206 Changed xml to protocol buffers 2013-01-03 21:40:47 +01:00
John Maguire 195e1cb2ad Support arbitrary return type in closure for member function pointer. 2012-12-13 16:55:23 +01:00
John Maguire 020f08438f Support member function pointers in Closure.
Bonus: type-safe slots
2012-12-13 16:27:55 +01:00
John Maguire 94f76a9d08 Support function pointers and std functions with arguments in Closure. 2012-12-13 16:13:38 +01:00
John Maguire 919e9215c4 Support indexing files from Skydrive. 2012-12-13 14:27:21 +01:00
John Maguire 62e3e4cb91 Support WMA in cloud services. 2012-12-07 12:07:43 +01:00
John Maguire 941aaca87c Refactor cloud tagging into base class. 2012-12-06 14:23:27 +01:00
John Maguire 951cac2ad6 Use changes API instead of search API in Google Drive. 2012-12-05 14:17:03 +00:00
John Maguire 18c7f3d5ed Support m4a and flac in dropbox. 2012-11-30 16:56:23 +01:00
John Maguire 90bb00939b Don't ignore HTTP errors when reading tags from cloud providers. 2012-11-30 16:12:12 +01:00
John Maguire 8e91e42dcc Add dropbox files locally after tagging and make them playable. 2012-11-29 20:48:34 +01:00
John Maguire 3c9b3d99e6 Read tags from dropbox files. 2012-11-29 20:48:34 +01:00
John Maguire 6c5e831a7d Remove tag encoding detection as we don't really use it anymore. 2012-11-29 13:41:20 +01:00
John Maguire 1981fd0b7e Fix minimal build. 2012-11-29 12:17:47 +01:00
John Maguire bd899b382d Range-based for loops not supported in GCC 4.4. 2012-11-28 17:34:54 +01:00
John Maguire 9c7a3ab105 Rename google drive tagging methods to more appropriate generic names. 2012-11-28 16:34:10 +01:00
John Maguire 210f978188 Rename GoogleDriveStream -> CloudStream. 2012-11-28 16:25:57 +01:00
John Maguire db586ca00e Read tags from Ubuntu One files and add to local database. 2012-11-28 14:43:03 +01:00
John Maguire c294098aef Use tr1 for mac compatibility 2012-11-26 10:10:20 +01:00
John Maguire 11f664083a Add support for standard function callbacks in NewClosure (including C++11 lambdas). 2012-11-26 09:41:26 +01:00
John Maguire 4e9231976e Unpack variadic arguments into QGenericArguments without boost::tuple. 2012-11-22 17:57:26 +01:00
John Maguire 8171192df5 Port Closure to variadic templates. 2012-11-22 17:19:04 +01:00
Arnaud Bienner c848d311b8 Remove useless comment now we have variadic templates for ConcurrentRun 2012-11-22 02:08:59 +01:00
John Maguire fddce90624 Use boost::bind & boost::function instead of std equivalents for better compatibility. 2012-11-21 17:17:37 +01:00
John Maguire 1fd0515168 Make variadic version of ConcurrentRun::Run() 2012-11-21 16:39:10 +01:00
John Maguire a12ffa829e Try C++0x instead of C++11 for older compilers. 2012-11-19 19:38:29 +01:00
John Maguire e5d02fddb6 Enable C++11 for Clementine & libclementine 2012-11-13 17:03:53 +01:00
David Sansome 36ac3a2ec0 Use the full protobuf instead of protobuf-lite, to hopefully fix
a crash on Windows.
2012-11-12 18:16:35 +11:00
David Sansome 95df1a4c25 Remove a useless message copy 2012-11-07 09:18:49 +11:00
Veniamin Gvozdikov 3542357636 Fix linking clementine-tagreader on FreeBSD.
Fixes issue #3245
2012-10-31 13:30:23 +01:00
Arnaud Bienner 09596e3732 Don't get stuck when exiting Clementine while library is being created/updated 2012-08-30 00:01:28 +02:00
John Maguire a55cbc838f Merge branch 'master' into drive 2012-08-09 12:59:09 -07:00
David Sansome 5845b069a3 Use a sensible spotify settings directory on Windows instead of C:\HKEY_CURRENT_USER\... ಠ_ಠ 2012-08-04 17:16:06 +01:00
John Maguire 94878b4bd2 Slightly hacky support for AAC on Google Drive. 2012-07-31 17:57:17 +02:00
John Maguire e06ae8a282 Support reading OGG & FLAC files from Google Drive. 2012-07-31 15:18:14 +02:00
John Maguire 08286102da Precache the first and last parts of Google Drive MP3s to reduce the
number of requests when using accurate tagging.
2012-07-30 13:41:29 +02:00
David Sansome 9653a45f66 Read Google Drive metadata in the tagreader worker process 2012-07-28 19:35:12 +01:00
Arnaud Bienner eded1daca1 Correct typo in comments 2012-07-16 00:39:00 +02:00
Arnaud Bienner 20987e140d Oops: missing to update CMakeList.txt 2012-07-16 00:21:56 +02:00
Arnaud Bienner 0e3dc5a8be Add new ConcurrentRun templates for void functions, and functions with 3 arguments + corresponding test cases.
+ SongLoader now has its own QThreadPool to load folders/playlist in background.
Update issue 2598
This should fix slowliness problems reported.
2012-07-16 00:06:55 +02:00
John Maguire 58a3a6831a Move loading of devices from the database onto a different thread. 2012-06-29 16:56:17 +02:00
David Sansome 1c338455c3 Add missing copyright headers 2012-06-23 11:31:48 +01:00
John Maguire b9d2d3326d Only support override in Clang. 2012-06-21 16:13:41 +02:00
John Maguire 09d37aaa01 Add OVERRIDE macro like Java's @Override. 2012-06-20 16:49:41 +02:00
John Maguire 215595bfdb Support toplist browsing in spotify blob. 2012-06-12 15:34:23 +02:00
David Sansome 5984aecbb8 Make the spotify blob send 5 seconds of audio ahead of the clock time to fill up Clementine's buffer when starting playback. Fixes issue 2671 2012-06-09 17:52:39 +01:00
John Maguire 9dd4f31795 Use libspotify 12.1.45.
Fixes issue #2972
2012-06-07 12:35:24 +02:00
Arnaud Bienner dcc26b01ff Correct define guard's name 2012-04-25 01:22:30 +02:00
Arnaud Bienner 01daea7090 Commit missing modifications/change ConcurrentRun description a bit 2012-04-25 00:29:19 +02:00
Arnaud Bienner 76b98000fe Add ConcurrentRun functions, and us one of them in gstenginepipeline with gstenginepipeline's own threadpool.
So now we can (finally!) play/pause/stop music while fingerprinting lot of songs or whatever else
2012-04-25 00:21:01 +02:00
Arnaud Bienner fbda1f9489 Add a debug message when TagLib can't read a file 2012-04-25 00:10:40 +02:00
John Maguire 66c8d6d360 Tidy up a bit. 2012-04-13 15:53:17 +02:00
John Maguire 133c2e1640 Postpone the database check & backup to a little while after startup. 2012-04-13 15:49:56 +02:00
David Sansome 1c80cfbadb Use libspotify 11.1.56 2012-03-27 22:01:37 +01:00
John Maguire a09165c392 Make it more obviously wrong to use the Closure internals. 2012-03-20 15:14:44 +01:00
John Maguire e4ae4b6df5 Remove poor man's static asserts. 2012-03-19 21:19:24 +01:00
John Maguire c4d3062459 Make the SharedClosure implementation a bit less horrible. 2012-03-19 21:17:57 +01:00
David Sansome d7a5af07fb Copy+paste the shared pointer closure constructor a couple of times for different numbers of arguments. 2012-03-19 19:38:36 +00:00
John Maguire e1d77e0124 Add support for QSharedPointer in Closure. 2012-03-19 19:37:57 +01:00
David Sansome b9e08bbfe6 Update podcasts on a schedule and on demand. Update them immediately after subscribing, and make episodes appear in the tree. 2012-03-09 15:26:15 +00:00
David Sansome b53578c490 Don't reset a song's rating back to 0 if it was edited in the EditTagDialog 2012-03-04 13:36:22 +00:00
John Maguire 5280ddf3d7 Add support for demangling symbols on Linux. 2012-02-02 15:50:42 +01:00
David Sansome f213813e71 Load cover art from MP4 files 2012-01-29 19:51:58 +00:00
David Sansome 34a24971c5 Don't try to restart a worker while killing it. 2012-01-22 18:53:17 +00:00
David Sansome 694ffe42df Don't send messages to a handler in the time between its socket closing and its process ending. Fixes a race condition that would result in a tag loading operation never completing. Fixes issue 2616 2012-01-22 18:53:17 +00:00
David Sansome 58c0f464cd Queue messages in WorkerPool instead of in each individual handler, so the entire queue isn't lost if a worker crashes. 2012-01-22 18:53:17 +00:00
David Sansome 84a1ae2f87 Add some debugging code to the tagreader worker that makes it crash randomly. 2012-01-22 18:53:17 +00:00
John Maguire 0212a1fa91 D'oh 2012-01-17 21:29:20 -08:00
John Maguire 4f6ee57297 Apparently <execinfo.h> doesn't exist for mingw. 2012-01-17 20:57:56 -08:00
John Maguire ab58c72c66 ifdef DumpStackTrace() for non-Unix. 2012-01-17 20:45:33 -08:00
John Maguire 5fe7d1ad20 Add stack trace dumper (might need some tweaks for win & Linux still). 2012-01-17 20:35:10 -08:00
David Sansome 3e0f252b34 Exit worker processes when their sockets are closed, and make sure the main app closes sockets when exiting - fixes a crash dialog on Windows. 2012-01-08 16:35:01 +00:00
David Sansome bbf99fdd0b Change Spotify to use the new MessageHandler, remove SpotifyMessageHandler 2012-01-08 15:10:11 +00:00
David Sansome 67c6dead5a Rename SpotifyMessage to Message 2012-01-07 23:31:43 +00:00
David Sansome 68a379ef26 Use pb::spotify instead of spotify_pb for the protobuf namespace 2012-01-07 23:26:27 +00:00
David Sansome 9be641ee87 The external tagreader mostly works now:
* Make TagReaderClient a singleton until it's easier to pass dependencies around
 * Add a WaitForSignal() that uses a local event loop to wait for a signal to be emitted
 * Add a WaitForFinished() to _MessageReplyBase that blocks using a semaphore
 * Add blocking versions of all TagReaderClient methods
 * Use the TagReaderClient everywhere that Song::InitFromFile and friends were used before
2012-01-07 00:26:07 +00:00
David Sansome 9041117867 Move everything around in the source tree - static libraries and external binaries now go in "ext/". Add a generic worker pool. 2012-01-05 23:25:13 +00:00