summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis de Bethencourt <luis.debethencourt@collabora.com>2011-05-19 19:22:03 +0200
committerLuis de Bethencourt <luis@debethencourt.com>2011-05-19 19:24:03 +0200
commit458ab2be14c7d586bab2e56d36040d6fb573851f (patch)
tree8d29e72fa797eb174451b78bc0cc4e7d4551ad9d
parentd7010b9d36fa2d6deb41b83443b4197b84906e2b (diff)
dlna: handling seek call
-rw-r--r--src/dlna.c16
-rw-r--r--src/gst_engine.c4
-rw-r--r--src/gst_engine.h2
-rw-r--r--src/user_interface.c4
4 files changed, 20 insertions, 6 deletions
diff --git a/src/dlna.c b/src/dlna.c
index 20ed99a..32d1025 100644
--- a/src/dlna.c
+++ b/src/dlna.c
@@ -284,6 +284,7 @@ handle_method_call (GDBusConnection * connection,
if (g_strcmp0 (method_name, "OpenUri") == 0) {
gchar *uri;
+ // g_print ("openUri.. uri: %s\n", uri);
g_variant_get (parameters, "(s)", &uri);
my_object_change_uri (myobj, uri);
@@ -293,16 +294,29 @@ handle_method_call (GDBusConnection * connection,
/// ToDo: next track call
handle_result (invocation, ret, error);
+
} else if (g_strcmp0 (method_name, "Play") == 0) {
engine_play (myobj->engine);
handle_result (invocation, ret, error);
+
} else if (g_strcmp0 (method_name, "Stop") == 0) {
engine_stop (myobj->engine);
handle_result (invocation, ret, error);
- }
+ } else if (g_strcmp0 (method_name, "Seek") == 0) {
+ gint64 offset, position;
+ gfloat relative;
+
+ g_variant_get (parameters, "(x)", &offset);
+ relative = offset / 100000000.0;
+ position = myobj->engine->media_duration * relative;
+ // g_print ("offset: %ld relative: %f", offset, relative);
+ engine_seek (myobj->engine, position);
+
+ handle_result (invocation, ret, error);
+ }
}
GVariant *
diff --git a/src/gst_engine.c b/src/gst_engine.c
index 621dd08..7da81e5 100644
--- a/src/gst_engine.c
+++ b/src/gst_engine.c
@@ -334,7 +334,7 @@ bus_call (GstBus * bus, GstMessage * msg, gpointer data)
position = is_uri_unfinished_playback (engine, engine->uri);
if (position != -1) {
- seek (engine, position);
+ engine_seek (engine, position);
}
add_uri_to_history (engine->uri);
@@ -511,7 +511,7 @@ query_position (GstEngine * engine)
}
gboolean
-seek (GstEngine * engine, gint64 position)
+engine_seek (GstEngine * engine, gint64 position)
{
GstFormat fmt = GST_FORMAT_TIME;
diff --git a/src/gst_engine.h b/src/gst_engine.h
index 8449799..401e5e1 100644
--- a/src/gst_engine.h
+++ b/src/gst_engine.h
@@ -60,7 +60,7 @@ gboolean frame_stepping (GstEngine * engine, gboolean foward);
gchar **get_recently_played ();
GstState get_state (GstEngine * engine);
gint64 query_position (GstEngine * engine);
-gboolean seek (GstEngine * engine, gint64 position);
+gboolean engine_seek (GstEngine * engine, gint64 position);
gboolean change_state (GstEngine * engine, gchar * state);
gboolean update_media_duration (GstEngine * engine);
diff --git a/src/user_interface.c b/src/user_interface.c
index 2b0ce10..ce0bcd4 100644
--- a/src/user_interface.c
+++ b/src/user_interface.c
@@ -182,7 +182,7 @@ event_cb (ClutterStage * stage, ClutterEvent * event, UserInterface * ui)
/* clamp the timestamp to be within the media */
pos = CLAMP (pos, 0, ui->engine->media_duration);
- seek (ui->engine, pos);
+ engine_seek (ui->engine, pos);
progress = (float) pos / ui->engine->media_duration;
clutter_actor_set_size (ui->control_seekbar,
@@ -246,7 +246,7 @@ event_cb (ClutterStage * stage, ClutterEvent * event, UserInterface * ui)
}
progress = ui->engine->media_duration * (dist / ui->seek_width);
- seek (ui->engine, progress);
+ engine_seek (ui->engine, progress);
clutter_actor_set_size (ui->control_seekbar, dist, ui->seek_height);
progress_update_text (ui);