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