sikuli-driver team mailing list archive
-
sikuli-driver team
-
Mailing list archive
-
Message #19374
Re: [Question #232802]: How to control function calls in sikuli event handlers
Question #232802 on Sikuli changed:
https://answers.launchpad.net/sikuli/+question/232802
Status: Open => Answered
RaiMan proposed the following answer:
Currently Sikuli does not have a locking mechanism, to hinder handlers
belonging to different background observes from running in parallel.
It is not only the mouse/keyboard problem, but already the usage of
globals (like priority) is critical, since concurrent access to these
global resources is not thread safe (the thread's time window might end
between checking and setting a global).
Since you are working on the Jython level, you might try to use Pythons
thread module's locking mechanism:
in main workflow:
def onAppear(event):
test = ABC()
global priority, myLock
myLock.acquire()
priority += 1
print "Captured the event", priority
if priority == 1:
test.add()
elif priority == 2:
test.subtract()
else:
test.multiply()
myLock.release()
myLock = thread.allocate_lock()
test = ABC()
test.waitForEvent()
--
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.