瀏覽代碼

Update only when nedeed

Ander 11 年之前
父節點
當前提交
e62f710f51

+ 2 - 2
mopidy_touchscreen/library_screen.py

@@ -45,8 +45,8 @@ class LibraryScreen():
             self.current_directory = directory
             self.lookup_uri(directory)
 
-    def update(self, screen):
-        self.list_view.render(screen)
+    def update(self, screen, update_all):
+	self.list_view.render(screen)
 
     def touch_event(self, touch_event):
         clicked = self.list_view.touch_event(touch_event)

+ 2 - 0
mopidy_touchscreen/list_view.py

@@ -60,6 +60,8 @@ class ListView():
             i += 1
             z += 1
 
+
+
     def render(self, surface):
         self.screen_objects.render(surface)
 

+ 9 - 5
mopidy_touchscreen/main_screen.py

@@ -27,6 +27,7 @@ class MainScreen():
         self.cache = cache
         self.image = None
         self.artists = None
+	self.image_now_loaded = False
         self.touch_text_manager = ScreenObjectsManager()
         current_track = self.core.playback.current_track.get()
         if current_track is None:
@@ -34,11 +35,8 @@ class MainScreen():
         else:
             self.track_started(current_track)
 
-    def update(self, screen):
+    def update(self, screen, update_all):
         if self.track is not None:
-            if self.image is not None:
-                screen.blit(self.image, (
-                    self.base_size / 2, self.base_size + self.base_size / 2))
             self.touch_text_manager.get_touch_object(
                 "time_progress").set_value(
                 self.core.playback.time_position.get() / 1000)
@@ -47,7 +45,12 @@ class MainScreen():
                     self.core.playback.time_position.get() / 1000)) + "/" +
                 time.strftime('%M:%S', time.gmtime(
                     self.track.length / 1000)))
-        self.touch_text_manager.render(screen)
+	if update_all:
+            if self.image_now_loaded:
+		if self.image is not None:
+                    screen.blit(self.image, (self.base_size / 2, self.base_size + self.base_size / 2))
+		    self.image_now_loaded = False
+	self.touch_text_manager.render(screen)
         return screen
 
     def track_started(self, track):
@@ -212,6 +215,7 @@ class MainScreen():
                 self.get_cover_folder() +
                 self.get_image_file_name()).convert(),
             (size, size))
+	self.image_now_loaded = True
 
     def touch_event(self, event):
         if event.type == InputManager.click:

+ 2 - 2
mopidy_touchscreen/menu_screen.py

@@ -47,11 +47,11 @@ class MenuScreen():
                                   (0, self.base_size * 4), None)
         self.screen_objects.set_touch_object("ip", button)
 
-    def update(self, screen):
+    def update(self, screen, update_all):
         self.screen_objects.render(screen)
 
     def get_dirty_area(self):
-	self.screen_objects.get_dirty_area()
+	return self.screen_objects.get_dirty_area()
 
     def touch_event(self, event):
         if event.type == InputManager.click:

+ 2 - 2
mopidy_touchscreen/playlist_screen.py

@@ -16,8 +16,8 @@ class PlaylistScreen():
     def get_dirty_area(self):
 	return self.list_view.get_dirty_area()
 
-    def update(self, screen):
-        self.list_view.render(screen)
+    def update(self, screen, update_all):
+	self.list_view.render(screen)
 
     def playlists_loaded(self):
         self.playlists_strings = []

+ 4 - 1
mopidy_touchscreen/screen_manager.py

@@ -43,6 +43,7 @@ class ScreenManager():
         self.down_bar_objects = ScreenObjectsManager()
         self.selected_zone = self.top_bar_objects
 	self.dirty_area = []
+	self.screen_changed = True
 
         # Top bar
         self.top_bar = pygame.Surface((self.size[0], self.base_size),
@@ -135,11 +136,12 @@ class ScreenManager():
     def update(self):
         surface = pygame.Surface(self.size)
         surface.fill([200,200,200])
-        self.screens[self.current_screen].update(surface)
+        self.screens[self.current_screen].update(surface, self.screen_changed)
         surface.blit(self.top_bar, (0, 0))
         surface.blit(self.down_bar, (0, self.base_size * 7))
         self.top_bar_objects.render(surface)
         self.down_bar_objects.render(surface)
+	self.screen_changed = False
         return surface
 
     def track_started(self, track):
@@ -263,6 +265,7 @@ class ScreenManager():
             self.core.tracklist.single.get())
 
     def change_screen(self, new_screen):
+	self.screen_changed = True
         self.down_bar_objects.get_touch_object(
             "menu_" + str(self.current_screen)).set_active(False)
         self.current_screen = new_screen

+ 2 - 0
mopidy_touchscreen/screen_objects.py

@@ -38,6 +38,7 @@ class ScreenObjectsManager():
     def get_touch_object(self, key):
         return self.touch_objects[key]
 
+
     def render(self, surface):
         for key in self.text_objects:
             if self.text_objects[key].update():
@@ -369,6 +370,7 @@ class Progressbar(TouchObject):
         return x * self.max / self.size[0]
 
     def set_text(self, text):
+	self.dirty = True
         self.text.set_text(text, True)
 
 

+ 2 - 2
mopidy_touchscreen/tracklist.py

@@ -17,8 +17,8 @@ class Tracklist():
     def get_dirty_area(self):
 	return self.list_view.get_dirty_area()
 
-    def update(self, screen):
-        self.list_view.render(screen)
+    def update(self, screen, update_all):
+	self.list_view.render(screen)
 
     def tracklist_changed(self):
         self.update_list()