Update of /cvsroot/freevo/freevo/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4443
Modified Files:
rc.py
Log Message:
Again some interface changes. There is now only one function
handling all callbacks, including repeating calls with timer
Index: rc.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/rc.py,v
retrieving revision 1.34
retrieving revision 1.35
diff -C2 -d -r1.34 -r1.35
*** rc.py 30 May 2004 18:27:53 -0000 1.34
--- rc.py 31 May 2004 10:39:55 -0000 1.35
***************
*** 5,13 ****
# $Id$
#
! # Notes:
# Todo:
#
# -----------------------------------------------------------------------
# $Log$
# Revision 1.34 2004/05/30 18:27:53 dischi
# More event / main loop cleanup. rc.py has a changed interface now
--- 5,17 ----
# $Id$
#
! # Notes: This is the only class to be thread safe!
# Todo:
#
# -----------------------------------------------------------------------
# $Log$
+ # Revision 1.35 2004/05/31 10:39:55 dischi
+ # Again some interface changes. There is now only one function
+ # handling all callbacks, including repeating calls with timer
+ #
# Revision 1.34 2004/05/30 18:27:53 dischi
# More event / main loop cleanup. rc.py has a changed interface now
***************
*** 54,57 ****
--- 58,63 ----
from event import Event, BUTTON
+ SHUTDOWN = -1
+
PYLIRC = False
_singleton = None
***************
*** 100,108 ****
! def register(object, *arg):
"""
! register an object to the main loop
"""
! return get_singleton().register(object, *arg)
--- 106,116 ----
! def register(function, repeat, timer, *arg):
"""
! register an function to be called
! repeat: if true, call the function later again
! timer: timer * 0.01 seconds when to call the function
"""
! return get_singleton().register(function, repeat, timer, *arg)
***************
*** 330,338 ****
self.queue = []
self.event_callback = None
! self.one_time_callbacks = []
self.poll_objects = []
# lock all critical parts
self.lock = thread.allocate_lock()
!
def set_app(self, app, context):
--- 338,349 ----
self.queue = []
self.event_callback = None
! self.callbacks = []
! self.shutdown_callbacks = []
self.poll_objects = []
# lock all critical parts
self.lock = thread.allocate_lock()
! # last time we stopped sleeping
! self.sleep_timer = 0
!
def set_app(self, app, context):
***************
*** 394,416 ****
! def register(self, object, *arg):
"""
! register an object to the main loop
"""
self.lock.acquire()
! if type(object) in [ types.FunctionType, types.MethodType ]:
! self.one_time_callbacks.append((object, arg))
! elif not object in self.poll_objects:
! self.poll_objects.append(object)
self.lock.release()
! def unregister(self, object):
"""
unregister an object from the main loop
"""
self.lock.acquire()
! if object in self.poll_objects:
! self.poll_objects.remove(object)
self.lock.release()
--- 405,438 ----
! def register(self, function, repeat, timer, *arg):
"""
! register an function to be called
! repeat: if true, call the function later again
! timer: timer * 0.01 seconds when to call the function
"""
self.lock.acquire()
! if timer == SHUTDOWN:
! _debug_('register shutdown callback: %s' % function, 2)
! self.shutdown_callbacks.append([ function, arg ])
! else:
! if repeat:
! _debug_('register callback: %s' % function, 2)
! self.callbacks.append([ function, repeat, timer, 0, arg ])
self.lock.release()
! def unregister(self, function):
"""
unregister an object from the main loop
"""
self.lock.acquire()
! for c in copy.copy(self.callbacks):
! if c[0] == function:
! _debug_('unregister callback: %s' % function, 2)
! self.callbacks.remove(c)
! for c in copy.copy(self.shutdown_callbacks):
! if c[0] == function:
! _debug_('unregister shutdown callback: %s' % function, 2)
! self.shutdown_callbacks.remove(c)
self.lock.release()
***************
*** 420,426 ****
shutdown the rc
"""
! for p in copy.copy(self.poll_objects):
! if hasattr(p, 'stop'):
! p.stop()
--- 442,448 ----
shutdown the rc
"""
! for c in copy.copy(self.shutdown_callbacks):
! _debug_('shutting down %s' % c[0], 2)
! c[0](*c[1])
***************
*** 430,451 ****
"""
# run all registered callbacks
! while len(self.one_time_callbacks) > 0:
! self.lock.acquire()
! callback, arg = self.one_time_callbacks.pop(0)
! self.lock.release()
! callback(*arg)
!
! # run all registered objects having a poll() function
! # using poll_counter and poll_interval (if given)
! for p in copy.copy(self.poll_objects):
! if hasattr(p, 'poll_counter'):
! if not (self.app and p.poll_menu_only):
! p.poll_counter += 1
! if p.poll_counter == p.poll_interval:
! p.poll_counter = 0
! p.poll()
else:
! p.poll()
!
--- 452,469 ----
"""
# run all registered callbacks
! for c in copy.copy(self.callbacks):
! if c[2] == c[3]:
! # time is up, call it:
! c[0](*c[4])
! if not c[1]:
! # remove if it is no repeat callback:
! self.lock.acquire()
! self.callbacks.remove(c)
! self.lock.release()
! else:
! # reset counter for next run
! c[3] = 0
else:
! c[3] += 1
***************
*** 463,469 ****
# poll everything
self.poll()
# wait some time
! time.sleep(0.01)
# search for events in the queue
if len(self.queue):
--- 481,492 ----
# poll everything
self.poll()
+
# wait some time
! duration = 0.01 - (time.time() - self.sleep_timer)
! if duration > 0:
! time.sleep(duration)
! self.sleep_timer = time.time()
+
# search for events in the queue
if len(self.queue):
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog