rpms/gnome-mplayer/devel gnome-mplayer-applefix.patch,NONE,1.1

Julian Sikorski belegdol at rpmfusion.org
Fri Jul 8 09:21:33 CEST 2011


Author: belegdol

Update of /cvs/free/rpms/gnome-mplayer/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv5883

Added Files:
	gnome-mplayer-applefix.patch 
Log Message:
Added a forgotten patch

gnome-mplayer-applefix.patch:
 gui.c                       |    5 ++++
 libgmtk/gmtk_media_player.c |   54 +++++++++++++++++++++++++++++++++++++-------
 libgmtk/gmtk_media_player.h |   13 +++++++++-
 main.c                      |    1 
 4 files changed, 64 insertions(+), 9 deletions(-)

--- NEW FILE gnome-mplayer-applefix.patch ---
Index: src/libgmtk/gmtk_media_player.h
===================================================================
--- src/libgmtk/gmtk_media_player.h	(wersja 2151)
+++ src/libgmtk/gmtk_media_player.h	(wersja 2152)
@@ -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;
Index: src/libgmtk/gmtk_media_player.c
===================================================================
--- src/libgmtk/gmtk_media_player.c	(wersja 2151)
+++ src/libgmtk/gmtk_media_player.c	(wersja 2152)
@@ -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: ");
Index: src/gui.c
===================================================================
--- src/gui.c	(wersja 2151)
+++ src/gui.c	(wersja 2152)
@@ -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);
Index: src/main.c
===================================================================
--- src/main.c	(wersja 2151)
+++ src/main.c	(wersja 2152)
@@ -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);



More information about the rpmfusion-commits mailing list