'libvlc_media_t*': 'Media',
'libvlc_log_t*': 'Log',
'libvlc_log_iterator_t*': 'LogIterator',
- 'libvlc_log_message_t*': 'LogMessage',
+ 'libvlc_log_message_t*': 'ctypes.POINTER(LogMessage)',
'libvlc_event_type_t': 'ctypes.c_uint',
'libvlc_event_manager_t*': 'EventManager',
'libvlc_media_discoverer_t*': 'MediaDiscoverer',
# Check for standard methods
if name == 'count':
# There is a count method. Generate a __len__ one.
- self.output(""" def __len__(self):
+ if params and params[-1][0] == 'libvlc_exception_t*':
+ self.output(""" def __len__(self):
e=VLCException()
return %s(self, e)
+""" % method)
+ else:
+ # No exception
+ self.output(""" def __len__(self):
+ return %s(self)
""" % method)
elif name.endswith('item_at_index'):
# Indexable (and thus iterable)"
('message', ctypes.c_char_p),
]
+ def __init__(self):
+ self.size=ctypes.sizeof(self)
+
def __str__(self):
return "vlc.LogMessage(%d:%s): %s" % (self.severity, self.type, self.message)
def next(self):
if not self.has_next():
raise StopIteration
- buffer=LogMessage()
+ buf=LogMessage()
e=VLCException()
- ret=libvlc_log_iterator_next(self, buffer, e)
- return ret
+ ret=libvlc_log_iterator_next(self, buf, e)
+ return ret.contents
class Log:
def __iter__(self):
return self.get_iterator()
+
+ def dump(self):
+ return [ str(m) for m in self ]
p=i.media_player_new(mrl)
self.assertEqual(p.get_state(), vlc.State.Ended)
+ def test_libvlc_logger(self):
+ i=vlc.Instance()
+ l=i.log_open()
+ l.clear()
+ self.assertEqual(l.count(), 0)
+ l.close()
+
+ def test_libvlc_logger_clear(self):
+ i=vlc.Instance()
+ l=i.log_open()
+ l.clear()
+ self.assertEqual(l.count(), 0)
+ l.close()
+
+ def test_libvlc_logger(self):
+ i=vlc.Instance()
+ i.set_log_verbosity(3)
+ l=i.log_open()
+ # This should generate a log message
+ i.add_intf('dummy')
+ self.assertNotEqual(l.count(), 0)
+ for m in l:
+ # Ensure that messages can be read.
+ self.assertNotEqual(len(m.message), 0)
+ l.close()
+
if __name__ == '__main__':
unittest.main()