Author: dmeyer
Date: Sun Feb 17 15:10:39 2008
New Revision: 3113
Log:
API cleanup, part 1
Modified:
trunk/popcorn/src/backends/base.py
trunk/popcorn/src/backends/gstreamer/child.py
trunk/popcorn/src/backends/gstreamer/player.py
trunk/popcorn/src/backends/mplayer/player.py
trunk/popcorn/src/backends/xine/player.py
trunk/popcorn/src/generic.py
Modified: trunk/popcorn/src/backends/base.py
==============================================================================
--- trunk/popcorn/src/backends/base.py (original)
+++ trunk/popcorn/src/backends/base.py Sun Feb 17 15:10:39 2008
@@ -37,6 +37,7 @@
# kaa imports
import kaa
+from kaa.utils import property
# kaa.popcorn imports
from kaa.popcorn.ptypes import *
@@ -72,18 +73,18 @@
"stream_changed": kaa.Signal(),
"frame": kaa.Signal(),
"osd_configure": kaa.Signal(),
+ "state_changed": kaa.Signal(),
}
- self._state_changed = kaa.Signal()
- self._state_object = STATE_IDLE
+ self._state = STATE_IDLE
self._window = None
- self._size = None
+ self._position = 0.0
self._properties = properties
self._instance_id = "popcorn-%d-%d" % (os.getpid(),
self._instance_count)
MediaPlayer._instance_count += 1
- # some variables for the inherting class
- self._position_value = 0.0
- self._streaminfo = {}
+ # some variables for the inherting class the generic player will
+ # access at some point.
+ self.streaminfo = {}
# shared memory keys
key = md5.md5(self._instance_id + "osd").hexdigest()[:7]
@@ -95,71 +96,74 @@
self._property_callbacks = {}
self._property_delayed = []
- for name, func in [ (func, getattr(self, func)) for func in dir(self)
]:
+ for name in dir(self):
+ func = getattr(self.__class__, name, None)
if callable(func) and hasattr(func, '_runtime_policy'):
+ func = getattr(self, name)
name = name[10:].replace('_', '-')
self._property_callbacks[name] = kaa.WeakCallback(func)
- #
- # state handling
- #
- def get_state(self):
+ def __repr__(self):
+ """
+ For debugging only.
+ """
+ c = str(self.__class__)
+ return '<popcorn%s' % c[c.rfind('.'):]
+
+
+ @property
+ def state(self):
"""
Get current state.
"""
- return self._state_object
+ return self._state
- def _set_state(self, state):
+ @state.setter
+ def state(self, state):
"""
Set state and emit 'failed', 'start' or 'end' signal if needed.
"""
- if self._state_object == state:
+ if self._state == state:
return
- if state == STATE_IDLE and self._state_object == STATE_SHUTDOWN:
+ if state == STATE_IDLE and self._state == STATE_SHUTDOWN:
return
- old_state = self._state_object
- self._state_object = state
+ old_state = self._state
+ self._state = state
if state == STATE_PLAYING and self._property_delayed:
# now set changed properties
for key, value in self._property_delayed:
self.set_property(key, value)
self._property_delayed = []
- self._state_changed.emit(old_state, state)
-
- _state = property(get_state, _set_state, None, 'state of the player')
-
+ self.signals['state_changed'].emit(old_state, state)
- #
- # position handling
- #
- def get_position(self):
+ @property
+ def position(self):
"""
Get current playing position.
"""
- return self._position_value
+ return self._position
- def _set_position(self, pos):
+ @position.setter
+ def position(self, pos):
"""
Set position and emit 'elapsed' signal.
"""
- if self._position_value == pos:
+ if self._position == pos:
return
- self._position_value = pos
+ self._position = pos
self.signals['elapsed'].emit(pos)
- # position property based on get_state and _set_state
- _position = property(get_position, _set_position, None, 'player position')
-
#
- # internal use
+ # used only by inheriting player
#
- def _get_aspect(self):
+ @property
+ def aspect(self):
"""
Get aspect ration values. Returns a tuple monitoraspect and a
tuple with the fullscreen pixel size.
@@ -173,22 +177,15 @@
return aspect, size
- def _get_pixel_aspect(self):
+ @property
+ def pixel_aspect(self):
"""
Get pixel aspect ratio based on monitoraspect and window size
"""
- a, fs = self._get_aspect()
+ a, fs = self.aspect
return (float(a[0])/a[1]) / (float(fs[0])/fs[1])
- def __repr__(self):
- """
- For debugging only.
- """
- c = str(self.__class__)
- return '<popcorn%s' % c[c.rfind('.'):]
-
-
#
# interface for generic
#
@@ -204,28 +201,14 @@
"""
Return if the player is paused.
"""
- return self._state == STATE_PAUSED
+ return self.state == STATE_PAUSED
def is_playing(self):
"""
Return if the player is playing.
"""
- return self._state == STATE_PLAYING
-
-
- def set_size(self, size):
- """
- Set a new output size.
- """
- self._size = size
-
-
- def get_size(self):
- """
- Get output size.
- """
- return self._size
+ return self.state == STATE_PLAYING
def get_capabilities(self):
@@ -249,7 +232,7 @@
# Methods to be implemented by subclasses.
#
- # Please set self._state when something changes, signals will be send
+ # Please set self.state when something changes, signals will be send
# by this base class when you change the state. The following states
# are valid:
#
@@ -323,14 +306,6 @@
pass
- def get_info(self):
- """
- Returns info about the currently playing stream, or the file that
- has just been opened.
- """
- return self._streaminfo
-
-
def nav_command(self, input):
"""
Issue the navigation command to the player. 'input' is a string
@@ -359,7 +334,7 @@
self._properties[prop] = value
return
func = self._property_callbacks[prop]
- if self._state not in (STATE_PAUSED, STATE_PLAYING):
+ if self.state not in (STATE_PAUSED, STATE_PLAYING):
# We are not in playback mode.
if func._runtime_policy == DEFER_UNTIL_PLAYING:
# delay property call until playing
Modified: trunk/popcorn/src/backends/gstreamer/child.py
==============================================================================
--- trunk/popcorn/src/backends/gstreamer/child.py (original)
+++ trunk/popcorn/src/backends/gstreamer/child.py Sun Feb 17 15:10:39 2008
@@ -52,7 +52,7 @@
def __init__(self):
Player.__init__(self)
self._gst = None
- self._streaminfo = {}
+ self.streaminfo = {}
# create gst object
self._gst = gst.element_factory_make("playbin", "player")
@@ -104,8 +104,8 @@
value = taglist[key]
if not isinstance(value, (str, unicode, int, long, float)):
value = str(value)
- self._streaminfo[key] = value
- self.parent.set_streaminfo(self._streaminfo)
+ self.streaminfo[key] = value
+ self.parent.set_streaminfo(self.streaminfo)
return True
@@ -163,7 +163,7 @@
Open mrl.
"""
self._gst.set_property('uri', uri)
- self._streaminfo = {}
+ self.streaminfo = {}
self.set_state(STATE_OPEN)
@@ -199,8 +199,8 @@
pos = current + value * 1000000000
if type == SEEK_ABSOLUTE:
pos = value * 1000000000
- if type == SEEK_PERCENTAGE and 'duration' in self._streaminfo:
- pos = (self._streaminfo['duration'] / 100) * value
+ if type == SEEK_PERCENTAGE and 'duration' in self.streaminfo:
+ pos = (self.streaminfo['duration'] / 100) * value
# seek now
self._gst.seek(1.0, gst.FORMAT_TIME,
gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_ACCURATE,
Modified: trunk/popcorn/src/backends/gstreamer/player.py
==============================================================================
--- trunk/popcorn/src/backends/gstreamer/player.py (original)
+++ trunk/popcorn/src/backends/gstreamer/player.py Sun Feb 17 15:10:39 2008
@@ -45,12 +45,12 @@
def __init__(self, properties):
super(GStreamer, self).__init__(properties)
- self._state = STATE_NOT_RUNNING
+ self.state = STATE_NOT_RUNNING
self._gst = None
def _child_exited(self, exitcode):
- self._state = STATE_NOT_RUNNING
+ self.state = STATE_NOT_RUNNING
self._gst = None
@@ -66,11 +66,11 @@
self._gst = ChildProcess(self, script)
self._gst.set_stop_command(WeakCallback(self._gst.die))
self._gst.start().connect_weak(self._child_exited)
- self._position = 0.0
- self._state = STATE_OPENING
+ self.position = 0.0
+ self.state = STATE_OPENING
self._gst.open(self._mrl)
if self._window:
- aspect, size = self._get_aspect()
+ aspect, size = self.aspect
self._gst.configure_video('xv', window=self._window.get_id(),
aspect=aspect, size=size)
else:
@@ -89,7 +89,7 @@
"""
Stop playback.
"""
- self._state = STATE_STOPPING
+ self.state = STATE_STOPPING
self._gst.stop()
@@ -98,7 +98,7 @@
Pause playback.
"""
self._gst.pause()
- self._state = STATE_PAUSED
+ self.state = STATE_PAUSED
def resume(self):
@@ -106,7 +106,7 @@
Resume playback.
"""
self._gst.play()
- self._state = STATE_PLAYING
+ self.state = STATE_PLAYING
def release(self):
@@ -114,7 +114,7 @@
Release audio and video devices.
"""
if self._gst:
- self._state = STATE_SHUTDOWN
+ self.state = STATE_SHUTDOWN
self._gst.die()
Modified: trunk/popcorn/src/backends/mplayer/player.py
==============================================================================
--- trunk/popcorn/src/backends/mplayer/player.py (original)
+++ trunk/popcorn/src/backends/mplayer/player.py Sun Feb 17 15:10:39 2008
@@ -155,7 +155,7 @@
def __init__(self, properties):
super(MPlayer, self).__init__(properties)
- self._state = STATE_NOT_RUNNING
+ self.state = STATE_NOT_RUNNING
self._mp_cmd = config.mplayer.path
if not self._mp_cmd:
self._mp_cmd = kaa.utils.which("mplayer")
@@ -182,7 +182,7 @@
def _handle_mp_info(self, info, exception=None, traceback=None):
if exception is not None:
- self._state = STATE_NOT_RUNNING
+ self.state = STATE_NOT_RUNNING
# TODO: handle me
raise info
self._mp_info = info
@@ -202,24 +202,24 @@
if line.startswith("V:") or line.startswith("A:"):
m = MPlayer.RE_STATUS.search(line)
if m:
- old_pos = self._position
+ old_pos = self.position
p = (m.group(1) or m.group(2)).replace(",", ".")
- self._position = float(p)
- # if self._position - old_pos < 0 or \
- # self._position - old_pos > 1:
- # self.signals["seek"].emit(self._position)
+ self.position = float(p)
+ # if self.position - old_pos < 0 or \
+ # self.position - old_pos > 1:
+ # self.signals["seek"].emit(self.position)
# XXX this logic won't work with seek-while-paused patch; state
# will be "playing" after a seek.
- if self._state == STATE_PAUSED:
- self._state = STATE_PLAYING
- if self._state == STATE_OPEN:
+ if self.state == STATE_PAUSED:
+ self.state = STATE_PLAYING
+ if self.state == STATE_OPEN:
self.set_frame_output_mode()
- self._state = STATE_PLAYING
+ self.state = STATE_PLAYING
self.signals["stream_changed"].emit()
elif line.startswith(" ===== PAUSE"):
- self._state = STATE_PAUSED
+ self.state = STATE_PAUSED
elif line.startswith("ID_") and line.find("=") != -1:
attr, value = line.split('=', 1)
@@ -237,21 +237,21 @@
"LENGTH": ("length", float),
"FILENAME": ("filename", str) }
if attr in info:
- self._streaminfo[info[attr][0]] = info[attr][1](value)
+ self.streaminfo[info[attr][0]] = info[attr][1](value)
elif line.startswith("Movie-Aspect"):
aspect = line[16:].split(":")[0].replace(",", ".")
if aspect[0].isdigit():
- self._streaminfo["aspect"] = float(aspect)
+ self.streaminfo["aspect"] = float(aspect)
elif line.startswith("VO:"):
m = re.search("=> (\d+)x(\d+)", line)
if m:
vo_w, vo_h = int(m.group(1)), int(m.group(2))
- if "aspect" not in self._streaminfo or \
- self._streaminfo["aspect"] == 0:
+ if "aspect" not in self.streaminfo or \
+ self.streaminfo["aspect"] == 0:
# No aspect defined, so base it on vo size.
- self._streaminfo["aspect"] = vo_w / float(vo_h)
+ self.streaminfo["aspect"] = vo_w / float(vo_h)
elif line.startswith("overlay:") and line.find("reusing") == -1:
m = re.search("(\d+)x(\d+)", line)
@@ -280,14 +280,14 @@
self.set_frame_output_mode() # Sync
elif line.startswith("EOF code"):
- if self._state in (STATE_PLAYING, STATE_PAUSED):
+ if self.state in (STATE_PLAYING, STATE_PAUSED):
# The player may be idle bow, but we can't set the
# state. If we do, generic will start a new file while
# the mplayer process is still running and that does
# not work. Unless we reuse mplayer proccesses we
# don't react on EOF and only handle the dead
# proccess.
- # self._state = STATE_IDLE
+ # self.state = STATE_IDLE
pass
elif line.startswith("FATAL:"):
@@ -296,7 +296,7 @@
def _child_exited(self, exitcode):
log.info('mplayer exited')
- self._state = STATE_NOT_RUNNING
+ self.state = STATE_NOT_RUNNING
def _is_alive(self):
@@ -312,7 +312,7 @@
"""
Open media.
"""
- if self.get_state() != STATE_NOT_RUNNING:
+ if self.state != STATE_NOT_RUNNING:
raise RuntimeError('mplayer not in STATE_NOT_RUNNING')
args = []
@@ -330,7 +330,7 @@
self._media = media
self._media.mplayer_args = args
- self._state = STATE_OPENING
+ self.state = STATE_OPENING
# We have a problem at this point. The 'open' function is used to
# open the stream and provide information about it. After that, the
@@ -348,7 +348,7 @@
"""
mplayer -identify finished
"""
- self._state = STATE_OPEN
+ self.state = STATE_OPEN
def configure_video(self):
@@ -364,7 +364,7 @@
# some problems when we don't have an 1:1 pixel aspect
# ratio on the monitor and using software scaler.
- aspect, dsize = self._get_aspect()
+ aspect, dsize = self.aspect
size = self._window.get_size()
# This may be needed for some non X based displays
args.add(screenw=size[0], screenh=size[1])
@@ -443,8 +443,8 @@
if config.audio.driver == 'alsa':
args[-1] += ":noblock"
- n_channels = self._streaminfo.get('channels')
- if self._streaminfo.get('acodec') in ('a52', 'hwac3', 'ffdts',
'hwdts'):
+ n_channels = self.streaminfo.get('channels')
+ if self.streaminfo.get('acodec') in ('a52', 'hwac3', 'ffdts',
'hwdts'):
device = config.audio.device.passthrough
elif n_channels == 1:
device = config.audio.device.mono
@@ -562,7 +562,7 @@
"""
if self._mplayer:
self._mplayer.stop()
- self._state = STATE_SHUTDOWN
+ self.state = STATE_SHUTDOWN
def pause(self):
Modified: trunk/popcorn/src/backends/xine/player.py
==============================================================================
--- trunk/popcorn/src/backends/xine/player.py (original)
+++ trunk/popcorn/src/backends/xine/player.py Sun Feb 17 15:10:39 2008
@@ -103,7 +103,7 @@
except kaa.shm.error:
pass
self._frame_shmem = None
- self._state = STATE_NOT_RUNNING
+ self.state = STATE_NOT_RUNNING
#
@@ -111,28 +111,28 @@
#
def _child_set_status(self, pos, time, length, status, speed):
- old_pos = self._position
- if self.get_state() in (STATE_PAUSED, STATE_PLAYING, STATE_OPEN) and
time is not None:
- self._position = float(time)
+ old_pos = self.position
+ if self.state in (STATE_PAUSED, STATE_PLAYING, STATE_OPEN) and time is
not None:
+ self.position = float(time)
if length is not None:
- self._streaminfo["length"] = length
+ self.streaminfo["length"] = length
if status == 2:
- if self.get_state() not in (STATE_PAUSED, STATE_PLAYING):
- self._state = STATE_PLAYING
- if speed == xine.SPEED_PAUSE and self.get_state() != STATE_PAUSED:
- self._state = STATE_PAUSED
- elif speed > xine.SPEED_PAUSE and self.get_state() !=
STATE_PLAYING:
- prev_state = self.get_state()
- self._state = STATE_PLAYING
+ if self.state not in (STATE_PAUSED, STATE_PLAYING):
+ self.state = STATE_PLAYING
+ if speed == xine.SPEED_PAUSE and self.state != STATE_PAUSED:
+ self.state = STATE_PAUSED
+ elif speed > xine.SPEED_PAUSE and self.state != STATE_PLAYING:
+ prev_state = self.state
+ self.state = STATE_PLAYING
# TODO:
- # if self._position - old_pos < 0 or self._position - old_pos > 1:
- # self.signals["seek"].emit(self._position)
+ # if self.position - old_pos < 0 or self.position - old_pos > 1:
+ # self.signals["seek"].emit(self.position)
elif status in (0, 1):
- if self.get_state() in (STATE_PAUSED, STATE_PLAYING):
+ if self.state in (STATE_PAUSED, STATE_PLAYING):
# Stream ended.
log.debug('xine stream ended')
- self._state = STATE_IDLE
+ self.state = STATE_IDLE
def _child_osd_configure(self, width, height, aspect):
@@ -161,14 +161,14 @@
def _child_set_streaminfo(self, status, info):
if not status:
# failed playback
- self._state = STATE_IDLE
+ self.state = STATE_IDLE
return
- changed = info != self._streaminfo
- self._streaminfo = info
+ changed = info != self.streaminfo
+ self.streaminfo = info
- if self._state == STATE_OPENING:
- self._state = STATE_OPEN
+ if self.state == STATE_OPENING:
+ self.state = STATE_OPEN
if changed:
self.signals["stream_changed"].emit()
@@ -181,8 +181,8 @@
def _child_play_stopped(self):
log.debug('xine stopped')
- if not self._state in (STATE_NOT_RUNNING, STATE_SHUTDOWN):
- self._state = STATE_IDLE
+ if not self.state in (STATE_NOT_RUNNING, STATE_SHUTDOWN):
+ self.state = STATE_IDLE
#
@@ -229,8 +229,7 @@
elif self._xine_configured:
# No previous window, must reconfigure vo.
self._xine.configure_video(window.get_id(),
window.get_size(),
- self._get_pixel_aspect(),
- config.video.colorkey)
+ self.pixel_aspect,
config.video.colorkey)
# Sends a window_changed command to slave.
if window and self._xine:
@@ -245,7 +244,7 @@
self._xine.set_config(config)
if self._window:
self._xine.configure_video(self._window.get_id(),
self._window.get_size(),
- self._get_pixel_aspect(),
config.video.colorkey)
+ self.pixel_aspect,
config.video.colorkey)
else:
self._xine.configure_video(None, None, None, None)
self._xine.configure_audio(config.audio.driver)
@@ -265,10 +264,10 @@
self._child_spawn()
self.configure()
- self._position = 0.0
+ self.position = 0.0
log.debug('xine open %s' % self._mrl)
self._xine.open(self._mrl)
- self._state = STATE_OPENING
+ self.state = STATE_OPENING
def play(self):
@@ -285,7 +284,7 @@
Stop playback.
"""
log.debug('xine stop')
- self._state = STATE_STOPPING
+ self.state = STATE_STOPPING
self._xine.stop()
@@ -308,7 +307,7 @@
Release audio and video devices.
"""
if self._xine:
- self._state = STATE_SHUTDOWN
+ self.state = STATE_SHUTDOWN
self._xine.die()
@@ -428,7 +427,7 @@
if size != None:
self._cur_frame_output_mode[2] = size
- if self.get_state() == STATE_OPENING:
+ if self.state == STATE_OPENING:
return
vo, notify, size = self._cur_frame_output_mode
Modified: trunk/popcorn/src/generic.py
==============================================================================
--- trunk/popcorn/src/generic.py (original)
+++ trunk/popcorn/src/generic.py Sun Feb 17 15:10:39 2008
@@ -39,6 +39,7 @@
# kaa imports
import kaa
import kaa.metadata
+from kaa.utils import property
# kaa.popcorn imports
import backends.manager
@@ -86,8 +87,7 @@
def __init__(self, window=None):
self._player = None
- self._media = None
- self._size = (0,0)
+ self.media = None
self.set_window(window)
self._properties = {
@@ -160,15 +160,6 @@
self._failed_player = []
- def set_window(self, window):
- if window:
- self._size = window.get_size()
- self._window = window
- if self._player:
- self._player.set_window(self._window)
- self._player.set_size(self._size)
-
-
def _state_change(self, old_state, state):
"""
"""
@@ -242,7 +233,7 @@
for p in backends.manager.get_all_players():
if not getattr(config, p).enabled and not p in exclude:
exclude.append(p)
- cls = backends.manager.get_player_class(self._media, self._open_caps,
exclude, player, self._window)
+ cls = backends.manager.get_player_class(self.media, self._open_caps,
exclude, player, self._window)
if self._player:
# We already have a player. The player has to be stopped if
@@ -262,7 +253,7 @@
if not cls:
# No possible player.
self.signals["failed"].emit()
- raise PlayerError("No supported player found to play %s" %
self._media.url)
+ raise PlayerError("No supported player found to play %s" %
self.media.url)
if self._player:
# Reuse player
@@ -271,14 +262,14 @@
# Create a player based on cls.
properties = self._properties.copy()
self._player = cls(properties)
- self._player._state_changed.connect_weak(self._state_change)
+
self._player.signals['state_changed'].connect_weak(self._state_change)
for signal in self._player.signals:
-
self._player.signals[signal].connect_weak(self.signals[signal].emit)
+ if signal in self.signals:
+
self._player.signals[signal].connect_weak(self.signals[signal].emit)
# set some player variables
self._player.set_window(self._window)
- self._player.set_size(self._size)
- self._player.open(self._media)
+ self._player.open(self.media)
# wait until we reach STATE_OPEN (ready to play) or
# STATE_IDLE or STATE_NOT_RUNNING (failed)
@@ -312,19 +303,19 @@
if kaa.main.is_shutting_down():
yield False
- self._media = kaa.metadata.parse(mrl)
- if not self._media:
+ self.media = kaa.metadata.parse(mrl)
+ if not self.media:
# unable to detect, create dummy
if '://' not in mrl:
mrl = 'file://' + mrl
- self._media = kaa.metadata.Media(hash=dict(url=mrl,
media='MEDIA_UNKNOWN'))
- self._media.scheme = self._media.url[:self._media.url.find(':/')]
+ self.media = kaa.metadata.Media(hash=dict(url=mrl,
media='MEDIA_UNKNOWN'))
+ self.media.scheme = self.media.url[:self.media.url.find(':/')]
self._open_caps = caps
self._failed_player = []
self._pending = []
yield self._open(player)
- self.signals['open'].emit(self._player.get_info())
+ self.signals['open'].emit(self._player.streaminfo)
@required_states(STATE_OPEN, STATE_PLAYING, STATE_PAUSED)
@@ -405,23 +396,45 @@
self._player.seek(value, type)
+ @property
+ def position(self):
+ """
+ Get current playing position.
+ """
+ if self._player:
+ return self._player.position
+ return 0.0
+
+
def get_position(self):
"""
Get current playing position.
"""
+ log.warning('get_position() is DEPRECATED, use position')
if self._player:
- return self._player.get_position()
+ return self._player.position
return 0.0
- def get_info(self):
+ @property
+ def streaminfo(self):
"""
Get information about the stream.
"""
# FIXME: more sure the following variables can be accessed:
# audio-track-list, subtitle-track-list, elapsed and length
if self._player:
- return self._player.get_info()
+ return self._player.streaminfo
+ return {}
+
+
+ def get_info(self):
+ """
+ Get information about the stream.
+ """
+ log.warning('get_info() is DEPRECATED, use streaminfo')
+ if self._player:
+ return self._player.streaminfo
return {}
@@ -429,7 +442,8 @@
"""
Return kaa.metadata media object of the mrl loaded.
"""
- return self._media
+ log.warning('get_media() is DEPRECATED, use media')
+ return self.media
def nav_command(self, input):
@@ -472,13 +486,23 @@
return self._window
+ def set_window(self, window):
+ """
+ Set a new window for the player. Not all backends support changing
+ windows during runtime.
+ """
+ self._window = window
+ if self._player:
+ self._player.set_window(self._window)
+
+
def _get_state(self):
"""
Get state of the player for internal use.
"""
if not self._player:
return STATE_NOT_RUNNING
- return self._player.get_state()
+ return self._player.state
def get_state(self):
@@ -488,25 +512,9 @@
"""
if not self._player:
return STATE_IDLE
- if self._player.get_state() in (STATE_NOT_RUNNING, STATE_SHUTDOWN):
+ if self._player.state in (STATE_NOT_RUNNING, STATE_SHUTDOWN):
return STATE_IDLE
- return self._player.get_state()
-
-
- def get_size(self):
- """
- Get output size.
- """
- return self._size
-
-
- def set_size(self, size):
- """
- Set output size.
- """
- self._size = size
- if self._player:
- return self._player.set_size(size)
+ return self._player.state
def set_property(self, prop, value):
@@ -517,6 +525,7 @@
# FIXME: use pending for some properties to respect the state.
# E.g. user calls open();play();set_property() the set_property
# should be handled in STATE_PLAYING.
+ # XXX: this can not happen if the pending command stuff will be
removed.
if self._player:
return self._player.set_property(prop, value)
self._properties[prop] = value
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog