[totem] backend: Simplify setting the playback direction
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [totem] backend: Simplify setting the playback direction
- Date: Thu, 22 Aug 2013 00:58:18 +0000 (UTC)
commit 8f3aa112b4fda273392dc2fe64dfea31212e2445
Author: Bastien Nocera <hadess hadess net>
Date: Thu Aug 22 02:49:11 2013 +0200
backend: Simplify setting the playback direction
src/backend/bacon-video-widget.c | 57 ++++++++++++--------------------------
1 files changed, 18 insertions(+), 39 deletions(-)
---
diff --git a/src/backend/bacon-video-widget.c b/src/backend/bacon-video-widget.c
index fc59b19..6499cfd 100644
--- a/src/backend/bacon-video-widget.c
+++ b/src/backend/bacon-video-widget.c
@@ -110,6 +110,7 @@
#define SEEK_TIMEOUT NANOSECS_IN_SEC / 10
#define FORWARD_RATE 1.0
#define REVERSE_RATE -1.0
+#define DIRECTION_STR (forward == FALSE ? "reverse" : "forward")
#define is_error(e, d, c) \
(e->domain == GST_##d##_ERROR && \
@@ -5952,54 +5953,32 @@ bvw_set_playback_direction (BaconVideoWidget *bvw, gboolean forward)
{
gboolean is_forward;
gboolean retval;
+ float target_rate;
+ GstEvent *event;
+ gint64 cur = 0;
is_forward = (bvw->priv->rate > 0.0);
if (forward == is_forward)
return TRUE;
retval = FALSE;
+ target_rate = (forward ? FORWARD_RATE : REVERSE_RATE);
- if (forward == FALSE) {
- GstEvent *event;
- gint64 cur = 0;
-
- if (gst_element_query_position (bvw->priv->play, GST_FORMAT_TIME, &cur)) {
- GST_DEBUG ("Setting playback direction to reverse at %"G_GINT64_FORMAT"", cur);
- event = gst_event_new_seek (REVERSE_RATE,
- GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
- GST_SEEK_TYPE_SET, G_GINT64_CONSTANT (0),
- GST_SEEK_TYPE_SET, cur);
- if (gst_element_send_event (bvw->priv->play, event) == FALSE) {
- GST_WARNING ("Failed to set playback direction to reverse");
- } else {
- gst_element_get_state (bvw->priv->play, NULL, NULL, GST_CLOCK_TIME_NONE);
- bvw->priv->rate = REVERSE_RATE;
- retval = TRUE;
- }
+ if (gst_element_query_position (bvw->priv->play, GST_FORMAT_TIME, &cur)) {
+ GST_DEBUG ("Setting playback direction to %s at %"G_GINT64_FORMAT"", DIRECTION_STR, cur);
+ event = gst_event_new_seek (target_rate,
+ GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
+ GST_SEEK_TYPE_SET, forward ? cur : G_GINT64_CONSTANT (0),
+ GST_SEEK_TYPE_SET, forward ? G_GINT64_CONSTANT (0) : cur);
+ if (gst_element_send_event (bvw->priv->play, event) == FALSE) {
+ GST_WARNING ("Failed to set playback direction to %s", DIRECTION_STR);
} else {
- GST_LOG ("Failed to query position to set playback to reverse");
+ gst_element_get_state (bvw->priv->play, NULL, NULL, GST_CLOCK_TIME_NONE);
+ bvw->priv->rate = target_rate;
+ retval = TRUE;
}
} else {
- GstEvent *event;
- gint64 cur = 0;
-
- cur = 0;
- if (gst_element_query_position (bvw->priv->play, GST_FORMAT_TIME, &cur)) {
- GST_DEBUG ("Setting playback direction to forward at %"G_GINT64_FORMAT"", cur);
- event = gst_event_new_seek (FORWARD_RATE,
- GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
- GST_SEEK_TYPE_SET, cur,
- GST_SEEK_TYPE_SET, G_GINT64_CONSTANT (0));
- if (gst_element_send_event (bvw->priv->play, event) == FALSE) {
- GST_WARNING ("Failed to set playback direction to forward");
- } else {
- gst_element_get_state (bvw->priv->play, NULL, NULL, GST_CLOCK_TIME_NONE);
- bvw->priv->rate = FORWARD_RATE;
- retval = TRUE;
- }
- } else {
- GST_LOG ("Failed to query position to set playback to forward");
- }
+ GST_LOG ("Failed to query position to set playback to %s", DIRECTION_STR);
}
return retval;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]