[Xfce4-commits] <parole:master> Fixed segmentation fault with play/pause.
Sean Davis
noreply at xfce.org
Mon Jul 23 01:25:10 CEST 2012
Updating branch refs/heads/master
to 37cd2802a72d61b614f00951237a9ad823c47809 (commit)
from 4565225c5bab4abe7652f34d092f70b55a669def (commit)
commit 37cd2802a72d61b614f00951237a9ad823c47809
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Thu Jul 19 12:53:54 2012 -0400
Fixed segmentation fault with play/pause.
data/interfaces/parole.ui | 1 +
src/gst/parole-gst.c | 6 ++++++
src/gst/parole-gst.h | 1 +
src/parole-player.c | 43 ++++++++++++++++++++++++++-----------------
4 files changed, 34 insertions(+), 17 deletions(-)
diff --git a/data/interfaces/parole.ui b/data/interfaces/parole.ui
index a350883..3f3b4e1 100644
--- a/data/interfaces/parole.ui
+++ b/data/interfaces/parole.ui
@@ -642,6 +642,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="model">liststore_subtitles</property>
+ <signal name="changed" handler="parole_player_combo_box_subtitles_changed_cb" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
diff --git a/src/gst/parole-gst.c b/src/gst/parole-gst.c
index a4d0959..b8614d3 100644
--- a/src/gst/parole-gst.c
+++ b/src/gst/parole-gst.c
@@ -2272,6 +2272,12 @@ gst_set_current_audio_track( ParoleGst *gst, gint track_no )
g_object_set (G_OBJECT (gst->priv->playbin), "current-audio", (track_no), NULL);
}
+void
+gst_set_current_subtitle_track( ParoleGst *gst, gint track_no )
+{
+ g_object_set (G_OBJECT (gst->priv->playbin), "current-text", (track_no-1), NULL);
+}
+
const ParoleStream *parole_gst_get_stream (ParoleGst *gst)
{
g_return_val_if_fail (PAROLE_IS_GST (gst), NULL);
diff --git a/src/gst/parole-gst.h b/src/gst/parole-gst.h
index 55f718c..648dc0a 100644
--- a/src/gst/parole-gst.h
+++ b/src/gst/parole-gst.h
@@ -143,6 +143,7 @@ void parole_gst_set_cursor_visible (ParoleGst *gst,
GList * gst_get_lang_list_for_type (ParoleGst * gst, const gchar * type_name);
void gst_set_current_audio_track( ParoleGst *gst, gint track_no );
+void gst_set_current_subtitle_track( ParoleGst *gst, gint track_no );
const ParoleStream *parole_gst_get_stream (ParoleGst *gst);
diff --git a/src/parole-player.c b/src/parole-player.c
index 3102e09..a4b7cfb 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -287,6 +287,7 @@ struct ParolePlayerPrivate
GtkListStore *liststore_subtitles;
GList *audio_list;
GList *subtitle_list;
+ gboolean update_languages;
GtkWidget *main_box;
@@ -483,6 +484,7 @@ parole_player_change_range_value (ParolePlayer *player, gdouble value)
static void
parole_player_reset (ParolePlayer *player)
{
+ player->priv->update_languages = TRUE;
parole_player_change_range_value (player, 0);
if ( player->priv->row )
@@ -548,17 +550,16 @@ parole_player_update_audio_tracks (ParolePlayer *player, ParoleGst *gst)
gtk_combo_box_set_active( GTK_COMBO_BOX(player->priv->combobox_audiotrack), 0 );
- if (g_list_length (list) <= 1) {
- gtk_widget_set_sensitive( GTK_WIDGET( player->priv->combobox_audiotrack ), FALSE );
+ if (g_list_length (list) >= 2) {
+ gtk_widget_set_sensitive( GTK_WIDGET( player->priv->combobox_audiotrack ), TRUE );
+ gtk_widget_show(player->priv->infobar);
+ }
+ else {
+ gtk_widget_set_sensitive( GTK_WIDGET( player->priv->combobox_audiotrack ), FALSE );
+ }
g_free (list->data);
g_list_free (list);
list = NULL;
- }
- else
- {
- gtk_widget_set_sensitive( GTK_WIDGET( player->priv->combobox_audiotrack ), TRUE );
- gtk_widget_show(player->priv->infobar);
- }
}
static void
@@ -601,22 +602,23 @@ parole_player_update_subtitles (ParolePlayer *player, ParoleGst *gst)
gtk_combo_box_set_active( GTK_COMBO_BOX(player->priv->combobox_subtitles), 0 );
- if (g_list_length (list) == 1) {
- g_free (list->data);
+ if (g_list_length (list) != 1) {
+ gtk_widget_show(player->priv->infobar);
+ }
+ g_free (list->data);
g_list_free (list);
list = NULL;
- }
- else
- {
- gtk_widget_show(player->priv->infobar);
- }
}
static void
parole_player_update_languages (ParolePlayer *player, ParoleGst *gst)
{
- parole_player_update_audio_tracks(player, gst);
- parole_player_update_subtitles(player, gst);
+ if (player->priv->update_languages == TRUE)
+ {
+ parole_player_update_audio_tracks(player, gst);
+ parole_player_update_subtitles(player, gst);
+ player->priv->update_languages = FALSE;
+ }
}
static void
@@ -2259,6 +2261,7 @@ parole_player_init (ParolePlayer *player)
GTK_MESSAGE_QUESTION);
gtk_box_pack_start( GTK_BOX( player->priv->hbox_infobar ), player->priv->infobar, TRUE, TRUE, 0);
+ player->priv->update_languages = FALSE;
gtk_scale_button_set_value (GTK_SCALE_BUTTON (player->priv->volume),
(gdouble) (parole_rc_read_entry_int ("volume", PAROLE_RC_GROUP_GENERAL, 100)/100.));
@@ -2400,6 +2403,12 @@ void parole_player_combo_box_audiotrack_changed_cb(GtkWidget *widget, ParolePlay
gst_set_current_audio_track(PAROLE_GST(player->priv->gst), index);
}
+void parole_player_combo_box_subtitles_changed_cb(GtkWidget *widget, ParolePlayer *player)
+{
+ gint index = gtk_combo_box_get_active(GTK_COMBO_BOX(player->priv->combobox_subtitles));
+ gst_set_current_subtitle_track(PAROLE_GST(player->priv->gst), index);
+}
+
void parole_player_terminate (ParolePlayer *player)
{
parole_player_delete_event_cb (NULL, NULL, player);
More information about the Xfce4-commits
mailing list