summaryrefslogtreecommitdiffstats
path: root/multimedia/gnome-mplayer/gnome-mplayer-fixes.diff
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/gnome-mplayer/gnome-mplayer-fixes.diff')
-rw-r--r--multimedia/gnome-mplayer/gnome-mplayer-fixes.diff210
1 files changed, 210 insertions, 0 deletions
diff --git a/multimedia/gnome-mplayer/gnome-mplayer-fixes.diff b/multimedia/gnome-mplayer/gnome-mplayer-fixes.diff
new file mode 100644
index 0000000000..fab0415eef
--- /dev/null
+++ b/multimedia/gnome-mplayer/gnome-mplayer-fixes.diff
@@ -0,0 +1,210 @@
+diff -ru gnome-mplayer-1.0.4-orig/ChangeLog gnome-mplayer-1.0.4/ChangeLog
+--- gnome-mplayer-1.0.4-orig/ChangeLog 2011-07-01 12:37:25.000000000 -0400
++++ gnome-mplayer-1.0.4/ChangeLog 2011-07-09 21:02:50.000000000 -0400
+@@ -1,3 +1,6 @@
++Development
++ Raise event on incomplete QuickTime file, and mark it for retry
++ Fix compile issue with alsa is not being used
+ 1.0.4
+ Remove vdpau failure detection as it doesn't work
+ Quit mplayer on vdpau restart, mplayer doesn't want to die
+diff -ru gnome-mplayer-1.0.4-orig/src/gui.c gnome-mplayer-1.0.4/src/gui.c
+--- gnome-mplayer-1.0.4-orig/src/gui.c 2011-06-27 10:59:45.000000000 -0400
++++ gnome-mplayer-1.0.4/src/gui.c 2011-07-09 21:04:12.000000000 -0400
+@@ -5073,7 +5073,7 @@
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(config_volume), gm_pref_store_get_int(gm_store, VOLUME));
+ gm_pref_store_free(gm_store);
+ gtk_entry_set_width_chars(GTK_ENTRY(config_volume), 6);
+- gtk_entry_set_editable(GTK_ENTRY(config_volume), FALSE);
++ gtk_editable_set_editable(GTK_EDITABLE(config_volume), FALSE);
+ gtk_entry_set_alignment(GTK_ENTRY(config_volume), 1);
+ gtk_widget_show(config_volume);
+ i++;
+@@ -6052,6 +6052,11 @@
+ g_strlcpy(idledata->media_info, text, 1024);
+ g_thread_create(get_cover_art, metadata, FALSE, NULL);
+ break;
++
++ case ATTRIBUTE_RETRY_ON_FULL_CACHE:
++ idledata->retry_on_full_cache = gmtk_media_player_get_attribute_boolean (GMTK_MEDIA_PLAYER(media), ATTRIBUTE_RETRY_ON_FULL_CACHE);
++ break;
++
+ default:
+ if (verbose) {
+ printf("Unhandled attribute change %i\n", attribute);
+diff -ru gnome-mplayer-1.0.4-orig/src/libgmtk/gmtk_media_player.c gnome-mplayer-1.0.4/src/libgmtk/gmtk_media_player.c
+--- gnome-mplayer-1.0.4-orig/src/libgmtk/gmtk_media_player.c 2011-06-28 12:19:18.000000000 -0400
++++ gnome-mplayer-1.0.4/src/libgmtk/gmtk_media_player.c 2011-07-09 21:04:50.000000000 -0400
+@@ -69,15 +69,27 @@
+
+ if (event && event->event_name != NULL
+ && (event->player->restart == FALSE || event->event_data_int == ATTRIBUTE_AF_EXPORT_FILENAME)) {
+- if (g_strcasecmp(event->event_name, "position-changed") == 0 ||
+- g_strcasecmp(event->event_name, "cache-percent-changed") == 0) {
+- g_signal_emit_by_name(event->player, event->event_name, event->event_data_double);
+- } else if (g_strcasecmp(event->event_name, "size_allocate") == 0) {
+- g_signal_emit_by_name(event->player, event->event_name, event->event_allocation);
+- } else {
+- g_signal_emit_by_name(event->player, event->event_name, event->event_data_int);
+- }
+
++ switch (event->type) {
++ case EVENT_TYPE_INT:
++ g_signal_emit_by_name(event->player, event->event_name, event->event_data_int);
++ break;
++
++ case EVENT_TYPE_DOUBLE:
++ g_signal_emit_by_name(event->player, event->event_name, event->event_data_double);
++ break;
++
++ case EVENT_TYPE_BOOLEAN:
++ g_signal_emit_by_name(event->player, event->event_name, event->event_data_boolean);
++ break;
++
++ case EVENT_TYPE_ALLOCATION:
++ g_signal_emit_by_name(event->player, event->event_name, event->event_allocation);
++ break;
++
++ default:
++ printf("undefined event %s\n", event->event_name);
++ }
+ g_free(event->event_name);
+ }
+ if (event)
+@@ -93,6 +105,7 @@
+
+ event = g_new0(GmtkMediaPlayerEvent, 1);
+ event->player = player;
++ event->type = EVENT_TYPE_INT;
+ event->event_name = g_strdup(name);
+ event->event_data_int = value;
+ g_idle_add(signal_event, event);
+@@ -104,17 +117,31 @@
+
+ event = g_new0(GmtkMediaPlayerEvent, 1);
+ event->player = player;
++ event->type = EVENT_TYPE_DOUBLE;
+ event->event_name = g_strdup(name);
+ event->event_data_double = value;
+ g_idle_add(signal_event, event);
+ }
+
++void create_event_boolean(GmtkMediaPlayer * player, const gchar * name, gboolean value)
++{
++ GmtkMediaPlayerEvent *event;
++
++ event = g_new0(GmtkMediaPlayerEvent, 1);
++ event->player = player;
++ event->type = EVENT_TYPE_BOOLEAN;
++ event->event_name = g_strdup(name);
++ event->event_data_boolean = value;
++ g_idle_add(signal_event, event);
++}
++
+ void create_event_allocation(GmtkMediaPlayer * player, const gchar * name, GtkAllocation * allocation)
+ {
+ GmtkMediaPlayerEvent *event;
+
+ event = g_new0(GmtkMediaPlayerEvent, 1);
+ event->player = player;
++ event->type = EVENT_TYPE_ALLOCATION;
+ event->event_name = g_strdup(name);
+ event->event_allocation = allocation;
+ g_idle_add(signal_event, event);
+@@ -300,6 +327,7 @@
+ player->channel_in = NULL;
+ player->channel_out = NULL;
+ player->channel_err = NULL;
++ player->retry_on_full_cache = FALSE;
+ }
+
+ static void gmtk_media_player_dispose(GObject * object)
+@@ -993,6 +1021,10 @@
+ ret = player->hardware_ac3;
+ break;
+
++ case ATTRIBUTE_RETRY_ON_FULL_CACHE:
++ ret = player->retry_on_full_cache;
++ break;
++
+ default:
+ if (player->debug)
+ printf("Unsupported Attribute\n");
+@@ -1788,6 +1820,7 @@
+ player->title_is_menu = FALSE;
+ player->enable_divx = TRUE;
+ player->disable_xvmc = FALSE;
++ player->retry_on_full_cache = FALSE;
+
+ g_mutex_lock(player->thread_running);
+
+@@ -2477,6 +2510,11 @@
+ error_msg = g_strdup_printf(_("Compressed SWF format not supported"));
+ }
+
++ if (strstr(mplayer_output->str, "MOV: missing header (moov/cmov) chunk") != NULL) {
++ player->retry_on_full_cache = TRUE;
++ create_event_boolean(player, "attribute-changed", ATTRIBUTE_RETRY_ON_FULL_CACHE);
++ }
++
+ if (strstr(mplayer_output->str, "Title: ") != 0) {
+ buf = strstr(mplayer_output->str, "Title:");
+ buf = strstr(mplayer_output->str, "Title: ") + strlen("Title: ");
+diff -ru gnome-mplayer-1.0.4-orig/src/libgmtk/gmtk_media_player.h gnome-mplayer-1.0.4/src/libgmtk/gmtk_media_player.h
+--- gnome-mplayer-1.0.4-orig/src/libgmtk/gmtk_media_player.h 2011-06-28 09:29:18.000000000 -0400
++++ gnome-mplayer-1.0.4/src/libgmtk/gmtk_media_player.h 2011-07-09 21:04:50.000000000 -0400
+@@ -170,7 +170,8 @@
+ ATTRIBUTE_ENABLE_FRAME_DROP,
+ ATTRIBUTE_TITLE,
+ ATTRIBUTE_ARTIST,
+- ATTRIBUTE_ALBUM
++ ATTRIBUTE_ALBUM,
++ ATTRIBUTE_RETRY_ON_FULL_CACHE
+ } GmtkMediaPlayerMediaAttributes;
+
+ typedef enum {
+@@ -201,6 +202,13 @@
+ COMMAND_SWITCH_FRAME_DROP
+ } GmtkMediaPlayerCommand;
+
++typedef enum {
++ EVENT_TYPE_INT,
++ EVENT_TYPE_DOUBLE,
++ EVENT_TYPE_BOOLEAN,
++ EVENT_TYPE_ALLOCATION
++} GmtkMediaPlayerEventType;
++
+ typedef struct _GmtkMediaPlayer GmtkMediaPlayer;
+ typedef struct _GmtkMediaPlayerClass GmtkMediaPlayerClass;
+
+@@ -222,9 +230,11 @@
+
+ typedef struct _GmtkMediaPlayerEvent {
+ GmtkMediaPlayer *player;
++ GmtkMediaPlayerEventType type;
+ gchar *event_name;
+ gint event_data_int;
+ gdouble event_data_double;
++ gboolean event_data_boolean;
+ GtkAllocation *event_allocation;
+ } GmtkMediaPlayerEvent;
+
+@@ -304,6 +314,7 @@
+ gchar *album;
+ gboolean enable_divx;
+ gboolean disable_xvmc;
++ gboolean retry_on_full_cache;
+
+ gboolean deinterlace;
+ gboolean frame_drop;
+diff -ru gnome-mplayer-1.0.4-orig/src/main.c gnome-mplayer-1.0.4/src/main.c
+--- gnome-mplayer-1.0.4-orig/src/main.c 2011-06-27 10:59:45.000000000 -0400
++++ gnome-mplayer-1.0.4/src/main.c 2011-07-09 21:04:12.000000000 -0400
+@@ -534,6 +534,7 @@
+ idledata->width = width;
+ idledata->height = height;
+
++ idledata->retry_on_full_cache = FALSE;
+ idledata->cachepercent = -1.0;
+ g_strlcpy(idledata->info, uri, 1024);
+ set_media_info(idledata);