Stop polling for ATR, when pace-tool is running
git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@150 96b47cad-a561-4643-ad3b-153ac7d7599c
This commit is contained in:
@@ -33,7 +33,7 @@ class PinpadGTK:
|
|||||||
try:
|
try:
|
||||||
self.builder.add_from_file(self.gladefile)
|
self.builder.add_from_file(self.gladefile)
|
||||||
except glib.GError, e:
|
except glib.GError, e:
|
||||||
popup = gtk.MessageDialog(None, gtk.DIALOG_MODAL,
|
popup = gtk.MessageDialog(None, gtk.DIALOG_MODAL,
|
||||||
gtk.MESSAGE_WARNING, gtk.BUTTONS_OK,
|
gtk.MESSAGE_WARNING, gtk.BUTTONS_OK,
|
||||||
e.message)
|
e.message)
|
||||||
popup.run()
|
popup.run()
|
||||||
@@ -120,6 +120,7 @@ class PinpadGTK:
|
|||||||
param = "--pin"
|
param = "--pin"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
self.cardChecker.pause() #Stop polling the card while PACE is running
|
||||||
p = subprocess.Popen(["pace-tool", param, "-v"],
|
p = subprocess.Popen(["pace-tool", param, "-v"],
|
||||||
stdout=subprocess.PIPE, env=env_arg, close_fds=True)
|
stdout=subprocess.PIPE, env=env_arg, close_fds=True)
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
@@ -128,6 +129,7 @@ class PinpadGTK:
|
|||||||
gtk.BUTTONS_OK, "pace-tool wurde nicht gefunden.")
|
gtk.BUTTONS_OK, "pace-tool wurde nicht gefunden.")
|
||||||
popup.run()
|
popup.run()
|
||||||
popup.destroy()
|
popup.destroy()
|
||||||
|
self.cardChecker.resume() #Restart cardChecker
|
||||||
return
|
return
|
||||||
|
|
||||||
line = p.stdout.readline()
|
line = p.stdout.readline()
|
||||||
@@ -142,6 +144,7 @@ class PinpadGTK:
|
|||||||
|
|
||||||
ret = p.poll()
|
ret = p.poll()
|
||||||
self.progressWindow.hide()
|
self.progressWindow.hide()
|
||||||
|
self.cardChecker.resume() #Restart cardChecker
|
||||||
|
|
||||||
if (ret == 0):
|
if (ret == 0):
|
||||||
popup = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL |
|
popup = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL |
|
||||||
@@ -196,6 +199,7 @@ class cardChecker(Thread):
|
|||||||
def __init__(self, widget, atr, intervall=1):
|
def __init__(self, widget, atr, intervall=1):
|
||||||
Thread.__init__(self)
|
Thread.__init__(self)
|
||||||
self._finished = Event()
|
self._finished = Event()
|
||||||
|
self._paused = Event()
|
||||||
self.widget = widget
|
self.widget = widget
|
||||||
self.targetATR = atr
|
self.targetATR = atr
|
||||||
self.intervall = intervall
|
self.intervall = intervall
|
||||||
@@ -222,12 +226,19 @@ class cardChecker(Thread):
|
|||||||
def run(self):
|
def run(self):
|
||||||
while (True):
|
while (True):
|
||||||
if self._finished.isSet(): return
|
if self._finished.isSet(): return
|
||||||
|
if self._paused.isSet(): continue
|
||||||
self.__cardCheck()
|
self.__cardCheck()
|
||||||
self._finished.wait(self.intervall)
|
self._finished.wait(self.intervall)
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self._finished.set()
|
self._finished.set()
|
||||||
|
|
||||||
|
def pause(self):
|
||||||
|
self._paused.set()
|
||||||
|
|
||||||
|
def resume(self):
|
||||||
|
self._paused.clear()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
gobject.threads_init()
|
gobject.threads_init()
|
||||||
pinpad = PinpadGTK()
|
pinpad = PinpadGTK()
|
||||||
|
|||||||
Reference in New Issue
Block a user