Author: duncan
Date: Sun Oct 21 14:36:07 2007
New Revision: 10010
Log:
Updated event code from dischi to use kaa.notifier added
Modified:
branches/rel-1/freevo/src/event.py
branches/rel-1/freevo/src/main.py
branches/rel-1/freevo/src/rc.py
Modified: branches/rel-1/freevo/src/event.py
==============================================================================
--- branches/rel-1/freevo/src/event.py (original)
+++ branches/rel-1/freevo/src/event.py Sun Oct 21 14:36:07 2007
@@ -28,8 +28,9 @@
#
# -----------------------------------------------------------------------
+import kaa.notifier
-class Event:
+class Event(kaa.notifier.Event):
"""
an event is passed to the different eventhandlers in Freevo to
activate some action.
Modified: branches/rel-1/freevo/src/main.py
==============================================================================
--- branches/rel-1/freevo/src/main.py (original)
+++ branches/rel-1/freevo/src/main.py Sun Oct 21 14:36:07 2007
@@ -56,6 +56,7 @@
import config
import kaa.metadata as mmpython
+ import kaa.notifier
import kaa.imlib2 as Image
@@ -248,7 +249,8 @@
self.eventlistener_plugins.append(p)
else:
self.eventhandler_plugins.append(p)
-
+ kaa.notifier.EventHandler(self.eventhandler).register()
+
def eventhandler(self, event):
"""
@@ -317,15 +319,6 @@
_debug_('no target for events given')
- def run(self):
- """
- the real main loop
- """
- while 1:
- self.eventhandler(rc.get_event(True))
-
-
-
def signal_handler(sig, frame):
"""
the signal handler to shut down freevo
@@ -469,7 +462,10 @@
# Kick off the main menu loop
_debug_('Main loop starting...',2)
- MainTread().run()
+
+ MainTread()
+
+ kaa.notifier.loop()
except KeyboardInterrupt:
@@ -481,7 +477,7 @@
pass
except:
- _debug_('Crash!', config.DCRITICAL)
+ _debug_('Crash!', DCRITICAL)
try:
tb = sys.exc_info()[2]
fname, lineno, funcname, text = traceback.extract_tb(tb)[-1]
Modified: branches/rel-1/freevo/src/rc.py
==============================================================================
--- branches/rel-1/freevo/src/rc.py (original)
+++ branches/rel-1/freevo/src/rc.py Sun Oct 21 14:36:07 2007
@@ -35,6 +35,8 @@
import thread
import types
+import kaa.notifier
+
import config
import evdev
@@ -125,21 +127,6 @@
return get_singleton().resume()
-def poll():
- """
- poll all registered callbacks
- """
- return get_singleton().poll()
-
-
-def get_event(blocking=False):
- """
- get next event. If blocking is True, this function will block until
- there is a new event (also call all registered callbacks while waiting)
- """
- return get_singleton().get_event(blocking)
-
-
#
--------------------------------------------------------------------------------
#
--------------------------------------------------------------------------------
@@ -489,8 +476,6 @@
self.app = None
self.context = 'menu'
- self.queue = []
- self.event_callback = None
self.callbacks = []
self.shutdown_callbacks = []
self.poll_objects = []
@@ -498,6 +483,7 @@
self.lock = thread.allocate_lock()
# last time we stopped sleeping
self.sleep_timer = 0
+ kaa.notifier.Timer(self.poll).start(0.01)
def set_app(self, app, context):
@@ -526,17 +512,9 @@
"""
add event to the queue
"""
- self.lock.acquire()
- try:
- if not isinstance(e, Event):
- self.queue += [ Event(e, context=self.context) ]
- else:
- self.queue += [ e ]
- finally:
- self.lock.release()
-
- if self.event_callback:
- self.event_callback()
+ if not isinstance(e, Event):
+ e = Event(e, context=self.context)
+ e.post()
def key_event_mapper(self, key):
@@ -622,6 +600,12 @@
"""
poll all registered functions
"""
+ # search all input objects for new events
+ for i in self.inputs:
+ e = i.poll(self)
+ if e:
+ self.post_event(self.key_event_mapper(e))
+
# run all registered callbacks
for c in copy.copy(self.callbacks):
if c[2] == c[3]:
@@ -642,50 +626,6 @@
c[3] += 1
- def get_event(self, blocking=False):
- """
- get next event. If blocking is True, this function will block until
- there is a new event (also call all registered callbacks while waiting)
- """
- if blocking:
- while 1:
- # get non blocking event
- event = self.get_event(False)
- if event:
- return event
- # 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):
- self.lock.acquire()
- try:
- try:
- ret = self.queue[0]
- del self.queue[0]
- return ret
- except IndexError:
- pass
- finally:
- self.lock.release()
-
- # search all input objects for new events
- for i in self.inputs:
- e = i.poll(self)
- if e:
- return self.key_event_mapper(e)
-
- return None
-
-
-
def subscribe(self, event_callback=None):
"""
subscribe to 'post_event'
@@ -694,3 +634,4 @@
return
self.event_callback = event_callback
+
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog