Index: src/backend/bacon-video-widget-gst-0.10.c
===================================================================
--- src/backend/bacon-video-widget-gst-0.10.c	(Revision 5312)
+++ src/backend/bacon-video-widget-gst-0.10.c	(Arbeitskopie)
@@ -2007,6 +2007,23 @@
   return TRUE;
 }
 
+static void
+bacon_video_widget_flush (GstElement *play)
+{
+  gint64 pos;
+  GstFormat fmt = GST_FORMAT_TIME;
+
+  /* FIXME: Shouldn't be necessary but without switching audio tracks
+   *        is not possible because of a playbin bug. */
+  if (gst_element_query_position (play, &fmt, &pos)) {
+    if (!gst_element_seek_simple (play, fmt,
+        GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, pos))
+      GST_DEBUG ("Flushing seek failed");
+  } else {
+    GST_DEBUG ("Could not get current position");
+  }
+}
+
 int
 bacon_video_widget_get_subtitle (BaconVideoWidget * bvw)
 {
@@ -2043,6 +2060,8 @@
     g_object_set (bvw->priv->play, "current-subpicture", subtitle, NULL);
   else
     g_object_set (bvw->priv->play, "current-text", subtitle, NULL);
+
+  bacon_video_widget_flush (bvw->priv->play);
 }
 
 gboolean
@@ -2189,6 +2208,8 @@
 
   g_object_set (bvw->priv->play, "current-audio", language, NULL);
 
+  bacon_video_widget_flush (bvw->priv->play);
+
   g_object_get (bvw->priv->play, "current-audio", &language, NULL);
   GST_DEBUG ("current-audio now: %d", language);
 
