libsaria: Take idle callback func during libsaria init

This allows me to enable the idle queue if the function pointer is not
NULL.

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-03-11 11:20:16 -04:00
parent ca35bfd46f
commit c0df8f2e2b
3 changed files with 25 additions and 19 deletions

View File

@ -5,7 +5,7 @@
namespace libsaria
{
void init(string, int, char **);
void init(string, void (*)(int), int, char **);
void quit();
libsaria::Track *current_track();

View File

@ -3,6 +3,7 @@
#include <libsaria/libsaria.h>
#include <libsaria/prefs.h>
#include <libsaria/idle.h>
#include <libsaria/fs.h>
/*#include <libsaria/audio.h>
#include <libsaria/path.h>
@ -17,7 +18,7 @@
namespace libsaria
{
void init(string name, int argc, char **argv)
void init(string name, void (*idle_func)(int), int argc, char **argv)
{
srand( time(NULL) );
println("Initializing libsaria");
@ -25,8 +26,10 @@ namespace libsaria
app::init(name);
prefs::init();
/*libsaria::prefs::load();
audio::init(argc, argv);
if (idle_func)
idle::enable(idle_func);
/*audio::init(argc, argv);
println("saria dir: %s", get_saria_dir().c_str());
make_saria_dir();

View File

@ -1,6 +1,7 @@
// Copyright (c) 2011 Bryan Schumaker
#include <version.h>
#include <libsaria/libsaria.h>
#include <libsaria/idle.h>
#include <ocarina/ocarina.h>
#include <ocarina/window.h>
@ -30,20 +31,21 @@ void set_path_prefix(string prefix)
println("Path prefix: " + path_prefix);
}
static gboolean idle(gpointer data)
{
libsaria::idle::run_task();
return libsaria::idle::size() != 0;
}
static void idle_add(int size)
{
println("Adding idle callback");
if (size == 1)
g_idle_add(idle, NULL);
}
namespace ocarina
{
/*
static gboolean idle(gpointer data)
{
if (libsaria::idle::run_task() == 0)
return FALSE; *//* There are no idle events left */
/*return TRUE; *//* Process remaining idle events */
/*}
void idle_add()
{
g_idle_add(idle, NULL);
}*/
string full_path(string path)
{
@ -51,8 +53,8 @@ namespace ocarina
println("Expanding to path: " + res);
return res;
}
/*
void init(int argc, char **argv)
/*void init(int argc, char **argv)
{
window::init("Ocarina " + vers_str(), full_path("images/ocarina.png"));
window_add(get_tabs());
@ -82,10 +84,11 @@ int main(int argc, char **argv)
println("Ocarina " + vers_str());
set_path_prefix(argv[0]);
libsaria::init("ocarina", argc, argv);
libsaria::init("ocarina", idle_add, argc, argv);
init(argc, argv);
gtk_main();
libsaria::quit();
/* setup_callbacks();