mpv.py: add check_core_alive, check core in __getattr__, __setattr__
This commit is contained in:
parent
e98a91ed2b
commit
d6840f800e
1 changed files with 12 additions and 8 deletions
20
mpv.py
20
mpv.py
|
|
@ -809,6 +809,7 @@ class MPV(object):
|
||||||
|
|
||||||
self.handle = _mpv_create()
|
self.handle = _mpv_create()
|
||||||
self._event_thread = None
|
self._event_thread = None
|
||||||
|
self._core_shutdown = False
|
||||||
|
|
||||||
_mpv_set_option_string(self.handle, b'audio-display', b'no')
|
_mpv_set_option_string(self.handle, b'audio-display', b'no')
|
||||||
istr = lambda o: ('yes' if o else 'no') if type(o) is bool else str(o)
|
istr = lambda o: ('yes' if o else 'no') if type(o) is bool else str(o)
|
||||||
|
|
@ -850,8 +851,6 @@ class MPV(object):
|
||||||
else:
|
else:
|
||||||
self._event_thread = None
|
self._event_thread = None
|
||||||
|
|
||||||
self._core_shutdown = False
|
|
||||||
|
|
||||||
def _loop(self):
|
def _loop(self):
|
||||||
for event in _event_generator(self._event_handle):
|
for event in _event_generator(self._event_handle):
|
||||||
try:
|
try:
|
||||||
|
|
@ -895,6 +894,12 @@ class MPV(object):
|
||||||
or a user closing the mpv window."""
|
or a user closing the mpv window."""
|
||||||
return self._core_shutdown
|
return self._core_shutdown
|
||||||
|
|
||||||
|
def check_core_alive(self):
|
||||||
|
""" This method can be used as a sanity check to tests whether the core is still alive at the time it is
|
||||||
|
called."""
|
||||||
|
if self._core_shutdown:
|
||||||
|
raise ShutdownError('libmpv core has been shutdown')
|
||||||
|
|
||||||
def wait_until_paused(self):
|
def wait_until_paused(self):
|
||||||
"""Waits until playback of the current title is paused or done. Raises a ShutdownError if the core is shutdown while
|
"""Waits until playback of the current title is paused or done. Raises a ShutdownError if the core is shutdown while
|
||||||
waiting."""
|
waiting."""
|
||||||
|
|
@ -940,8 +945,7 @@ class MPV(object):
|
||||||
if not level_sensitive or not cond(getattr(self, name.replace('-', '_'))):
|
if not level_sensitive or not cond(getattr(self, name.replace('-', '_'))):
|
||||||
sema.acquire()
|
sema.acquire()
|
||||||
|
|
||||||
if self._core_shutdown:
|
self.check_core_alive()
|
||||||
raise ShutdownError('libmpv core has been shutdown')
|
|
||||||
|
|
||||||
shutdown_handler.unregister_mpv_events()
|
shutdown_handler.unregister_mpv_events()
|
||||||
self.unobserve_property(name, observer)
|
self.unobserve_property(name, observer)
|
||||||
|
|
@ -982,8 +986,7 @@ class MPV(object):
|
||||||
yield
|
yield
|
||||||
sema.acquire()
|
sema.acquire()
|
||||||
|
|
||||||
if self._core_shutdown:
|
self.check_core_alive()
|
||||||
raise ShutdownError('libmpv core has been shutdown')
|
|
||||||
|
|
||||||
shutdown_handler.unregister_mpv_events()
|
shutdown_handler.unregister_mpv_events()
|
||||||
target_handler.unregister_mpv_events()
|
target_handler.unregister_mpv_events()
|
||||||
|
|
@ -1427,8 +1430,7 @@ class MPV(object):
|
||||||
"""
|
"""
|
||||||
def register(callback):
|
def register(callback):
|
||||||
with self._event_handler_lock:
|
with self._event_handler_lock:
|
||||||
if self._core_shutdown:
|
self.check_core_alive()
|
||||||
raise ShutdownError('libmpv core has been shutdown')
|
|
||||||
types = [MpvEventID.from_str(t) if isinstance(t, str) else t for t in event_types] or MpvEventID.ANY
|
types = [MpvEventID.from_str(t) if isinstance(t, str) else t for t in event_types] or MpvEventID.ANY
|
||||||
@wraps(callback)
|
@wraps(callback)
|
||||||
def wrapper(event, *args, **kwargs):
|
def wrapper(event, *args, **kwargs):
|
||||||
|
|
@ -1732,6 +1734,7 @@ class MPV(object):
|
||||||
|
|
||||||
# Property accessors
|
# Property accessors
|
||||||
def _get_property(self, name, decoder=strict_decoder, fmt=MpvFormat.NODE):
|
def _get_property(self, name, decoder=strict_decoder, fmt=MpvFormat.NODE):
|
||||||
|
self.check_core_alive()
|
||||||
out = create_string_buffer(sizeof(MpvNode))
|
out = create_string_buffer(sizeof(MpvNode))
|
||||||
try:
|
try:
|
||||||
cval = _mpv_get_property(self.handle, name.encode('utf-8'), fmt, out)
|
cval = _mpv_get_property(self.handle, name.encode('utf-8'), fmt, out)
|
||||||
|
|
@ -1748,6 +1751,7 @@ class MPV(object):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def _set_property(self, name, value):
|
def _set_property(self, name, value):
|
||||||
|
self.check_core_alive()
|
||||||
ename = name.encode('utf-8')
|
ename = name.encode('utf-8')
|
||||||
if isinstance(value, (list, set, dict)):
|
if isinstance(value, (list, set, dict)):
|
||||||
_1, _2, _3, pointer = _make_node_str_list(value)
|
_1, _2, _3, pointer = _make_node_str_list(value)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue