[1.0.1 ok] observe with onChange() does not work and does not run in background
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SikuliX |
Fix Committed
|
Critical
|
RaiMan |
Bug Description
--- fixed in 1.0.1 per August 20 at 2 pm gmt+1
run setup again after that time to get fix
-------
Hi,
My environment is
windows xp + JRE 6 update 45
I had test the code in official document
def changed(event):
print "something changed in ", event.region
for ch in event.changes:
sleep(1)
for ch in event.changes:
with selectRegion(
# any change in r larger than 50 pixels would trigger the changed function
onChange(50, changed)
observe(
wait(30) # another way to observe for 30 seconds
r.stopObserver()
when I use old version of sikuli (1.0RC3)
everything work fine,
but when I use version 1.0.1
will always get error message
[error] script [ sikulitest ] stopped with error in line 11 <--observe(
[error] java.lang.
I also tried on windows 7 64 bit + JRE7
have the same error,
is it a bug in version 1.0.1
or observe will be use in different way in new version?
Changed in sikuli: | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → RaiMan (raimund-hocke) |
milestone: | none → 1.1.0 |
Changed in sikuli: | |
status: | In Progress → Fix Committed |
importance: | High → Critical |
description: | updated |
summary: |
- [1.0.1] observe with onChange() does not work + [1.0.1 ok] observe with onChange() does not work and does not run in + background |
... and yes, I have changed a lot with observe:
From the ChangeLog of 1.0.1
--- observe is reworked and options are added
- it is more verbose with higher debug levels
- it still stops observing after the first match (even in background with FOREVER) (not for onChange())
- if you want to run it continually, use (except onChange()) seconds)
event.repeat(
which will continue the observe after having waited the given seconds (e.g. to give time to the GUI for changes)
For all events: it is internally counted, how often the handler was visited, so it is now possible to decide in the handler wether to stop the observe after some time using e.g. ver()
if event.getCount() > 10: event.stopObser
So there is no longer the need to stop the observation in the main script after some time.
... and yes: event.stopObser ver() is now sufficient (instead of event.region. stopObserver( ) )
You still have to take care, to stop background observations at the end of the script (to be fixed with 1.1)