Update only when nedeed

This commit is contained in:
Ander
2014-11-14 12:00:06 +01:00
parent 00b50c5202
commit e62f710f51
8 changed files with 25 additions and 14 deletions

View File

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

View File

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

View File

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

View File

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

View File

@@ -16,7 +16,7 @@ class PlaylistScreen():
def get_dirty_area(self): def get_dirty_area(self):
return self.list_view.get_dirty_area() return self.list_view.get_dirty_area()
def update(self, screen): def update(self, screen, update_all):
self.list_view.render(screen) self.list_view.render(screen)
def playlists_loaded(self): def playlists_loaded(self):

View File

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

View File

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

View File

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