mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Make PRS 500 driver thread safe. Fixes #4307 (PRS-500 not recognized in 0.6.30)
This commit is contained in:
commit
d7c24b9896
@ -39,6 +39,7 @@ from tempfile import TemporaryFile
|
||||
from array import array
|
||||
from functools import wraps
|
||||
from StringIO import StringIO
|
||||
from threading import RLock
|
||||
|
||||
from calibre.devices.interface import DevicePlugin
|
||||
from calibre.devices.libusb import Error as USBError
|
||||
@ -52,6 +53,7 @@ from calibre.devices.usbms.deviceconfig import DeviceConfig
|
||||
# Protocol versions this driver has been tested with
|
||||
KNOWN_USB_PROTOCOL_VERSIONS = [0x3030303030303130L]
|
||||
|
||||
lock = RLock()
|
||||
|
||||
class File(object):
|
||||
"""
|
||||
@ -161,9 +163,12 @@ class PRS500(DeviceConfig, DevicePlugin):
|
||||
"""
|
||||
@wraps(func)
|
||||
def run_session(*args, **kwargs):
|
||||
with lock:
|
||||
dev = args[0]
|
||||
res = None
|
||||
try:
|
||||
if not hasattr(dev, 'in_session'):
|
||||
dev.reset()
|
||||
if not dev.handle:
|
||||
dev.open()
|
||||
if not getattr(dev, 'in_session', False):
|
||||
@ -204,6 +209,7 @@ class PRS500(DeviceConfig, DevicePlugin):
|
||||
If it is called with -1 that means that the
|
||||
task does not have any progress information
|
||||
"""
|
||||
with lock:
|
||||
self.device = get_device_by_id(self.VENDOR_ID, self.PRODUCT_ID)
|
||||
# Handle that is used to communicate with device. Setup in L{open}
|
||||
self.handle = None
|
||||
@ -244,8 +250,9 @@ class PRS500(DeviceConfig, DevicePlugin):
|
||||
Also initialize the device.
|
||||
See the source code for the sequence of initialization commands.
|
||||
"""
|
||||
with lock:
|
||||
if not hasattr(self, 'key'):
|
||||
self.key = '-1\0\0\0\0\0\0'
|
||||
self.reset()
|
||||
self.device = get_device_by_id(self.VENDOR_ID, self.PRODUCT_ID)
|
||||
if not self.device:
|
||||
raise DeviceError()
|
||||
@ -295,6 +302,7 @@ class PRS500(DeviceConfig, DevicePlugin):
|
||||
|
||||
def close(self):
|
||||
""" Release device interface """
|
||||
with lock:
|
||||
try:
|
||||
self.handle.reset()
|
||||
self.handle.release_interface(self.INTERFACE_ID)
|
||||
@ -313,6 +321,7 @@ class PRS500(DeviceConfig, DevicePlugin):
|
||||
@param timeout: The time to wait for a response from the
|
||||
device, in milliseconds. If there is no response, a L{usb.USBError} is raised.
|
||||
"""
|
||||
with lock:
|
||||
if self.log_packets:
|
||||
self.log_packet(command, "Command")
|
||||
bytes_sent = self.handle.control_msg(0x40, 0x80, command)
|
||||
@ -347,6 +356,7 @@ class PRS500(DeviceConfig, DevicePlugin):
|
||||
@param packet_size: Size of packets to be sent to device.
|
||||
C{data} is broken up into packets to be sent to device.
|
||||
"""
|
||||
with lock:
|
||||
def bulk_write_packet(packet):
|
||||
self.handle.bulk_write(self.BULK_OUT_EP, packet)
|
||||
if self.log_packets:
|
||||
@ -395,6 +405,7 @@ class PRS500(DeviceConfig, DevicePlugin):
|
||||
@return: A list of packets read from the device.
|
||||
Each packet is of type data_type
|
||||
"""
|
||||
with lock:
|
||||
msize = self.bulk_read_max_packet_size
|
||||
def bulk_read_packet(data_type=Answer, size=0x1000):
|
||||
rsize = size
|
||||
|
@ -7,14 +7,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2009-12-25 04:54+0000\n"
|
||||
"PO-Revision-Date: 2009-12-25 19:11+0000\n"
|
||||
"POT-Creation-Date: 2009-12-26 16:57+0000\n"
|
||||
"PO-Revision-Date: 2009-12-26 16:45+0000\n"
|
||||
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||
"Language-Team: Arabic <ar@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-26 04:31+0000\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-27 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
|
||||
@ -64,8 +64,8 @@ msgstr "لا يفعل شيءً"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:593
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:783
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:594
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:784
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896
|
||||
@ -132,7 +132,7 @@ msgstr "لا يفعل شيءً"
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
|
||||
@ -7361,10 +7361,18 @@ msgid "English (TH)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
|
||||
msgid "Dutch (NL)"
|
||||
msgid "English (CY)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
|
||||
msgid "German (AT)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
msgid "Dutch (NL)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106
|
||||
msgid "Dutch (BE)"
|
||||
msgstr ""
|
||||
|
||||
|
@ -7,14 +7,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: de\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-12-25 04:54+0000\n"
|
||||
"PO-Revision-Date: 2009-12-25 21:08+0000\n"
|
||||
"POT-Creation-Date: 2009-12-26 16:57+0000\n"
|
||||
"PO-Revision-Date: 2009-12-26 20:24+0000\n"
|
||||
"Last-Translator: S. Dorscht <Unknown>\n"
|
||||
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-26 04:32+0000\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-27 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
@ -65,8 +65,8 @@ msgstr "Macht absolut gar nichts"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:593
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:783
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:594
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:784
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896
|
||||
@ -133,7 +133,7 @@ msgstr "Macht absolut gar nichts"
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
|
||||
@ -8227,10 +8227,18 @@ msgid "English (TH)"
|
||||
msgstr "Englisch (TH)"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
|
||||
msgid "English (CY)"
|
||||
msgstr "Englisch (CY)"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
|
||||
msgid "German (AT)"
|
||||
msgstr "Deutsch (AT)"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
msgid "Dutch (NL)"
|
||||
msgstr "Holländisch (NL)"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106
|
||||
msgid "Dutch (BE)"
|
||||
msgstr "Holländisch (BE)"
|
||||
|
||||
|
@ -10,14 +10,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: es\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-12-25 04:54+0000\n"
|
||||
"PO-Revision-Date: 2009-12-26 01:25+0000\n"
|
||||
"POT-Creation-Date: 2009-12-26 16:57+0000\n"
|
||||
"PO-Revision-Date: 2009-12-26 16:48+0000\n"
|
||||
"Last-Translator: mosteo <alejandro@mosteo.com>\n"
|
||||
"Language-Team: Spanish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-26 04:33+0000\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-27 04:32+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/customize/__init__.py:41
|
||||
@ -67,8 +67,8 @@ msgstr "No hacer nada en absoluto"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:593
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:783
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:594
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:784
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896
|
||||
@ -135,7 +135,7 @@ msgstr "No hacer nada en absoluto"
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
|
||||
@ -8181,10 +8181,18 @@ msgid "English (TH)"
|
||||
msgstr "Inglés (TH)"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
|
||||
msgid "English (CY)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
|
||||
msgid "German (AT)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
msgid "Dutch (NL)"
|
||||
msgstr "Neerlandés (NL)"
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106
|
||||
msgid "Dutch (BE)"
|
||||
msgstr "Neerlandés (BE)"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -7,14 +7,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2009-12-25 04:54+0000\n"
|
||||
"PO-Revision-Date: 2009-12-25 19:14+0000\n"
|
||||
"POT-Creation-Date: 2009-12-26 16:57+0000\n"
|
||||
"PO-Revision-Date: 2009-12-26 16:50+0000\n"
|
||||
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||
"Language-Team: Latvian <ivars_a@inbox.lv>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-26 04:32+0000\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-27 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Poedit-Country: LATVIA\n"
|
||||
"X-Poedit-Language: Latvian\n"
|
||||
@ -66,8 +66,8 @@ msgstr "Pilnīgi neko nedara"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:593
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:783
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:594
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:784
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896
|
||||
@ -134,7 +134,7 @@ msgstr "Pilnīgi neko nedara"
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
|
||||
@ -7354,10 +7354,18 @@ msgid "English (TH)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
|
||||
msgid "Dutch (NL)"
|
||||
msgid "English (CY)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
|
||||
msgid "German (AT)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
msgid "Dutch (NL)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106
|
||||
msgid "Dutch (BE)"
|
||||
msgstr ""
|
||||
|
||||
|
@ -6,14 +6,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: calibre 0.4.55\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-12-25 04:54+0000\n"
|
||||
"PO-Revision-Date: 2009-12-25 19:27+0000\n"
|
||||
"POT-Creation-Date: 2009-12-26 16:57+0000\n"
|
||||
"PO-Revision-Date: 2009-12-26 16:54+0000\n"
|
||||
"Last-Translator: Kovid Goyal <Unknown>\n"
|
||||
"Language-Team: American English <kde-i18n-doc@lists.kde.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-26 04:32+0000\n"
|
||||
"X-Launchpad-Export-Date: 2009-12-27 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Poedit-Country: RUSSIAN FEDERATION\n"
|
||||
"X-Poedit-Language: Russian\n"
|
||||
@ -68,8 +68,8 @@ msgstr "Ничего не делает"
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:79
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:121
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:155
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:593
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:783
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:594
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/mobi/reader.py:784
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:49
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/odt/input.py:51
|
||||
#: /home/kovid/work/calibre/src/calibre/ebooks/oeb/base.py:896
|
||||
@ -136,7 +136,7 @@ msgstr "Ничего не делает"
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:645
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:717
|
||||
#: /home/kovid/work/calibre/src/calibre/library/server.py:764
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:107
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:45
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:63
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/podofo/__init__.py:77
|
||||
@ -7760,10 +7760,18 @@ msgid "English (TH)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:103
|
||||
msgid "Dutch (NL)"
|
||||
msgid "English (CY)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:104
|
||||
msgid "German (AT)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:105
|
||||
msgid "Dutch (NL)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/kovid/work/calibre/src/calibre/utils/localization.py:106
|
||||
msgid "Dutch (BE)"
|
||||
msgstr ""
|
||||
|
||||
|
7541
src/calibre/translations/sq.po
Normal file
7541
src/calibre/translations/sq.po
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user