diff options
author | Max Kellermann <max@musicpd.org> | 2016-11-22 13:17:31 +0100 |
---|---|---|
committer | Max Kellermann <max@musicpd.org> | 2016-11-22 13:17:31 +0100 |
commit | bf78b7f81525c819b3711d348d6f7fedfa940bd7 (patch) | |
tree | b301c710a4c29e29b36e088eb4afc365c3f927a3 /src/decoder | |
parent | ffb9874d84727d5375b342c7cc9c55ee3971d410 (diff) |
decoder/sidplay: use template to eliminate duplicate code
Diffstat (limited to 'src/decoder')
-rw-r--r-- | src/decoder/plugins/SidplayDecoderPlugin.cxx | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/src/decoder/plugins/SidplayDecoderPlugin.cxx b/src/decoder/plugins/SidplayDecoderPlugin.cxx index e1bb4ffbb..151a73914 100644 --- a/src/decoder/plugins/SidplayDecoderPlugin.cxx +++ b/src/decoder/plugins/SidplayDecoderPlugin.cxx @@ -142,10 +142,13 @@ ParseContainerPath(Path path_fs) return { path_fs.GetDirectoryName(), track }; } -#ifdef HAVE_SIDPLAYFP - +/** + * This is a template, because libsidplay requires SidTuneMod while + * libsidplayfp requires just a plain Sidtune. + */ +template<typename T> static SignedSongTime -get_song_length(SidTune &tune) +get_song_length(T &tune) { assert(tune.getStatus()); @@ -159,25 +162,6 @@ get_song_length(SidTune &tune) return SignedSongTime::FromS(length); } -#else - -static SignedSongTime -get_song_length(SidTuneMod &tune) -{ - assert(tune); - - if (songlength_database == nullptr) - return SignedSongTime::Negative(); - - const auto length = songlength_database->length(tune); - if (length < 0) - return SignedSongTime::Negative(); - - return SignedSongTime::FromS(length); -} - -#endif - static void sidplay_file_decode(DecoderClient &client, Path path_fs) { |