-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
A Mennucc ha scritto:
> hi,
>
> two problems (again!) with CDROMs !
> see bug http://bugs.debian.org/478574
>
> I am preparing a patch.
here it is in attachment (ignore the first HUNK that was already applied
in SVN)
please check it; in particular, I put some snippets of code that would
umount the media when the playing is over , and I used the methods
'stop': is it always true that the 'stop' methods are called when
playing ends (regardless of if it ends because the video is over, or the
user stopped it) ?
a.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkpGRjQACgkQ9B/tjjP8QKRXMACffYCTdLUjCMefegsbVLmaCkk3
eQ8AoIURJkqLhKgzmP/7HmD2nI5AVu9o
=cmbh
-----END PGP SIGNATURE-----
diff -ur freevo.orig/util/fileops.py freevo/util/fileops.py
--- freevo.orig/util/fileops.py 2009-04-11 16:58:01.000000000 +0200
+++ freevo/util/fileops.py 2009-06-26 23:44:06.000000000 +0200
@@ -382,8 +382,6 @@
so, se = p.communicate()
if rc in (1,32,):
_debug_('mounting %r: %s' % (dir, se), DWARNING)
- from util.misc import print_upper_execution_stack
- print_upper_execution_stack()
if os.path.ismount(dir) and not dir in mounted_dirs:
mounted_dirs.append(dir)
if force and not dir in mounted_dirs:
@@ -427,9 +425,9 @@
def resolve_media_mountdir(*arg):
"""
- get the mount point of the media with media_id
+ get the media with given media_id , and add its mountpoint to the filename
"""
- _debug_('resolve_media_mountdir(arg=%r)' % (arg,), 2)
+ _debug_('resolve_media(arg=%r)' % (arg,), 2)
if len(arg) == 1 and isinstance(arg[0], dict):
media_id = arg[0]['media_id']
file = arg[0]['file']
@@ -439,16 +437,15 @@
else:
raise KeyError
- mountdir = ''
+ media = None
# Find on what media it is located
for media in config.REMOVABLE_MEDIA:
if media_id == media.id:
# Then set the filename
- mountdir = media.mountdir
file = vfs.join(media.mountdir, file)
break
- return mountdir, file
+ return media, file
def check_media(media_id):
diff -ur freevo.orig/video/plugins/mplayer.py freevo/video/plugins/mplayer.py
--- freevo.orig/video/plugins/mplayer.py 2009-05-07 19:34:38.000000000 +0200
+++ freevo/video/plugins/mplayer.py 2009-06-26 23:57:09.000000000 +0200
@@ -76,6 +76,8 @@
self.plugins = []
self.paused = False
self.stored_time_info = None
+ self.audio_media = None
+ self.subtitle_media = None
def rate(self, item):
@@ -297,13 +299,15 @@
_debug_('crop=%s:%s:%s:%s' % (x2-x1, y2-y1, x1, y1))
if item.subtitle_file:
- d, f = util.resolve_media_mountdir(item.subtitle_file)
- util.mount(d)
+ self.subtitle_media, f = util.resolve_media_mountdir(item.subtitle_file)
+ if self.subtitle_media:
+ self.subtitle_media.mount()
args['sub'] = '-sub %s' % f
if item.audio_file:
- d, f = util.resolve_media_mountdir(item.audio_file)
- util.mount(d)
+ self.audio_media, f = util.resolve_media_mountdir(item.audio_file)
+ if self.audio_media:
+ self.audio_media.mount()
args['audiofile'] = '-audiofile %s' % f
self.plugins = plugin.get('mplayer_video')
@@ -389,6 +393,14 @@
rc.app(None)
dialog.disable_overlay_display()
self.app = None
+
+ if self.subtitle_media:
+ self.subtitle_media.mount()
+ self.subtitle_media = None
+
+ if self.audio_media:
+ self.audio_media.mount()
+ self.audio_media = None
def eventhandler(self, event, menuw=None):
diff -ur freevo.orig/video/videoitem.py freevo/video/videoitem.py
--- freevo.orig/video/videoitem.py 2009-05-16 20:10:55.000000000 +0200
+++ freevo/video/videoitem.py 2009-06-27 00:20:03.000000000 +0200
@@ -98,6 +98,7 @@
self.subitems = []
self.current_subitem = None
self.media_id = ''
+ self.mounted_media = None
self.subtitle_file = {}
self.audio_file = {}
@@ -641,9 +642,10 @@
if self.url.startswith('file://'):
file = self.filename
if self.media_id:
- mountdir, file = util.resolve_media_mountdir(self.media_id,file)
- if mountdir:
- util.mount(mountdir)
+ media = util.check_media(self.media_id)
+ if media:
+ media.mount()
+ self.mounted_media = media
else:
self.menuw.show()
ConfirmBox(text=(_('No media found for "%(file)s".\nPlease insert the media "%(media_id)s".')) % \
@@ -651,7 +653,8 @@
return
elif self.media:
- util.mount(os.path.dirname(self.filename))
+ self.media.mount()
+ self.mounted_media = self.media
# dvd and vcd
elif self.mode in ('dvd', 'vcd') and not self.filename and not self.media:
@@ -707,7 +710,10 @@
if self.player:
self.player.stop()
-
+
+ if self.mounted_media:
+ self.mounted_media.umount()
+ self.mounted_media = None
def dvd_vcd_title_menu(self, arg=None, menuw=None):
"""
------------------------------------------------------------------------------
_______________________________________________
Freevo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-devel