gst: Move the on_message() function out of the driver
This function doesn't use anything in the driver class anymore, so it can be removed. Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
955129edce
commit
3da3c8aeea
38
gui/gst.cpp
38
gui/gst.cpp
|
@ -10,7 +10,7 @@ static GstBus *gst_bus;
|
||||||
static GstElement *gst_player;
|
static GstElement *gst_player;
|
||||||
|
|
||||||
|
|
||||||
bool gst_change_state(GstState state)
|
static bool gst_change_state(GstState state)
|
||||||
{
|
{
|
||||||
GstStateChangeReturn ret = gst_element_set_state(gst_player, state);
|
GstStateChangeReturn ret = gst_element_set_state(gst_player, state);
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
|
@ -31,15 +31,11 @@ bool gst_change_state(GstState state)
|
||||||
*/
|
*/
|
||||||
class GSTDriver : public Driver
|
class GSTDriver : public Driver
|
||||||
{
|
{
|
||||||
private:
|
|
||||||
std::string cur_file;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void load(const std::string &filepath)
|
void load(const std::string &filepath)
|
||||||
{
|
{
|
||||||
gchar *uri;
|
gchar *uri;
|
||||||
|
|
||||||
cur_file = filepath;
|
|
||||||
gst_change_state(GST_STATE_NULL);
|
gst_change_state(GST_STATE_NULL);
|
||||||
uri = gst_filename_to_uri(filepath.c_str(), NULL);
|
uri = gst_filename_to_uri(filepath.c_str(), NULL);
|
||||||
g_object_set(G_OBJECT(gst_player), "uri", uri, NULL);
|
g_object_set(G_OBJECT(gst_player), "uri", uri, NULL);
|
||||||
|
@ -86,41 +82,29 @@ public:
|
||||||
return duration;
|
return duration;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called to handle messages from the GStreamer bus.
|
|
||||||
* @param message The message to be handled.
|
|
||||||
*/
|
|
||||||
void on_message(GstMessage *);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static GSTDriver *gst_driver;
|
static GSTDriver *gst_driver;
|
||||||
|
|
||||||
static gboolean on_gst_message(GstBus *bus, GstMessage *message, gpointer data)
|
|
||||||
{
|
|
||||||
GSTDriver *driver = (GSTDriver *)data;
|
|
||||||
driver->on_message(message);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void parse_gst_error(GstMessage *error, const std::string filepath)
|
static void parse_gst_error(GstMessage *error)
|
||||||
{
|
{
|
||||||
GError *err;
|
GError *err;
|
||||||
gchar *debug;
|
Track *track = audio :: current_track();
|
||||||
|
|
||||||
gst_message_parse_error(error, &err, &debug);
|
gst_message_parse_error(error, &err, NULL);
|
||||||
g_print("Error playing file: %s\n", filepath.c_str());
|
|
||||||
|
if (track)
|
||||||
|
g_print("Error playing file: %s\n", track->path().c_str());
|
||||||
g_print("Error: %s\n", err->message);
|
g_print("Error: %s\n", err->message);
|
||||||
g_error_free(err);
|
g_error_free(err);
|
||||||
g_free(debug);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSTDriver :: on_message(GstMessage *message)
|
static gboolean on_gst_message(GstBus *bus, GstMessage *message, gpointer data)
|
||||||
{
|
{
|
||||||
switch (GST_MESSAGE_TYPE(message)) {
|
switch (GST_MESSAGE_TYPE(message)) {
|
||||||
case GST_MESSAGE_ERROR:
|
case GST_MESSAGE_ERROR:
|
||||||
parse_gst_error(message, cur_file);
|
parse_gst_error(message);
|
||||||
audio :: next();
|
audio :: next();
|
||||||
break;
|
break;
|
||||||
case GST_MESSAGE_EOS:
|
case GST_MESSAGE_EOS:
|
||||||
|
@ -129,6 +113,8 @@ void GSTDriver :: on_message(GstMessage *message)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -140,7 +126,7 @@ void init_gst(int *argc, char ***argv)
|
||||||
gst_bus = gst_pipeline_get_bus(GST_PIPELINE(gst_player));
|
gst_bus = gst_pipeline_get_bus(GST_PIPELINE(gst_player));
|
||||||
gst_driver = new GSTDriver();
|
gst_driver = new GSTDriver();
|
||||||
|
|
||||||
gst_bus_add_watch(gst_bus, on_gst_message, gst_driver);
|
gst_bus_add_watch(gst_bus, on_gst_message, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void quit_gst()
|
void quit_gst()
|
||||||
|
|
Loading…
Reference in New Issue