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

Reply via email to