libsaria: Create init flags

I eventually plan on creating more cpp binaries that link with libsaria
for pipe actions and other things.  It's helpful to only initialize the
parts of libsaria that I intend to use.

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-03-06 08:26:30 -05:00
parent af2d4833fa
commit d764489e89
3 changed files with 30 additions and 8 deletions

View File

@ -3,9 +3,20 @@
#include <libsaria/track.h>
enum LSInitFlags {
LS_INIT_NONE = (0),
LS_INIT_PREFS = (1 << 0),
LS_INIT_AUDIO = (1 << 1),
LS_INIT_LIBRARY = (1 << 2),
LS_INIT_STACK = (1 << 3),
};
static const unsigned int LS_INIT_EVERYTHING =
LS_INIT_PREFS | LS_INIT_AUDIO | LS_INIT_LIBRARY | LS_INIT_STACK;
namespace libsaria
{
void init(int, char **);
void init(unsigned int, int, char **);
void quit();
libsaria::Track *current_track();

View File

@ -11,25 +11,36 @@
#include <libsaria/index.h>
#include <libsaria/stack.h>
static unsigned int init_flags;
namespace libsaria
{
void init(int argc, char **argv)
void init(unsigned int flags, int argc, char **argv)
{
srand( time(NULL) );
init_flags = flags;
println("Initializing libsaria");
libsaria::prefs::load();
audio::init(argc, argv);
if (init_flags & LS_INIT_PREFS)
libsaria::prefs::load();
if (init_flags & LS_INIT_AUDIO)
audio::init(argc, argv);
println("saria dir: %s", get_saria_dir().c_str());
make_saria_dir();
libsaria::library::init();
libsaria::stack_init();
if (init_flags & LS_INIT_LIBRARY)
libsaria::library::init();
if (init_flags & LS_INIT_STACK)
libsaria::stack_init();
}
void quit()
{
println("Quitting libsaria");
audio::quit();
if (init_flags & LS_INIT_AUDIO)
audio::quit();
print_format_stats();
index::print_stats();
close_pipes();

View File

@ -78,7 +78,7 @@ int main(int argc, char **argv)
println("Ocarina " + vers_str());
set_path_prefix(argv[0]);
libsaria::init(argc, argv);
libsaria::init(LS_INIT_EVERYTHING, argc, argv);
setup_callbacks();
g_thread_init(NULL);