mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
Hack around a bug that would almost certainly result in a crash for
any users trying to download or play Podcasts in Rhythmbox. This is a bandaid until the locking code is rewritten upstream. Tested by: ahze flz Reported by: many Approved by: portmgr (implicit)
This commit is contained in:
parent
46b76d6849
commit
088b4fa7df
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=175558
4 changed files with 114 additions and 2 deletions
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
PORTNAME= rhythmbox
|
PORTNAME= rhythmbox
|
||||||
PORTVERSION= 0.9.6
|
PORTVERSION= 0.9.6
|
||||||
PORTREVISION= 1
|
PORTREVISION= 2
|
||||||
CATEGORIES= audio gnome
|
CATEGORIES= audio gnome
|
||||||
MASTER_SITES= ${MASTER_SITE_GNOME}
|
MASTER_SITES= ${MASTER_SITE_GNOME}
|
||||||
MASTER_SITE_SUBDIR= sources/${PORTNAME}/0.9
|
MASTER_SITE_SUBDIR= sources/${PORTNAME}/0.9
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
--- podcast/rb-podcast-manager.c.orig Sun Sep 24 07:03:53 2006
|
||||||
|
+++ podcast/rb-podcast-manager.c Fri Oct 27 10:21:17 2006
|
||||||
|
@@ -545,10 +545,12 @@ rb_podcast_manager_next_file (RBPodcastM
|
||||||
|
size = g_list_length (pd->priv->download_list);
|
||||||
|
g_mutex_unlock (pd->priv->download_list_mutex);
|
||||||
|
|
||||||
|
- if (size > 0)
|
||||||
|
+ if (size > 0) {
|
||||||
|
rb_podcast_manager_copy_post (pd);
|
||||||
|
- else
|
||||||
|
g_mutex_unlock (pd->priv->mutex_job);
|
||||||
|
+ } else {
|
||||||
|
+ g_mutex_unlock (pd->priv->mutex_job);
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
rb_debug ("not start");
|
||||||
|
}
|
||||||
|
@@ -635,6 +637,7 @@ rb_podcast_manager_download_file_info_cb
|
||||||
|
|
||||||
|
rb_debug ("got file info results for %s",
|
||||||
|
rhythmdb_entry_get_string (data->entry, RHYTHMDB_PROP_LOCATION));
|
||||||
|
+ g_mutex_lock (data->pd->priv->mutex_job);
|
||||||
|
|
||||||
|
if (result->result != GNOME_VFS_OK) {
|
||||||
|
|
||||||
|
@@ -769,6 +772,7 @@ rb_podcast_manager_abort_download (RBPod
|
||||||
|
mgr->priv->download_list = g_list_remove (mgr->priv->download_list, (gconstpointer) data);
|
||||||
|
g_mutex_unlock (mgr->priv->download_list_mutex);
|
||||||
|
|
||||||
|
+ g_mutex_unlock (data->mutex_working);
|
||||||
|
download_info_free (data);
|
||||||
|
|
||||||
|
g_mutex_unlock (mgr->priv->mutex_job);
|
||||||
|
@@ -1085,6 +1089,10 @@ start_job (RBPodcastManagerInfo *data)
|
||||||
|
(GnomeVFSXferProgressCallback ) download_progress_cb,
|
||||||
|
data);
|
||||||
|
|
||||||
|
+ g_mutex_unlock (data->mutex_working);
|
||||||
|
+
|
||||||
|
+ g_mutex_unlock (data->pd->priv->mutex_job);
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
@@ -1170,6 +1178,11 @@ download_progress_cb (GnomeVFSXferProgre
|
||||||
|
|
||||||
|
if (data == NULL) {
|
||||||
|
return GNOME_VFS_XFER_ERROR_ACTION_ABORT;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (info->phase == GNOME_VFS_XFER_PHASE_INITIAL) {
|
||||||
|
+ g_mutex_lock (data->mutex_working);
|
||||||
|
+ g_mutex_lock (data->pd->priv->mutex_job);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info->status != GNOME_VFS_XFER_PROGRESS_STATUS_OK ||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
PORTNAME= rhythmbox
|
PORTNAME= rhythmbox
|
||||||
PORTVERSION= 0.9.6
|
PORTVERSION= 0.9.6
|
||||||
PORTREVISION= 1
|
PORTREVISION= 2
|
||||||
CATEGORIES= audio gnome
|
CATEGORIES= audio gnome
|
||||||
MASTER_SITES= ${MASTER_SITE_GNOME}
|
MASTER_SITES= ${MASTER_SITE_GNOME}
|
||||||
MASTER_SITE_SUBDIR= sources/${PORTNAME}/0.9
|
MASTER_SITE_SUBDIR= sources/${PORTNAME}/0.9
|
||||||
|
|
56
audio/rhythmbox/files/patch-podcast_rb-podcast-manager.c
Normal file
56
audio/rhythmbox/files/patch-podcast_rb-podcast-manager.c
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
--- podcast/rb-podcast-manager.c.orig Sun Sep 24 07:03:53 2006
|
||||||
|
+++ podcast/rb-podcast-manager.c Fri Oct 27 10:21:17 2006
|
||||||
|
@@ -545,10 +545,12 @@ rb_podcast_manager_next_file (RBPodcastM
|
||||||
|
size = g_list_length (pd->priv->download_list);
|
||||||
|
g_mutex_unlock (pd->priv->download_list_mutex);
|
||||||
|
|
||||||
|
- if (size > 0)
|
||||||
|
+ if (size > 0) {
|
||||||
|
rb_podcast_manager_copy_post (pd);
|
||||||
|
- else
|
||||||
|
g_mutex_unlock (pd->priv->mutex_job);
|
||||||
|
+ } else {
|
||||||
|
+ g_mutex_unlock (pd->priv->mutex_job);
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
rb_debug ("not start");
|
||||||
|
}
|
||||||
|
@@ -635,6 +637,7 @@ rb_podcast_manager_download_file_info_cb
|
||||||
|
|
||||||
|
rb_debug ("got file info results for %s",
|
||||||
|
rhythmdb_entry_get_string (data->entry, RHYTHMDB_PROP_LOCATION));
|
||||||
|
+ g_mutex_lock (data->pd->priv->mutex_job);
|
||||||
|
|
||||||
|
if (result->result != GNOME_VFS_OK) {
|
||||||
|
|
||||||
|
@@ -769,6 +772,7 @@ rb_podcast_manager_abort_download (RBPod
|
||||||
|
mgr->priv->download_list = g_list_remove (mgr->priv->download_list, (gconstpointer) data);
|
||||||
|
g_mutex_unlock (mgr->priv->download_list_mutex);
|
||||||
|
|
||||||
|
+ g_mutex_unlock (data->mutex_working);
|
||||||
|
download_info_free (data);
|
||||||
|
|
||||||
|
g_mutex_unlock (mgr->priv->mutex_job);
|
||||||
|
@@ -1085,6 +1089,10 @@ start_job (RBPodcastManagerInfo *data)
|
||||||
|
(GnomeVFSXferProgressCallback ) download_progress_cb,
|
||||||
|
data);
|
||||||
|
|
||||||
|
+ g_mutex_unlock (data->mutex_working);
|
||||||
|
+
|
||||||
|
+ g_mutex_unlock (data->pd->priv->mutex_job);
|
||||||
|
+
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
@@ -1170,6 +1178,11 @@ download_progress_cb (GnomeVFSXferProgre
|
||||||
|
|
||||||
|
if (data == NULL) {
|
||||||
|
return GNOME_VFS_XFER_ERROR_ACTION_ABORT;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (info->phase == GNOME_VFS_XFER_PHASE_INITIAL) {
|
||||||
|
+ g_mutex_lock (data->mutex_working);
|
||||||
|
+ g_mutex_lock (data->pd->priv->mutex_job);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info->status != GNOME_VFS_XFER_PROGRESS_STATUS_OK ||
|
Loading…
Add table
Reference in a new issue