Author: duncan
Date: Fri Feb  1 14:56:03 2008
New Revision: 10321

Log:
No Freevo screensaver crashed after a week, so this is looking okay


Modified:
   branches/rel-1-7/freevo/src/plugins/screensaver/__init__.py
   branches/rel-1-7/freevo/src/plugins/screensaver/balls.py
   branches/rel-1-7/freevo/src/plugins/screensaver/bouncing_freevo.py

Modified: branches/rel-1-7/freevo/src/plugins/screensaver/__init__.py
==============================================================================
--- branches/rel-1-7/freevo/src/plugins/screensaver/__init__.py (original)
+++ branches/rel-1-7/freevo/src/plugins/screensaver/__init__.py Fri Feb  1 
14:56:03 2008
@@ -74,6 +74,7 @@
                   ('SCREENSAVER_CYCLE_TIME', 60, '# of seconds to run a 
screensaver before starting another saver.')
                 ]
 
+
     def eventhandler(self, event = None, menuw=None, arg=None):
         """
         eventhandler to handle the events. Always return False since we
@@ -99,18 +100,20 @@
         if not event.name == 'IDENTIFY_MEDIA':
             self.last_event = time.time()
 
-        if self.screensaver_showing :
+        if self.screensaver_showing:
             self.stop_saver()
             return True
 
         return False
 
+
     def poll(self):
         #_debug_("Saver got polled %f" % time.time())
         time_diff = time.time() - self.last_event
         if not self.screensaver_showing and  time_diff > self.start_delay :
             rc.post_event(Event("SCREENSAVER_START"))
 
+
     def start_saver (self):
         _debug_("start screensaver")
         self.screensaver_showing = True
@@ -123,11 +126,13 @@
         self.thread = threading.Thread(target =self.__run__)
         self.thread.start()
 
+
     def stop_saver (self):
         _debug_("stop screensaver")
         self.stop_screensaver = True
         self.thread.join()
 
+
     def __run__(self):
         _debug_('Screensaver thread started')
         current_saver = None
@@ -161,6 +166,7 @@
         osd.update()
         _debug_('Screensaver thread stopped')
 
+
     def __run_screensaver__(self, screensaver):
         _debug_('Running %s' % screensaver.plugin_name)
         try:

Modified: branches/rel-1-7/freevo/src/plugins/screensaver/balls.py
==============================================================================
--- branches/rel-1-7/freevo/src/plugins/screensaver/balls.py    (original)
+++ branches/rel-1-7/freevo/src/plugins/screensaver/balls.py    Fri Feb  1 
14:56:03 2008
@@ -35,8 +35,10 @@
 
 # freevo modules
 import config
+import osd
 from plugins.screensaver import ScreenSaverPlugin
 
+osd = osd.get_singleton()
 
 class PluginInterface(ScreenSaverPlugin):
     """
@@ -49,9 +51,11 @@
         self.fps = config.BALLS_FPS
 
     def config(self):
-        return [ ('BALLS_FPS', 25, 'Frames per second'),
-                       ('BALLS_MAX_BALLS', 100, 'Maximum number of balls'),
-                       ('BALLS_MIN_BALLS', 1, 'Minimum number of balls')]
+        return [
+            ('BALLS_FPS', 25, 'Frames per second'),
+            ('BALLS_MAX_BALLS', 100, 'Maximum number of balls'),
+            ('BALLS_MIN_BALLS', 1, 'Minimum number of balls'),
+        ]
 
 
     def start(self, width, height):
@@ -76,19 +80,23 @@
     def draw(self, screen):
         black = (0,0,0)
         dirty = []
-        screen.lock()
-        for ball in self.balls:
-            ball.clear(screen, black)
-            dirty.append(ball.rectangle())
-
-        for ball in self.balls:
-            ball.update(self.width, self.height, 0.9, 0.9)
-            ball.draw(screen)
-            dirty.append(ball.rectangle())
+        osd.mutex.acquire()
+        try:
+            screen.unlock()
+            for ball in self.balls:
+                ball.clear(screen, black)
+                dirty.append(ball.rectangle())
+            for ball in self.balls:
+                ball.update(self.width, self.height, 0.9, 0.9)
+                ball.draw(screen)
+                dirty.append(ball.rectangle())
+            screen.unlock()
+        finally:
+            osd.mutex.release()
 
-        screen.unlock()
 
 class Ball:
+
     def __init__(self):
         self.name = "ball"
         self.x = 100.0
@@ -106,14 +114,17 @@
         self.stopped_count = 0
         self.kick_threshold = 50
 
+
     def draw(self, screen):
         pygame.draw.ellipse(screen, self.color, (int(self.x), int(self.y), 
self.w, self.h))
         pygame.draw.ellipse(screen, (255,255,255), (int(self.x), int(self.y), 
self.w, self.h), 1)
 
+
     def clear(self, screen, color):
         pygame.draw.ellipse(screen, color, (int(self.x), int(self.y), self.w, 
self.h))
         pygame.draw.ellipse(screen, color, (int(self.x), int(self.y), self.w, 
self.h), 1)
 
+
     def update(self, width, height, walldeccel, floordeccel):
         # Update ball velocity
         self.hspeed = self.hspeed + self.haccel
@@ -166,5 +177,6 @@
         else:
             self.stopped_count = 0
 
+
     def rectangle(self):
         return (int(self.x), int(self.y), self.w, self.h)

Modified: branches/rel-1-7/freevo/src/plugins/screensaver/bouncing_freevo.py
==============================================================================
--- branches/rel-1-7/freevo/src/plugins/screensaver/bouncing_freevo.py  
(original)
+++ branches/rel-1-7/freevo/src/plugins/screensaver/bouncing_freevo.py  Fri Feb 
 1 14:56:03 2008
@@ -71,27 +71,31 @@
 
 
     def draw(self, screen):
-        black = (0,0,0)
-        dirty = []
-        # Clear the old image
-        screen.fill(black, (self.x,self.y, self.image_width, 
self.image_height))
-
-        # Move the image
-        self.x += self.x_speed
-        if self.x < 0:
-            self.x = 0
-            self.x_speed *= -1
-        if (self.x + self.image_width) > self.width:
-            self.x = self.width - self.image_width
-            self.x_speed *= -1
-
-        self.y += self.y_speed
-        if self.y < 0:
-            self.y = 0
-            self.y_speed *= -1
-
-        if (self.y + self.image_height) > self.height:
-            self.y = self.height - self.image_height
-            self.y_speed *= -1
-
-        screen.blit(self.image, (self.x, self.y))
+        osd.mutex.acquire()
+        try:
+            black = (0,0,0)
+            dirty = []
+            # Clear the old image
+            screen.fill(black, (self.x,self.y, self.image_width, 
self.image_height))
+
+            # Move the image
+            self.x += self.x_speed
+            if self.x < 0:
+                self.x = 0
+                self.x_speed *= -1
+            if (self.x + self.image_width) > self.width:
+                self.x = self.width - self.image_width
+                self.x_speed *= -1
+
+            self.y += self.y_speed
+            if self.y < 0:
+                self.y = 0
+                self.y_speed *= -1
+
+            if (self.y + self.image_height) > self.height:
+                self.y = self.height - self.image_height
+                self.y_speed *= -1
+
+            screen.blit(self.image, (self.x, self.y))
+        finally:
+            osd.mutex.release()

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to