Help - Search - Members - Calendar
Full Version: Some basic questions
Hydrogenaudio Forums > Hosted Forums > foobar2000 > Development - (fb2k)
sriram
I'm trying to develop a component, and I have some basic questions. I am more experienced with C rather than C++, and templates are rather new to me, so forgive me if I'm making some basic mistakes.

This is my code, adapted from the tutorial.

CODE

#include "../SDK/foobar2000.h"
#include "../helpers/helpers.h"

DECLARE_COMPONENT_VERSION("test","0.0.1","test\n")

class tester : public play_callback, public initquit
{
private:

// Is this OK?
service_ptr_t<titleformat_object> script;

public:

virtual void on_init();
virtual void on_quit();

virtual void on_playback_new_track(metadb_handle_ptr p_track);
virtual void on_playback_stop(play_control::t_stop_reason p_reason) {}
virtual void on_playback_time(double p_time) {}
virtual void on_playback_pause(bool p_state) {}
virtual void on_playback_dynamic_info_track(const file_info & p_info) {}
virtual void on_playback_starting(play_control::t_track_command p_command,bool p_paused) {}
virtual void on_playback_seek(double p_time) {}
virtual void on_playback_edited(metadb_handle_ptr p_track) {}
virtual void on_playback_dynamic_info(const file_info & p_info) {}
virtual void on_volume_change(float p_new_val) {}
};

void tester::on_init() {
static_api_ptr_t<play_callback_manager>()->register_callback(this, flag_on_playback_new_track, true);

static_api_ptr_t<titleformat_compiler>()->compile_safe(script,"%title%");

}

void tester::on_quit() {
static_api_ptr_t<play_callback_manager>()->unregister_callback(this);
}

void tester::on_playback_new_track(metadb_handle_ptr p_track) {
pfc::string8 out;
p_track->format_title(NULL,out,script,NULL);
console::print(out);
}

static initquit_factory_t< tester > g_test;


Is having this: "service_ptr_t<titleformat_object> script;" ok, since it is inside a static class?

Is there anything (else) wrong with the above code wink.gif ?
foosion
You'll have to release the titleformat_object in the "script" member in your on_quit() handler.
sriram
thanks smile.gif

another quick question.

I have created a uie::window using:

static uie::window_factory<uie_test> g_uie_test;

uie_test has two methods - on_init() and on_quit(). How do I call the on_init and on_quit methods from here:

CODE

static uie::window_factory<uie_test> g_uie_test;

class initquit_test : public initquit {
    virtual void on_init() {
               //?????????
    }

    virtual void on_quit() {
               //??????
    }
};

static initquit_factory_t< initquit_test > foo_initquit;
foosion
Try
CODE
g_uie_text.get_static_instance().on_init();
sriram
thanks. that works for a single instance window, but how would I do the same for a multiple instance window?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.