Only load libmtp on demand

This commit is contained in:
Kovid Goyal 2012-08-09 19:27:52 +05:30
parent e5bb26800f
commit 6c8922ae25

View File

@ -86,14 +86,10 @@ class MTP_DEVICE(MTPDeviceBase):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
MTPDeviceBase.__init__(self, *args, **kwargs) MTPDeviceBase.__init__(self, *args, **kwargs)
self.detect = MTPDetect()
self.dev = None self.dev = None
self.filesystem_cache = None self.filesystem_cache = None
self.lock = RLock() self.lock = RLock()
self.blacklisted_devices = set() self.blacklisted_devices = set()
for x in vars(self.detect.libmtp):
if x.startswith('LIBMTP'):
setattr(self, x, getattr(self.detect.libmtp, x))
def set_debug_level(self, lvl): def set_debug_level(self, lvl):
self.detect.libmtp.set_debug_level(lvl) self.detect.libmtp.set_debug_level(lvl)
@ -140,6 +136,13 @@ class MTP_DEVICE(MTPDeviceBase):
def post_yank_cleanup(self): def post_yank_cleanup(self):
self.dev = self.filesystem_cache = None self.dev = self.filesystem_cache = None
@synchronous
def startup(self):
self.detect = MTPDetect()
for x in vars(self.detect.libmtp):
if x.startswith('LIBMTP'):
setattr(self, x, getattr(self.detect.libmtp, x))
@synchronous @synchronous
def shutdown(self): def shutdown(self):
self.dev = self.filesystem_cache = None self.dev = self.filesystem_cache = None
@ -240,6 +243,7 @@ if __name__ == '__main__':
from pprint import pprint from pprint import pprint
dev = MTP_DEVICE(None) dev = MTP_DEVICE(None)
dev.startup()
from calibre.devices.scanner import linux_scanner from calibre.devices.scanner import linux_scanner
devs = linux_scanner() devs = linux_scanner()
mtp_devs = dev.detect(devs) mtp_devs = dev.detect(devs)