diff options
author | Max Kellermann <max@duempel.org> | 2014-01-29 20:16:43 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-01-30 18:47:05 +0100 |
commit | c6725884bc155da431889468c86c546f0f64f9a1 (patch) | |
tree | 61d89751ecc98db9600620ac1788f32dea9214e1 /src/db/update/UpdateRemove.cxx | |
parent | a31738f6f1473f4f621bc16513ed0c6024749389 (diff) | |
download | mpd-c6725884bc155da431889468c86c546f0f64f9a1.tar.gz mpd-c6725884bc155da431889468c86c546f0f64f9a1.tar.xz mpd-c6725884bc155da431889468c86c546f0f64f9a1.zip |
db/update: convert to OO API
Move global variables into the new classes. That may allow multiple
update threads for multiple databases one day.
Diffstat (limited to 'src/db/update/UpdateRemove.cxx')
-rw-r--r-- | src/db/update/UpdateRemove.cxx | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/src/db/update/UpdateRemove.cxx b/src/db/update/UpdateRemove.cxx deleted file mode 100644 index c57758aef..000000000 --- a/src/db/update/UpdateRemove.cxx +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2003-2014 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" /* must be first for large file support */ -#include "UpdateRemove.hxx" -#include "UpdateDomain.hxx" -#include "GlobalEvents.hxx" -#include "thread/Mutex.hxx" -#include "thread/Cond.hxx" -#include "db/Song.hxx" -#include "db/LightSong.hxx" -#include "Main.hxx" -#include "Instance.hxx" -#include "Log.hxx" - -#ifdef ENABLE_SQLITE -#include "sticker/StickerDatabase.hxx" -#include "sticker/SongSticker.hxx" -#endif - -#include <assert.h> - -static const Song *removed_song; - -static Mutex remove_mutex; -static Cond remove_cond; - -/** - * Safely remove a song from the database. This must be done in the - * main task, to be sure that there is no pointer left to it. - */ -static void -song_remove_event(void) -{ - assert(removed_song != nullptr); - - { - const auto uri = removed_song->GetURI(); - FormatDefault(update_domain, "removing %s", uri.c_str()); - } - -#ifdef ENABLE_SQLITE - /* if the song has a sticker, remove it */ - if (sticker_enabled()) - sticker_song_delete(removed_song->Export()); -#endif - - { - const auto uri = removed_song->GetURI(); - instance->DeleteSong(uri.c_str()); - } - - /* clear "removed_song" and send signal to update thread */ - remove_mutex.lock(); - removed_song = nullptr; - remove_cond.signal(); - remove_mutex.unlock(); -} - -void -update_remove_global_init(void) -{ - GlobalEvents::Register(GlobalEvents::DELETE, song_remove_event); -} - -void -update_remove_song(const Song *song) -{ - assert(removed_song == nullptr); - - removed_song = song; - - GlobalEvents::Emit(GlobalEvents::DELETE); - - remove_mutex.lock(); - - while (removed_song != nullptr) - remove_cond.wait(remove_mutex); - - remove_mutex.unlock(); -} |