aboutsummaryrefslogtreecommitdiffstats
path: root/src/Main.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-04-17 22:58:33 +0200
committerMax Kellermann <max@duempel.org>2013-04-17 23:52:58 +0200
commitb2d3d15e978aef2566a1bdae435d71cb326dec4d (patch)
tree769550ce5e624915b9d3129793624583474604ba /src/Main.cxx
parent08dfd263ba496b0c1f6ddbe9b3eefa9a5cea57a4 (diff)
downloadmpd-b2d3d15e978aef2566a1bdae435d71cb326dec4d.tar.gz
mpd-b2d3d15e978aef2566a1bdae435d71cb326dec4d.tar.xz
mpd-b2d3d15e978aef2566a1bdae435d71cb326dec4d.zip
Main: move global variables to struct Instance
More preparations for multi-player support.
Diffstat (limited to 'src/Main.cxx')
-rw-r--r--src/Main.cxx35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/Main.cxx b/src/Main.cxx
index 49f466592..aa0a687fd 100644
--- a/src/Main.cxx
+++ b/src/Main.cxx
@@ -19,6 +19,7 @@
#include "config.h"
#include "Main.hxx"
+#include "Instance.hxx"
#include "CommandLine.hxx"
#include "PlaylistFile.hxx"
#include "PlaylistGlobal.hxx"
@@ -97,9 +98,7 @@ enum {
GThread *main_task;
EventLoop *main_loop;
-ClientList *client_list;
-
-Partition *global_partition;
+Instance *instance;
static StateFile *state_file;
@@ -251,7 +250,7 @@ glue_state_file_init(GError **error_r)
}
state_file = new StateFile(std::move(path_fs), path,
- *global_partition, *main_loop);
+ *instance->partition, *main_loop);
g_free(path);
state_file->Read();
@@ -331,9 +330,10 @@ initialize_decoder_and_player(void)
config_get_positive(CONF_MAX_PLAYLIST_LENGTH,
DEFAULT_PLAYLIST_MAX_LENGTH);
- global_partition = new Partition(max_length,
- buffered_chunks,
- buffered_before_play);
+ instance->partition = new Partition(*instance,
+ max_length,
+ buffered_chunks,
+ buffered_before_play);
}
/**
@@ -346,7 +346,7 @@ idle_event_emitted(void)
clients */
unsigned flags = idle_get();
if (flags != 0)
- client_list->IdleAdd(flags);
+ instance->client_list->IdleAdd(flags);
if (flags & (IDLE_PLAYLIST|IDLE_PLAYER|IDLE_MIXER|IDLE_OUTPUT))
state_file->CheckModified();
@@ -421,8 +421,10 @@ int mpd_main(int argc, char *argv[])
main_task = g_thread_self();
main_loop = new EventLoop(EventLoop::Default());
+ instance = new Instance();
+
const unsigned max_clients = config_get_positive(CONF_MAX_CONN, 10);
- client_list = new ClientList(max_clients);
+ instance->client_list = new ClientList(max_clients);
success = listen_global_init(&error);
if (!success) {
@@ -469,7 +471,7 @@ int mpd_main(int argc, char *argv[])
initialize_decoder_and_player();
volume_init();
initAudioConfig();
- audio_output_all_init(&global_partition->pc);
+ audio_output_all_init(&instance->partition->pc);
client_manager_init();
replay_gain_global_init();
@@ -495,7 +497,7 @@ int mpd_main(int argc, char *argv[])
ZeroconfInit(*main_loop);
- player_create(&global_partition->pc);
+ player_create(&instance->partition->pc);
if (create_db) {
/* the database failed to load: recreate the
@@ -511,7 +513,7 @@ int mpd_main(int argc, char *argv[])
return EXIT_FAILURE;
}
- audio_output_all_set_replay_gain_mode(replay_gain_get_real_mode(global_partition->playlist.queue.random));
+ audio_output_all_set_replay_gain_mode(replay_gain_get_real_mode(instance->partition->playlist.queue.random));
success = config_get_bool(CONF_AUTO_UPDATE, false);
#ifdef ENABLE_INOTIFY
@@ -527,7 +529,7 @@ int mpd_main(int argc, char *argv[])
/* enable all audio outputs (if not already done by
playlist_state_restore() */
- global_partition->pc.UpdateAudio();
+ instance->partition->pc.UpdateAudio();
#ifdef WIN32
win32_app_started();
@@ -551,10 +553,10 @@ int mpd_main(int argc, char *argv[])
delete state_file;
}
- global_partition->pc.Kill();
+ instance->partition->pc.Kill();
ZeroconfDeinit();
listen_global_finish();
- delete client_list;
+ delete instance->client_list;
start = clock();
DatabaseGlobalDeinit();
@@ -572,7 +574,7 @@ int mpd_main(int argc, char *argv[])
audio_output_all_finish();
volume_finish();
mapper_finish();
- delete global_partition;
+ delete instance->partition;
command_finish();
update_global_finish();
decoder_plugin_deinit_all();
@@ -582,6 +584,7 @@ int mpd_main(int argc, char *argv[])
config_global_finish();
stats_global_finish();
io_thread_deinit();
+ delete instance;
delete main_loop;
daemonize_finish();
#ifdef WIN32