On Fri, June 26, 2009 11:16 am, Adam Charrett wrote:
> On Thu, June 25, 2009 8:11 pm, Michel Hoogervorst wrote:
>>>
>>> The dialog.x11_overlay_display replaces the default mplayer display to
>>> display a pretty pause and play icon instead of the text messages.
>>
>>
>> Ok, I understand. This should indeed be better looking... but without a
>> progress-bar when seeking, and some info about the selected subtitle
>> when
>> pressing the subtitle-button this is pretty useless... especially when
>> playing a dvd with lots of subtitles it can be an anoyance when you're
>> not
>> able to see which one you just selected...
>
> The overlay display stuff is still pretty much in development and needs
> someone with some artistic ability (ie. not me :-)) to design a nicer
> display for the seeking/pause display. Fancy a go, it should be reasonable
> easy as there is a GUI design tool for the dialogs (freevo osddesigner).
> As for the subtitles, I hold my hands up I didn't think of this as I don't
> use it in video, I'm not even sure mplayer supports outputing this
> information to freevo via the console. I'll have to see if it is possible
> to turn on the mplayer osd just for subtitle selection.
>

Duncan, Michel could you try the attached patch (with the x11_osd_display
enabled) to see if mplayer now displays the subtitles being selected?

The patch was against the latest 1_9_1 tip.

Cheers

Adam
diff -ur freevo-1.9.1/src/video/plugins/mplayer.py freevo-tmp/src/video/plugins/mplayer.py
--- freevo-1.9.1/src/video/plugins/mplayer.py	2009-06-26 12:34:06.000000000 +0100
+++ freevo-tmp/src/video/plugins/mplayer.py	2009-06-26 12:33:45.000000000 +0100
@@ -447,7 +447,9 @@
             return self.item.eventhandler(event)
 
         if event == VIDEO_SEND_MPLAYER_CMD:
+            self.enable_osd(True)
             self.app.write('%s\n' % event.arg)
+            self.enable_osd(False)
             return True
 
         if event == TOGGLE_OSD:
@@ -461,17 +463,19 @@
             return True
 
         if event == PAUSE or event == PLAY:
-            self.paused = not self.paused
-            # We have to store the current time before displaying the dialog
-            # otherwise the act of requesting the current position resumes playback!
-            if self.paused:
-                self.stored_time_info = self.get_time_info()
-                dialog.show_play_state(dialog.PLAY_STATE_PAUSE, self.get_time_info)
-                self.app.write('pause\n')
+            if dialog.is_dialog_supported():
+                self.paused = not self.paused
+                # We have to store the current time before displaying the dialog
+                # otherwise the act of requesting the current position resumes playback!
+                if self.paused:
+                    self.stored_time_info = self.get_time_info()
+                    dialog.show_play_state(dialog.PLAY_STATE_PAUSE, self.get_stored_time_info)
+                    self.app.write('pause\n')
+                else:
+                    self.app.write('pause\n')
+                    dialog.show_play_state(dialog.PLAY_STATE_PLAY, self.get_time_info)
             else:
-                self.app.write('speed_set 1.0\n')
-                dialog.show_play_state(dialog.PLAY_STATE_PLAY, self.get_time_info)
-
+                self.app.write('pause\n')
             return True
 
         if event == SEEK:
@@ -501,25 +505,32 @@
 
                     dialog.show_message(_('Seeking not possible'))
                     return False
-
-            if event.arg > 0:
-                dialog.show_play_state(dialog.PLAY_STATE_SEEK_FORWARD, self.get_time_info)
-            else:
-                dialog.show_play_state(dialog.PLAY_STATE_SEEK_BACK, self.get_time_info)
+            if dialog.is_dialog_supported():
+                if event.arg > 0:
+                    dialog.show_play_state(dialog.PLAY_STATE_SEEK_FORWARD, self.get_time_info)
+                else:
+                    dialog.show_play_state(dialog.PLAY_STATE_SEEK_BACK, self.get_time_info)
+                self.paused = False
 
             self.app.write('seek %s\n' % event.arg)
             return True
 
         if event == VIDEO_AVSYNC:
-            self.app.write('audio_delay %g\n' % event.arg);
+            self.enable_osd(True)
+            self.app.write('pausing_keep audio_delay %g\n' % event.arg);
+            self.enable_osd(False)
             return True
 
         if event == VIDEO_NEXT_AUDIOLANG:
-            self.app.write('switch_audio\n')
+            self.enable_osd(True)
+            self.app.write('pausing_keep switch_audio\n')
+            self.enable_osd(False)
             return True
 
         if event == VIDEO_NEXT_SUBTITLE:
-            self.app.write('sub_select\n')
+            self.enable_osd(True)
+            self.app.write('pausing_keep sub_select\n')
+            self.enable_osd(False)
             return True
 
         if event == OSD_MESSAGE:
@@ -529,6 +540,15 @@
         # nothing found? Try the eventhandler of the object who called us
         return self.item.eventhandler(event)
 
+    def enable_osd(self, enable):
+        # Only need to do this if we have an overlay display as otherwise the
+        # mplayer osd will already be enabled.
+        if dialog.is_dialog_supported():
+            if enable:
+                self.app.write('pausing_keep set_property osdlevel 1\n')
+            else:
+                self.app.write('pausing_keep set_property osdlevel 0\n')
+
     def show_message(self, message):
         self.app.write('osd_show_text "%s"\n' % message);
 
------------------------------------------------------------------------------
_______________________________________________
Freevo-users mailing list
Freevo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freevo-users

Reply via email to