I am trying to add a timer callback to Maya 2010; but, I do not
understand how to set a sleep callback for it so that the timer
callback does not monopolize the CPU. In the python api, I thought all
you would have to do is
import sys
import maya.OpenMaya as OpenMaya
import time
def sleepCallback():
time.sleep(0.5)
def timerCallback(elapsedTime, lastTime, clientData):
sys.stdout.write('test\n')
sys.stdout.flush()
OpenMaya.MTimerMessage.setRegisteringCallableScript()
status = OpenMaya.MTimerMessage.setSleepCallback(sleepCallback)
id = OpenMaya.MTimerMessage.addTimerCallback(0.1, timerCallback, "")
But, I get the following error
# Error: TypeError: in method 'MTimerMessage_setSleepCallback',
argument 1 of type 'MTimerMessage::sleepCallbackPtr' #
This is a problem as I do not see sleepCallbackPtr available in
MTimerMessage.
dir(OpenMaya.MTimerMessage)
# Result: ['__class__', '__delattr__', '__dict__', '__doc__',
'__format__', '__getattribute__', '__hash__', '__init__',
'__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__swig_destroy__', '__weakref__', 'addTimerCallback',
'currentCallbackId', 'nodeCallbacks', 'registeringCallableScript',
'removeCallback', 'removeCallbacks', 'setRegisteringCallableScript',
'setSleepCallback', 'sleepCallback', 'thisown'] #
This is a none issue with the new MTimerMessage::addTimerCallback()
modification in 2011:
MTimerMessage::addTimerCallback() has been modified such that it no
longer requires that Maya's idle queue run continuously. As such, the
sleepCallback() and setSleepCallback() methods are no longer needed.
They have been deprecated and will be removed in a future version of
Maya. Also, the problem with timer callbacks firing as soon as they
were added has been fixed. The first firing of the callback will now
occur after the specified period has elapsed. If you had previously
worked around the old behaviour
by always skipping the first firing of the callback, you should remove
that workaround.
But, I need it to run in both 2010 and 2011. What am I not getting
here?
Thanks,
Ryan
--
http://groups.google.com/group/python_inside_maya